Установка аналитики взаиморасчетов у контрагента. УНФ 3.0

Клиент попросил всем загруженным контрагентам (клиентам и поставщикам) проставить аналитику взаиморасчетов так:

Посмотрел структуру формы:

ВестиУчетОплатыПоНакладным, ВестиУчетОплатыПоЗаказам — это не реквизиты контрагента.

Поэтому код оказался таким:

Если ОбрабатываемыйОбъект.Поставщик Тогда
	ОбрабатываемыйОбъект.ВестиРасчетыПоДоговорам = истина; 
	ОбрабатываемыйОбъект.ВестиРасчетыПоДокументам = истина;
	ОбрабатываемыйОбъект.ВестиРасчетыПоЗаказам = ложь;
	ОбрабатываемыйОбъект.ВестиУчетОплатыПоСчетам = ложь;
КонецЕсли;

Если ОбрабатываемыйОбъект.Покупатель Тогда
	ОбрабатываемыйОбъект.ВестиРасчетыПоДоговорам = истина; 
	ОбрабатываемыйОбъект.ВестиРасчетыПоДокументам = истина;
	ОбрабатываемыйОбъект.ВестиРасчетыПоЗаказам = истина;
	ОбрабатываемыйОбъект.ВестиУчетОплатыПоСчетам = ложь;
КонецЕсли;

Если ОбрабатываемыйОбъект.Модифицированность() Тогда
	ОбрабатываемыйОбъект.Записать();                    
КонецЕсли;

Если контрагент и покупатель и поставщик, то последним отработает код по покупателю, поставив больше галочек.

Также дополнительно обработал контрагентов, у которых не заполнены необходимые реквизиты, таким образом подгрузились контрагенты-производители:

Если Не ЗначениеЗаполнено(ОбрабатываемыйОбъект.ВидКонтрагента) Тогда
	ОбрабатываемыйОбъект.ВидКонтрагента = Перечисления.ВидыКонтрагентов.ЮридическоеЛицо;
КонецЕсли;

Если Не ЗначениеЗаполнено(ОбрабатываемыйОбъект.СчетУчетаАвансовПокупателя) Тогда
	ОбрабатываемыйОбъект.СчетУчетаАвансовПокупателя = ПланыСчетов.Управленческий.РасчетыПоАвансамПолученным;
КонецЕсли;                                       
Если Не ЗначениеЗаполнено(ОбрабатываемыйОбъект.СчетУчетаАвансовПоставщику) Тогда
	ОбрабатываемыйОбъект.СчетУчетаАвансовПоставщику = ПланыСчетов.Управленческий.РасчетыПоАвансамВыданным;
КонецЕсли;                                       
Если Не ЗначениеЗаполнено(ОбрабатываемыйОбъект.СчетУчетаРасчетовСПокупателем) Тогда
	ОбрабатываемыйОбъект.СчетУчетаРасчетовСПокупателем = ПланыСчетов.Управленческий.РасчетыСПокупателями;
КонецЕсли;                                       
Если Не ЗначениеЗаполнено(ОбрабатываемыйОбъект.СчетУчетаРасчетовСПоставщиком) Тогда
	ОбрабатываемыйОбъект.СчетУчетаРасчетовСПоставщиком = ПланыСчетов.Управленческий.РасчетыСПоставщиками;
КонецЕсли;                   
                                
Если ОбрабатываемыйОбъект.Модифицированность() Тогда
	Сообщить(ОбрабатываемыйОбъект);     
	ОбрабатываемыйОбъект.Записать();                    
КонецЕсли;

Все это делал в групповой обработке. Работает медленно, т.к. извлекает каждый объект, а их много уже в базе.

В другой базе на разделителях пришлось выполнять это уже в консоли кода из «Полезные инструменты разработчика»:

З = Новый Запрос(
"ВЫБРАТЬ
|	Контрагенты.Ссылка КАК Ссылка
|ИЗ
|	Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|	НЕ Контрагенты.ЭтоГруппа
|	И НЕ Контрагенты.ПометкаУдаления");
Выборка = З.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
	
	ОбрабатываемыйОбъект = Выборка.Ссылка.ПолучитьОбъект();
	
	//По покупателям документы, заказы, счета
	Если ОбрабатываемыйОбъект.Покупатель Тогда
		ОбрабатываемыйОбъект.ВестиРасчетыПоДокументам = истина;
		ОбрабатываемыйОбъект.ВестиРасчетыПоЗаказам = истина;
		ОбрабатываемыйОбъект.ВестиУчетОплатыПоСчетам = истина;
		ОбрабатываемыйОбъект.ВестиРасчетыПоДоговорам = ложь; 
	КонецЕсли;
	
	//В т.ч. и если покупатель и поставщик и по остальным 
	//По всем поставщикам и прочим аналитика: по договорам, документам.
	Если ОбрабатываемыйОбъект.Покупатель И ОбрабатываемыйОбъект.Поставщик ИЛИ НЕ ОбрабатываемыйОбъект.Покупатель Тогда
		ОбрабатываемыйОбъект.ВестиРасчетыПоДоговорам = истина; 
		ОбрабатываемыйОбъект.ВестиРасчетыПоДокументам = истина;
		ОбрабатываемыйОбъект.ВестиРасчетыПоЗаказам = ложь;
		ОбрабатываемыйОбъект.ВестиУчетОплатыПоСчетам = ложь;
	КонецЕсли;
	
	Если ОбрабатываемыйОбъект.Модифицированность() Тогда
		ОбрабатываемыйОбъект.Записать();                    
	КонецЕсли; 
	
КонецЦикла;

Среда: УНФ 3.0.5.145. Объем: 0.5 час

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

1 комментарий

  1. 02.03.2024

    […] уже обработал всех контрагентов в консоли […]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *