Регистрация данных к обмену

1. sidelev08 19.03.20 00:53 Сейчас в теме
Доброго времени суток, коллеги.
Вопрос следующий:
План обмена "Синхронизация данных через универсальный формат" имеет возможно регистрировать только ту НСИ, которая участвует в зарегистрированном документе к выгрузке.

Как выполнить аналогичную регистрацию НСИ программным путем.
Есть выборка ссылок на документы к регистрации (эти документы не будут передаваться в базу приемник путем стандартного обмена. К сожалению он не имеет возможности передавать их), и по этой выборке необходимо зарегистрировать всю НСИ, которая в них присутствует (ну конечно при условии, что план обмена имеет возможность регистрировать эти данные к обмену).

Есть ли какие то варианты, которые не требуют формирования отдельного запроса для получения выборки НСИ по каждому документу, и регистрации в цикле всей НСИ из них.

Платформа 8.3.16
конфигурация БП 3.0
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. muskul 19.03.20 04:01 Сейчас в теме
	План = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("6ab6d022-c245-4f40-8a46-5c41eeffe87f");
	
	  	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
		|	ХозрасчетныйОстатки.Субконто2 КАК Субконто2,
		|	ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
		|ИЗ
		|	РегистрБухгалтерии.Хозрасчетный.Остатки(&КонПериода, Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстатки
		|
		|УПОРЯДОЧИТЬ ПО
		|	Субконто1,
		|	Субконто2";
	
	Запрос.УстановитьПараметр("КонПериода", ТекущаяДата());
	Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Договор = ВыборкаДетальныеЗаписи.Субконто2;
		ПланыОбмена.ЗарегистрироватьИзменения(План.Ссылка, Договор.Ссылка);		
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
	КонецЦикла;
Показать

Вот пример регистрировал договора.

А в целом вы можете поставить к регистрации все документы начиная с даты. а затем в объектах убрать что не надо.
3. sidelev08 19.03.20 21:38 Сейчас в теме
(2) Да. Нечто подобное я уже делал, писал универсальную обработку регистрации данных для разных видов документов с индивидуальными отборами по каждому. И там я так столкнулся с тем, что нужно было регистрировать НСИ. Однако это было УТ 10.3 и там нет такого как синхронизации через универсальный формат "выгружать только используемую в документах". Поэтому я в цикле по всем видам документам к регистрации формировал запрос. и в результате получал все реквизиты если они имели ссылочный тип и были доступны к регистрации для выбранного узла.

В данном вопросе, я хотел узнать, есть ли какой то иной механизм, что упростит процесс регистрации.

Но все равно, большое спасибо за ваш ответ и отклик.
4. acanta 19.03.20 21:46 Сейчас в теме
Выгружать можно по сформированной выборке после выгрузки основных данных. Без регистрации нси, выгрузить по правилу.
5. sidelev08 19.03.20 23:11 Сейчас в теме
(4) без доработки правил обмена я не могу выгрузить выборку документов. Это выполняю программным путем. Но типовые правила обмена позволяют передавать нужную НСИ.
Поэтому и не хочется изобретать велосипед.
Создавать нси программным путем - точно нет,
а вот зарегистрировать - вполне адекватное решение.
осталось решить как, как делал раньше, формируя запросов выборку, либо найти проще путь)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот