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