Конвертация 2.1: БП 2.0 КОРП->УТ 11 не заполняет Аналитику учета номенклатуры
Бьюсь который день, есть правила типовые БП 2.0 КОРП -> УТ 11, добавила в них выгрузку Поступление товаров и услуг и Реализацию. Документы переносятся, но к сожалению реквизит в табл части товары "АналитикаУчетаНоменклатуры" не заполняется. Пробовала убирать строку (//Объект.ОбменДанными.Загрузка = Истина; ) в глобальном обработчике "После загрузки данных" не помогает
Для Каждого СтрокаТаблицы Из ЗагруженныеОбъекты Цикл
Если СтрокаТаблицы.Объект.ЭтоНовый() Тогда
Продолжить;
КонецЕсли;
Объект = СтрокаТаблицы.Объект.Ссылка.ПолучитьОбъект();
ПараметрыОбъекта = СтрокаТаблицы.Параметры;
ИмяПКО = СтрокаТаблицы.ИмяПКО;
ОбъектМодифицирован = Истина;
Если Метаданные.Справочники.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ОбработкаСправочниковОтложенная);
КонецЕсли;
Если Метаданные.Документы.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ЗаполнениеДокументовОтложенное);
КонецЕсли;
Если ОбъектМодифицирован Тогда
Объект.ОбменДанными.Отправитель = Параметры.УзелОбменаЗагрузкаДанныхСсылка;
//Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
КонецЕсли;
КонецЦикла;
ПоказатьПрикрепленные файлы:
ПравилаОбменаДанными11062020.xml
Найденные решения
Заполнение поля "АналитикаУчетаНоменклатуры" в УТ в документе вида "РеализацияТоваровУслуг" происходит только при его проведении.
Если Вы не проводите документы после загрузки, то этого и не произойдет.
В модуле объекта документа "РеализацияТоваровУслуг" есть экспортная процедура "ЗаполнитьАналитикиУчетаНоменклатуры()". Она вызывается из обработчика "ПередЗаписью" при условии, что ОбменДанными.Загрузка=Ложь и при условии, что режим записи - Проведение. При простой записи в режиме "Запись" - не вызывается.
Если Вам необходимо принудительно при простой записи документов "РеализацияТоваровУслуг" заполнить аналитику учета номенклатуры, то, возможно, поможет, если вставить в Ваших правилах ну, хоть сюда же в глобальный обработчик "ПослеЗагрузкиДанных" в этот же цикл проверку на тип и вид объекта и вызов, если это документ вида "РТиУ":
Если Вы не проводите документы после загрузки, то этого и не произойдет.
В модуле объекта документа "РеализацияТоваровУслуг" есть экспортная процедура "ЗаполнитьАналитикиУчетаНоменклатуры()". Она вызывается из обработчика "ПередЗаписью" при условии, что ОбменДанными.Загрузка=Ложь и при условии, что режим записи - Проведение. При простой записи в режиме "Запись" - не вызывается.
Если Вам необходимо принудительно при простой записи документов "РеализацияТоваровУслуг" заполнить аналитику учета номенклатуры, то, возможно, поможет, если вставить в Ваших правилах ну, хоть сюда же в глобальный обработчик "ПослеЗагрузкиДанных" в этот же цикл проверку на тип и вид объекта и вызов, если это документ вида "РТиУ":
СтрокаТаблицы.Объект.ЗаполнитьАналитикиУчетаНоменклатуры()
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Заполнение поля "АналитикаУчетаНоменклатуры" в УТ в документе вида "РеализацияТоваровУслуг" происходит только при его проведении.
Если Вы не проводите документы после загрузки, то этого и не произойдет.
В модуле объекта документа "РеализацияТоваровУслуг" есть экспортная процедура "ЗаполнитьАналитикиУчетаНоменклатуры()". Она вызывается из обработчика "ПередЗаписью" при условии, что ОбменДанными.Загрузка=Ложь и при условии, что режим записи - Проведение. При простой записи в режиме "Запись" - не вызывается.
Если Вам необходимо принудительно при простой записи документов "РеализацияТоваровУслуг" заполнить аналитику учета номенклатуры, то, возможно, поможет, если вставить в Ваших правилах ну, хоть сюда же в глобальный обработчик "ПослеЗагрузкиДанных" в этот же цикл проверку на тип и вид объекта и вызов, если это документ вида "РТиУ":
Если Вы не проводите документы после загрузки, то этого и не произойдет.
В модуле объекта документа "РеализацияТоваровУслуг" есть экспортная процедура "ЗаполнитьАналитикиУчетаНоменклатуры()". Она вызывается из обработчика "ПередЗаписью" при условии, что ОбменДанными.Загрузка=Ложь и при условии, что режим записи - Проведение. При простой записи в режиме "Запись" - не вызывается.
Если Вам необходимо принудительно при простой записи документов "РеализацияТоваровУслуг" заполнить аналитику учета номенклатуры, то, возможно, поможет, если вставить в Ваших правилах ну, хоть сюда же в глобальный обработчик "ПослеЗагрузкиДанных" в этот же цикл проверку на тип и вид объекта и вызов, если это документ вида "РТиУ":
СтрокаТаблицы.Объект.ЗаполнитьАналитикиУчетаНоменклатуры()
(2) Cпасибо, вы совершенно правы. Дописала проведение в ПКО после загрузки Объект.Записать(РежимЗаписиДокумента.Проведение) - аналитика заполняется, но документ не проводится.
Пробую дописать Объект.Проведен=Истина; не срабатывает. Объект загружается непроведенным. (визуально он проведен, но движений нет и в консоли запросов реквизит Проведен = ложь)
Пробую дописать Объект.Проведен=Истина; не срабатывает. Объект загружается непроведенным. (визуально он проведен, но движений нет и в консоли запросов реквизит Проведен = ложь)
(3)
Так делать не нужно. Лучше верните как было.
Сделать лучше так:
1. в глобальном обработчике "Перед загрузкой данных" вставьте новый параметр:
2. в глобальном обработчике "После загрузки объекта" вставьте
3. в глобальном обработчике "После загрузки данных" вставьте
дописать Объект.Проведен=Истина;
Так делать не нужно. Лучше верните как было.
Сделать лучше так:
1. в глобальном обработчике "Перед загрузкой данных" вставьте новый параметр:
СписокДокументовПроводить=Новый Массив;
Параметры.Вставить("СписокДокументовПроводить",СписокДокументовПроводить);
2. в глобальном обработчике "После загрузки объекта" вставьте
Если ИмяТипаОбъекта="Документ" Тогда
Если Объект.Проведен Тогда
Параметры.СписокДокументовПроводить.Добавить(Объект.Ссылка);
КонецЕсли;
КонецЕсли;
3. в глобальном обработчике "После загрузки данных" вставьте
Для Каждого ДокСсылка Из Параметры.СписокДокументовПроводить Цикл
Если ЗначениеЗаполнено(ДокСсылка) Тогда
ДокОбъект=ДокСсылка.ПолучитьОбъект();
Попытка
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
//Сообщить("Документ проведен : "+ СокрЛП(ДокОбъект));
Исключение
//Сообщить("ДОКУМЕНТ НЕ ПРОВЕДЕН : "+ ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
//Сообщить(" "+СокрЛП(ДокОбъект));
КонецПопытки;
КонецЕсли;
КонецЦикла;
Показать
(4) Спасибо за развернутый ответ! В итоге у меня корректно отрабатывает след код:
В ПКО документа обработчик после загрузки:
Если Объект.Проведен Тогда
Попытка
Объект.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
ОбъектМодифицирован=Ложь;
Исключение
Объект.Комментарий="Ошибка проведения";
Объект.Проведен=Ложь;
КонецПопытки;
КонецЕсли;
В ПКО документа обработчик после загрузки:
Если Объект.Проведен Тогда
Попытка
Объект.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
ОбъектМодифицирован=Ложь;
Исключение
Объект.Комментарий="Ошибка проведения";
Объект.Проведен=Ложь;
КонецПопытки;
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот