Установка аналитики взаиморасчетов у контрагента. УНФ 3.0
Клиент попросил всем загруженным контрагентам (клиентам и поставщикам) проставить аналитику взаиморасчетов так:
Посмотрел структуру формы:
ВестиУчетОплатыПоНакладным, ВестиУчетОплатыПоЗаказам — это не реквизиты контрагента.
Поэтому код оказался таким:
Если ОбрабатываемыйОбъект.Поставщик Тогда ОбрабатываемыйОбъект.ВестиРасчетыПоДоговорам = истина; ОбрабатываемыйОбъект.ВестиРасчетыПоДокументам = истина; ОбрабатываемыйОбъект.ВестиРасчетыПоЗаказам = ложь; ОбрабатываемыйОбъект.ВестиУчетОплатыПоСчетам = ложь; КонецЕсли; Если ОбрабатываемыйОбъект.Покупатель Тогда ОбрабатываемыйОбъект.ВестиРасчетыПоДоговорам = истина; ОбрабатываемыйОбъект.ВестиРасчетыПоДокументам = истина; ОбрабатываемыйОбъект.ВестиРасчетыПоЗаказам = истина; ОбрабатываемыйОбъект.ВестиУчетОплатыПоСчетам = ложь; КонецЕсли; Если ОбрабатываемыйОбъект.Модифицированность() Тогда ОбрабатываемыйОбъект.Записать(); КонецЕсли;
Если контрагент и покупатель и поставщик, то последним отработает код по покупателю, поставив больше галочек.
Также дополнительно обработал контрагентов, у которых не заполнены необходимые реквизиты, таким образом подгрузились контрагенты-производители:
Если Не ЗначениеЗаполнено(ОбрабатываемыйОбъект.ВидКонтрагента) Тогда ОбрабатываемыйОбъект.ВидКонтрагента = Перечисления.ВидыКонтрагентов.ЮридическоеЛицо; КонецЕсли; Если Не ЗначениеЗаполнено(ОбрабатываемыйОбъект.СчетУчетаАвансовПокупателя) Тогда ОбрабатываемыйОбъект.СчетУчетаАвансовПокупателя = ПланыСчетов.Управленческий.РасчетыПоАвансамПолученным; КонецЕсли; Если Не ЗначениеЗаполнено(ОбрабатываемыйОбъект.СчетУчетаАвансовПоставщику) Тогда ОбрабатываемыйОбъект.СчетУчетаАвансовПоставщику = ПланыСчетов.Управленческий.РасчетыПоАвансамВыданным; КонецЕсли; Если Не ЗначениеЗаполнено(ОбрабатываемыйОбъект.СчетУчетаРасчетовСПокупателем) Тогда ОбрабатываемыйОбъект.СчетУчетаРасчетовСПокупателем = ПланыСчетов.Управленческий.РасчетыСПокупателями; КонецЕсли; Если Не ЗначениеЗаполнено(ОбрабатываемыйОбъект.СчетУчетаРасчетовСПоставщиком) Тогда ОбрабатываемыйОбъект.СчетУчетаРасчетовСПоставщиком = ПланыСчетов.Управленческий.РасчетыСПоставщиками; КонецЕсли; Если ОбрабатываемыйОбъект.Модифицированность() Тогда Сообщить(ОбрабатываемыйОбъект); ОбрабатываемыйОбъект.Записать(); КонецЕсли;
Все это делал в групповой обработке. Работает медленно, т.к. извлекает каждый объект, а их много уже в базе.
В другой базе на разделителях пришлось выполнять это уже в консоли кода из «Полезные инструменты разработчика»:
З = Новый Запрос( "ВЫБРАТЬ | Контрагенты.Ссылка КАК Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | НЕ Контрагенты.ЭтоГруппа | И НЕ Контрагенты.ПометкаУдаления"); Выборка = З.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ОбрабатываемыйОбъект = Выборка.Ссылка.ПолучитьОбъект(); //По покупателям документы, заказы, счета Если ОбрабатываемыйОбъект.Покупатель Тогда ОбрабатываемыйОбъект.ВестиРасчетыПоДокументам = истина; ОбрабатываемыйОбъект.ВестиРасчетыПоЗаказам = истина; ОбрабатываемыйОбъект.ВестиУчетОплатыПоСчетам = истина; ОбрабатываемыйОбъект.ВестиРасчетыПоДоговорам = ложь; КонецЕсли; //В т.ч. и если покупатель и поставщик и по остальным //По всем поставщикам и прочим аналитика: по договорам, документам. Если ОбрабатываемыйОбъект.Покупатель И ОбрабатываемыйОбъект.Поставщик ИЛИ НЕ ОбрабатываемыйОбъект.Покупатель Тогда ОбрабатываемыйОбъект.ВестиРасчетыПоДоговорам = истина; ОбрабатываемыйОбъект.ВестиРасчетыПоДокументам = истина; ОбрабатываемыйОбъект.ВестиРасчетыПоЗаказам = ложь; ОбрабатываемыйОбъект.ВестиУчетОплатыПоСчетам = ложь; КонецЕсли; Если ОбрабатываемыйОбъект.Модифицированность() Тогда ОбрабатываемыйОбъект.Записать(); КонецЕсли; КонецЦикла;
Среда: УНФ 3.0.5.145. Объем: 0.5 час
1 комментарий
[…] уже обработал всех контрагентов в консоли […]