Конвертация 2.1: БП 2.0 КОРП->УТ 11 не заполняет Аналитику учета номенклатуры

1. mikit 71 14.06.20 20:12 Сейчас в теме
Бьюсь который день, есть правила типовые БП 2.0 КОРП -> УТ 11, добавила в них выгрузку Поступление товаров и услуг и Реализацию. Документы переносятся, но к сожалению реквизит в табл части товары "АналитикаУчетаНоменклатуры" не заполняется. Пробовала убирать строку (//Объект.ОбменДанными.Загрузка = Истина; ) в глобальном обработчике "После загрузки данных" не помогает

Для Каждого СтрокаТаблицы Из ЗагруженныеОбъекты Цикл
	
	Если СтрокаТаблицы.Объект.ЭтоНовый() Тогда
		Продолжить;
	КонецЕсли;
	
	Объект = СтрокаТаблицы.Объект.Ссылка.ПолучитьОбъект();
	ПараметрыОбъекта = СтрокаТаблицы.Параметры;
	ИмяПКО = СтрокаТаблицы.ИмяПКО;
	
	ОбъектМодифицирован = Истина;
	
	Если Метаданные.Справочники.Содержит(Объект.МетаДанные()) Тогда
		Выполнить(Алгоритмы.ОбработкаСправочниковОтложенная);
	КонецЕсли;
	
	Если Метаданные.Документы.Содержит(Объект.МетаДанные()) Тогда
		Выполнить(Алгоритмы.ЗаполнениеДокументовОтложенное);
	КонецЕсли;
	
	Если ОбъектМодифицирован Тогда
		Объект.ОбменДанными.Отправитель = Параметры.УзелОбменаЗагрузкаДанныхСсылка;
		//Объект.ОбменДанными.Загрузка = Истина;      
		Объект.Записать();
	КонецЕсли;
	
КонецЦикла;
Показать
Прикрепленные файлы:
ПравилаОбменаДанными11062020.xml
Вознаграждение за ответ
Показать полностью
Найденные решения
2. ab_initio 95 15.06.20 06:05 Сейчас в теме +0.9 $m
Заполнение поля "АналитикаУчетаНоменклатуры" в УТ в документе вида "РеализацияТоваровУслуг" происходит только при его проведении.
Если Вы не проводите документы после загрузки, то этого и не произойдет.
В модуле объекта документа "РеализацияТоваровУслуг" есть экспортная процедура "ЗаполнитьАналитикиУчетаНоменклатуры()". Она вызывается из обработчика "ПередЗаписью" при условии, что ОбменДанными.Загрузка=Ложь и при условии, что режим записи - Проведение. При простой записи в режиме "Запись" - не вызывается.

Если Вам необходимо принудительно при простой записи документов "РеализацияТоваровУслуг" заполнить аналитику учета номенклатуры, то, возможно, поможет, если вставить в Ваших правилах ну, хоть сюда же в глобальный обработчик "ПослеЗагрузкиДанных" в этот же цикл проверку на тип и вид объекта и вызов, если это документ вида "РТиУ":
СтрокаТаблицы.Объект.ЗаполнитьАналитикиУчетаНоменклатуры()
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ab_initio 95 15.06.20 06:05 Сейчас в теме +0.9 $m
Заполнение поля "АналитикаУчетаНоменклатуры" в УТ в документе вида "РеализацияТоваровУслуг" происходит только при его проведении.
Если Вы не проводите документы после загрузки, то этого и не произойдет.
В модуле объекта документа "РеализацияТоваровУслуг" есть экспортная процедура "ЗаполнитьАналитикиУчетаНоменклатуры()". Она вызывается из обработчика "ПередЗаписью" при условии, что ОбменДанными.Загрузка=Ложь и при условии, что режим записи - Проведение. При простой записи в режиме "Запись" - не вызывается.

Если Вам необходимо принудительно при простой записи документов "РеализацияТоваровУслуг" заполнить аналитику учета номенклатуры, то, возможно, поможет, если вставить в Ваших правилах ну, хоть сюда же в глобальный обработчик "ПослеЗагрузкиДанных" в этот же цикл проверку на тип и вид объекта и вызов, если это документ вида "РТиУ":
СтрокаТаблицы.Объект.ЗаполнитьАналитикиУчетаНоменклатуры()
3. mikit 71 15.06.20 20:15 Сейчас в теме
(2) Cпасибо, вы совершенно правы. Дописала проведение в ПКО после загрузки Объект.Записать(РежимЗаписиДокумента.Проведение) - аналитика заполняется, но документ не проводится.
Пробую дописать Объект.Проведен=Истина; не срабатывает. Объект загружается непроведенным. (визуально он проведен, но движений нет и в консоли запросов реквизит Проведен = ложь)
4. ab_initio 95 16.06.20 06:40 Сейчас в теме
(3)
дописать Объект.Проведен=Истина;

Так делать не нужно. Лучше верните как было.
Сделать лучше так:
1. в глобальном обработчике "Перед загрузкой данных" вставьте новый параметр:
СписокДокументовПроводить=Новый Массив;
Параметры.Вставить("СписокДокументовПроводить",СписокДокументовПроводить);

2. в глобальном обработчике "После загрузки объекта" вставьте
Если ИмяТипаОбъекта="Документ" Тогда
	Если Объект.Проведен Тогда
		Параметры.СписокДокументовПроводить.Добавить(Объект.Ссылка);
	КонецЕсли;
КонецЕсли;

3. в глобальном обработчике "После загрузки данных" вставьте
Для Каждого ДокСсылка Из Параметры.СписокДокументовПроводить Цикл
	Если ЗначениеЗаполнено(ДокСсылка) Тогда
		ДокОбъект=ДокСсылка.ПолучитьОбъект();
        Попытка 
            ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
			//Сообщить("Документ проведен : "+ СокрЛП(ДокОбъект));
        Исключение
			//Сообщить("ДОКУМЕНТ НЕ ПРОВЕДЕН : "+ ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
			//Сообщить(" "+СокрЛП(ДокОбъект));
		КонецПопытки;
	КонецЕсли;
КонецЦикла;
Показать
5. mikit 71 25.06.20 18:29 Сейчас в теме
(4) Спасибо за развернутый ответ! В итоге у меня корректно отрабатывает след код:

В ПКО документа обработчик после загрузки:

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

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