В начало

Проверка РС перед записью

 

            Нужно сделать проверку существования записи в регистре сведений перед добавлением новой записи.

 

Листинг. Модуль формы

&НаСервере

Функция ДанныеРегистраНеИзменились(Знач СсылкаНаБП)

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ

                        |          ИсторияОтветственныхБПСрезПоследних.Ответственный КАК Ответсвенный,

                        |          ИсторияОтветственныхБПСрезПоследних.ДатаПолученияСП КАК ДатаПолученияСП,

                        |          ИсторияОтветственныхБПСрезПоследних.ДатаПолученияИЛ КАК ДатаПолученияИЛ

                        |ИЗ

                        |          РегистрСведений.ИсторияОтветственныхБП.СрезПоследних(&Период, ) КАК ИсторияОтветственныхБПСрезПоследних

                        |ГДЕ

                        |          ИсторияОтветственныхБПСрезПоследних.Ответственный = &Ответственный

                        |          И ИсторияОтветственныхБПСрезПоследних.ДатаПолученияСП = &ДатаПолученияСП

                        |          И ИсторияОтветственныхБПСрезПоследних.ДатаПолученияИЛ = &ДатаПолученияИЛ";

           

            Запрос.УстановитьПараметр("Ответственный", СсылкаНаБП.Ответственный);

            Запрос.УстановитьПараметр("Период", ТекущаяДата());

            Запрос.УстановитьПараметр("ДатаПолученияСП", СсылкаНаБП.ДатаПолученияСП);

            Запрос.УстановитьПараметр("ДатаПолученияИЛ", СсылкаНаБП.ДатаПолученияИЛ);

            Результат = Запрос.Выполнить();                                       

           

            Выгрузка = Результат.Выгрузить();

            Выборка = Результат.Выбрать();

           

            Если НЕ Результат.Пустой() Тогда

            Возврат Истина;

            Иначе

                        Возврат Ложь;

            КонецЕсли;

           

КонецФункции

 

&НаСервере

Процедура ЗаписатьИсториюОтветственных(Знач СсылкаНаБП)

 

            Если ДанныеРегистраНеИзменились(СсылкаНаБП) Тогда

                        Возврат;

            КонецЕсли;

           

            МЗ = РегистрыСведений.ИсторияОтветственныхБП.СоздатьМенеджерЗаписи();

           

            МЗ.БизнесПроцесс = СсылкаНаБП;

            МЗ.Период = ТекущаяДата();

            МЗ.Ответственный = СсылкаНаБП.Ответственный;

            МЗ.ДатаПолученияИЛ = СсылкаНаБП.ДатаПолученияИЛ;

            МЗ.ДатаПолученияСП = СсылкаНаБП.ДатаПолученияСП;

           

            Попытка 

                        МЗ.Записать();          

            Исключение

            КонецПопытки;

           

КонецПроцедуры

 

Листинг. Использование проверки в обработчике «ПослеЗаписиНаСервере»

&НаСервере

Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

            ЗаписатьИсториюОтветственных(Объект.БизнесПроцесс);

КонецПроцедуры