УНФ. Как быстро создать процедуру обработки проведения
Перейти к навигации
Перейти к поиску
Вопрос:
Как быстро создать в УНФ процедуру обработки проведения документа и обработку удаления проведения при отмене?
Ответ:
Для быстрого создания процедуры проведения и отмены проведения в модуле объекта нужно вставить следующий шаблонный код:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ОбработкаПроведения(Отказ, Режим) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; // Инициализация дополнительных свойств для проведения документа. ПроведениеДокументовУНФ.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства); ДополнительныеСвойства.Вставить("Отказ", Ложь); // Инициализация данных документа. Документы.МойДокумент.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства); Если ДополнительныеСвойства.Отказ = Истина Тогда Отказ = Истина; КонецЕсли; Если Отказ Тогда Возврат; КонецЕсли; // Подготовка наборов записей. ПроведениеДокументовУНФ.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект); // Отражение в разделах учета. ТаблицыДляДвижений = ДополнительныеСвойства.ТаблицыДляДвижений; ПроведениеДокументовУНФ.ОтразитьДвижения("МояТаблицаДляДвижений", ТаблицыДляДвижений, Движения, Отказ); // Запись наборов записей. ПроведениеДокументовУНФ.ЗаписатьНаборыЗаписей(ЭтотОбъект); ДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц.Закрыть(); КонецПроцедуры // Процедура - обработчик события ОбработкаУдаленияПроведения объекта. // Процедура ОбработкаУдаленияПроведения(Отказ) // Инициализация дополнительных свойств для проведения документа ПроведениеДокументовУНФ.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства); // Подготовка наборов записей ПроведениеДокументовУНФ.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект); // Запись наборов записей ПроведениеДокументовУНФ.ЗаписатьНаборыЗаписей(ЭтотОбъект); КонецПроцедуры // ОбработкаУдаленияПроведения() #КонецОбласти #Иначе ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); #КонецЕсли
Заменить "МойДокумент" и "МояТаблицаДляДвижений" на собственные названия документов и регистров.
В модуле менеджера добавить следующий шаблон:
#Область ИнициализацияДанных // Инициализирует таблицы значений, содержащие данные табличных частей документа. // Таблицы значений сохраняет в свойствах структуры "ДополнительныеСвойства". // Процедура ИнициализироватьДанныеДокумента(ДокументСсылкаМойДокумент, СтруктураДополнительныеСвойства) Экспорт Запрос = Новый Запрос(ТекстЗапросаИнициализироватьДанныеДокумента()); Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Ссылка", ДокументСсылкаМойДокумент); СтруктураДополнительныеСвойства.ТаблицыДляДвижений.Вставить("ТаблицаМояТаблицаДляДвижений", Запрос.Выполнить().Выгрузить() ); КонецПроцедуры // ИнициализироватьДанныеДокумента() Функция ТекстЗапросаИнициализироватьДанныеДокумента() Возврат "ВЫБРАТЬ | МойДокумент.Ссылка КАК Регистратор, .... // список полей для формирования таблицы с последующим заполнением в регистр | МойДокумент.Дата КАК Период |ИЗ | Документ.МойДокумент КАК МойДокумент |ГДЕ | МойДокумент.Ссылка = &Ссылка"; КонецФункции #КонецОбласти