Как правильно написать обработчик ПередЗагрузкой в КонвертацииДанных
Есть типовая загрузка из торговли 77 в бухгалтерию 3.0 Все отлично, кроме одной проблемы
При загрузке документа Реализация товаров, работ, услуг (у меня только товары) он проводится уже в бухгалтерии 3.0 и соответственно суммы списанной себестоимости различаются ( в торговле 77 списываются партии по методу ФИФО), в бухгалтерии 3.0 списываются остатки по скользящей средней.
Соответственно хочу поменять типовые правила, чтобы при обмене сразу заполнялся реквизит себестоимость в табличной части Товары.
В семерке алгоритм выборки себестоимости следующий
рег = СоздатьОбъект("Регистр.ПартииНаличие");
Рег.ВыбратьДвиженияДокумента(Док.ТекущийДокумент());
Пока рег.получитьДвижение() =1 Цикл
//Чтобы не сворачивать будем сразу искать номенклатуру
Стр="";
Если ТаблицаСебестоимости.НайтиЗначение(Рег.Номенклатура,Стр,"Номенклатура")=0 Тогда
ТаблицаСебестоимости.НоваяСтрока();
ТаблицаСебестоимости.Номенклатура = Рег.Номенклатура;
ТаблицаСебестоимости.Продажи=Рег.ПродСтоимость;
ТаблицаСебестоимости.Количество = Рег.Количество;
ТаблицаСебестоимости.СуммаБух = Рег.СуммаРуб;
ТаблицаСебестоимости.СуммаБезНДС = Рег.СуммаБезНДС;
Иначе
ТаблицаСебестоимости.ПолучитьСтрокуПоНомеру(Стр);
ТаблицаСебестоимости.Продажи=ТаблицаСебестоимости.Продажи+Рег.ПродСтоимость;
ТаблицаСебестоимости.Количество = ТаблицаСебестоимости.Количество+Рег.Количество;
ТаблицаСебестоимости.СуммаБух = ТаблицаСебестоимости.СуммаБух+Рег.СуммаРуб;
ТаблицаСебестоимости.СуммаБезНДС = ТаблицаСебестоимости.СуммаБезНДС + Рег.СуммаБезНДС;
КонецЕсли;
КонецЦикла;
Показать
а что написать в обработчике ПередЗагрузкой?
При загрузке документа Реализация товаров, работ, услуг (у меня только товары) он проводится уже в бухгалтерии 3.0 и соответственно суммы списанной себестоимости различаются ( в торговле 77 списываются партии по методу ФИФО), в бухгалтерии 3.0 списываются остатки по скользящей средней.
Соответственно хочу поменять типовые правила, чтобы при обмене сразу заполнялся реквизит себестоимость в табличной части Товары.
В семерке алгоритм выборки себестоимости следующий
рег = СоздатьОбъект("Регистр.ПартииНаличие");
Рег.ВыбратьДвиженияДокумента(Док.ТекущийДокумент());
Пока рег.получитьДвижение() =1 Цикл
//Чтобы не сворачивать будем сразу искать номенклатуру
Стр="";
Если ТаблицаСебестоимости.НайтиЗначение(Рег.Номенклатура,Стр,"Номенклатура")=0 Тогда
ТаблицаСебестоимости.НоваяСтрока();
ТаблицаСебестоимости.Номенклатура = Рег.Номенклатура;
ТаблицаСебестоимости.Продажи=Рег.ПродСтоимость;
ТаблицаСебестоимости.Количество = Рег.Количество;
ТаблицаСебестоимости.СуммаБух = Рег.СуммаРуб;
ТаблицаСебестоимости.СуммаБезНДС = Рег.СуммаБезНДС;
Иначе
ТаблицаСебестоимости.ПолучитьСтрокуПоНомеру(Стр);
ТаблицаСебестоимости.Продажи=ТаблицаСебестоимости.Продажи+Рег.ПродСтоимость;
ТаблицаСебестоимости.Количество = ТаблицаСебестоимости.Количество+Рег.Количество;
ТаблицаСебестоимости.СуммаБух = ТаблицаСебестоимости.СуммаБух+Рег.СуммаРуб;
ТаблицаСебестоимости.СуммаБезНДС = ТаблицаСебестоимости.СуммаБезНДС + Рег.СуммаБезНДС;
КонецЕсли;
КонецЦикла;
а что написать в обработчике ПередЗагрузкой?
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Да. В 7.7 наверно, по другому и быть не может. Там нет ссылки на табличную часть документа.
Вот написал обработчик
Но при выгрузке из Торговли 7.7 пишет следующее
ПКС_ПередВыгрузкой_РеализацияТоваровУслуг_Товары_Себестоимос ть_Реквизит34<<?>>(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, НомерПКС, НомерПКО, ОбъектКоллекции, Значение, ТипПриемника, ИмяПКО, ИмяПКОВидСубконто, Пусто, Выражение, НеЗамещать, УзелКоллекцииСвойств)
Функция не обнаружена (ПКС_ПередВыгрузкой_РеализацияТоваровУслуг_Товары_Себестоимос ть_Реквизит34)
Вот написал обработчик
Но при выгрузке из Торговли 7.7 пишет следующее
ПКС_ПередВыгрузкой_РеализацияТоваровУслуг_Товары_Себестоимос
Функция не обнаружена (ПКС_ПередВыгрузкой_РеализацияТоваровУслуг_Товары_Себестоимос
Вот на самом деле движения по партиям выбираются в правиле конвертации группы свойств
ТабличнаяЧасть -> Товары
Пробую заполнять себестоимость там:
Исправил обработчик ПередОбработкой
Но при выгрузке из 7.7 ругается :
Выгрузка объекта выборки: Реализация 0000000510 (02.07.19) (Документ)
Конвертация объекта или получение ссылки: Реализация 0000000510 (02.07.19) (Документ)
Конвертация объекта или получение ссылки: Пакет с замком 20*30см (уп=100шт) (Справочник)
Конвертация объекта или получение ссылки: 05. Пакеты с замком (Справочник)
Конвертация объекта или получение ссылки: 20% (Перечисление)
Конвертация объекта или получение ссылки: упак (Справочник)
Конвертация объекта или получение ссылки: 20% (Перечисление)
Ошибка получения свойства из объекта коллекции. Свойство: Себестоимость
....
ТабличнаяЧасть -> Товары
Пробую заполнять себестоимость там:
Исправил обработчик ПередОбработкой
ТабДокумента = СоздатьОбъект("ТаблицаЗначений");
ТабПартий = СоздатьОбъект("ТаблицаЗначений");
КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений");
Источник.ВыгрузитьТабличнуюЧасть(ТабДокумента);
ТабДокумента.Выгрузить(КоллекцияОбъектов);
КоллекцияОбъектов.УдалитьСтроки();
КоллекцияОбъектов.НоваяКолонка("НомерГТД");
КоллекцияОбъектов.НоваяКолонка("СтранаПроисхождения");
КоллекцияОбъектов.НоваяКолонка("СтатусПартии");
КоллекицяОбъектов.НоваяКолонка("Себестоимость","Число",15,2);
ТабПартий.НоваяКолонка("Номенклатура");
ТабПартий.НоваяКолонка("Количество");
ТабПартий.НоваяКолонка("НомерСтр");
ТабПартий.НоваяКолонка("ГТД");
ТабПартий.НоваяКолонка("СтранаПроисхождения");
ТабПартий.НоваяКолонка("СтатусПартии");
ТабПартий.НоваяКолонка("Себестоимость","Число",15,2);
ТабДокумента.НоваяКолонка("Себестоимость","Число",15,2);
Рег = СоздатьОбъект("Регистр.ПартииНаличие");
Рег.ВыбратьДвиженияДокумента(Источник);
Пока Рег.ПолучитьДвижение() = 1 Цикл
ТабДокумента.ПолучитьСтрокуПоНомеру(Рег.НомерСтроки());
Если (Рег.Количество > 0) И (ТабДокумента.Количество > 0) Тогда
КоллекцияОбъектов.НоваяСтрока();
КоллекцияОбъектов.Номенклатура = ТабДокумента.Номенклатура;
КоллекцияОбъектов.Количество = Мин(ТабДокумента.Количество, Рег.Количество);
КоллекцияОбъектов.Единица = ТабДокумента.Единица;
КоллекцияОбъектов.Коэффициент = ТабДокумента.Коэффициент;
КоллекцияОбъектов.Цена = ТабДокумента.Цена;
КоллекцияОбъектов.Сумма = ?(ТабДокумента.Количество = КоллекцияОбъектов.Количество, ТабДокумента.Сумма,
ТабДокумента.Цена * КоллекцияОбъектов.Количество);
КоллекцияОбъектов.СтавкаНДС = ТабДокумента.СтавкаНДС;
КоллекцияОбъектов.СуммаНДС = ?(ТабДокумента.Количество = КоллекцияОбъектов.Количество, ТабДокумента.СуммаНДС,
?(Источник.СуммаВклНДС=1, КоллекцияОбъектов.Сумма * глВыделяемыйНДС(КоллекцияОбъектов.СтавкаНДС),
КоллекцияОбъектов.Сумма * глНачисляемыйНДС(КоллекцияОбъектов.СтавкаНДС)));
КоллекцияОбъектов.НомерГТД = Рег.Партия.ГТД;
КоллекцияОбъектов.СтранаПроисхождения = Рег.Партия.СтранаПроисхождения;
КоллекцияОбъектов.СтатусПартии = Рег.СтатусПартии;
КоллекцияОбъектов.Себестоимость = Рег.СуммаБезНДС;
ТабДокумента.Количество = ТабДокумента.Количество - КоллекцияОбъектов.Количество;
ТабДокумента.Сумма = ТабДокумента.Сумма - КоллекцияОбъектов.Сумма;
ТабДокумента.СуммаНДС = ТабДокумента.СуммаНДС - КоллекцияОбъектов.СуммаНДС;
ТабДокумента.Себестоимость = ТабДокумента.Себестоимость - КоллекцияОбъектов.Себестоимость;
КонецЕсли;
КонецЦикла;
// Даже, если движения по партиям по каким-то причинам отсутствуют все равно выгружаем остатки количства по строкам
ТабДокумента.ВыбратьСтроки();
Пока ТабДокумента.ПолучитьСтроку() = 1 Цикл
Если (ТабДокумента.Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
ИЛИ (ТабДокумента.Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда
Продолжить;
КонецЕсли;
Если ТабДокумента.Количество > 0 Тогда
КоллекцияОбъектов.НоваяСтрока();
КоллекцияОбъектов.Номенклатура = ТабДокумента.Номенклатура;
КоллекцияОбъектов.Количество = ТабДокумента.Количество;
КоллекцияОбъектов.Единица = ТабДокумента.Единица;
КоллекцияОбъектов.Коэффициент = ТабДокумента.Коэффициент;
КоллекцияОбъектов.Цена = ТабДокумента.Цена;
КоллекцияОбъектов.Сумма = ТабДокумента.Сумма;
КоллекцияОбъектов.СтавкаНДС = ТабДокумента.СтавкаНДС;
КоллекцияОбъектов.СуммаНДС = ТабДокумента.СуммаНДС;
КоллекцияОбъектов.НомерГТД = "";
КоллекцияОбъектов.СтранаПроисхождения = "";
КоллекцияОбъектов.СтатусПартии = Перечисление.СтатусыПартии.Т_Купленный;
КоллекцияОбъектов.Себестоимость = ТабДокумента.Себестоимость;
КонецЕсли;
КонецЦикла;
КоллекцияОбъектов.Свернуть("Номенклатура, Единица, Коэффициент, Цена, СтавкаНДС, НомерГТД, СтранаПроисхождения, СтатусПартии",
"Количество, Сумма, СуммаНДС, Себестоимость");
ПоказатьНо при выгрузке из 7.7 ругается :
Выгрузка объекта выборки: Реализация 0000000510 (02.07.19) (Документ)
Конвертация объекта или получение ссылки: Реализация 0000000510 (02.07.19) (Документ)
Конвертация объекта или получение ссылки: Пакет с замком 20*30см (уп=100шт) (Справочник)
Конвертация объекта или получение ссылки: 05. Пакеты с замком (Справочник)
Конвертация объекта или получение ссылки: 20% (Перечисление)
Конвертация объекта или получение ссылки: упак (Справочник)
Конвертация объекта или получение ссылки: 20% (Перечисление)
Ошибка получения свойства из объекта коллекции. Свойство: Себестоимость
....
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот