Есть УАС и БП Корп, нужно перенести документы(приобретение,реализация и т.д.) из УАС в БП с изменением номенклатуры, в БП номенклатур всего 4 с разделением по НДС(Медикаменты 0%, Медикаменты 10% и т.д.) т.е. на выходе вместо большого списка номенклатур должно получаться от 1 до 4 строк.
Вопрос: какими способами можно реализовать данный функционал?
Вопрос: какими способами можно реализовать данный функционал?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Я такое делал передачей в параметр в приемнике.
На 100% правильность не претендую, но работать должно
Если номенлкатура в табличной части то:
В Правиле конвертации объекта в обработчике перед выгрузкой делаем запрос к табличной части, группируем по ставке НДС и переопределяем входящие данные.
Например так:
Только вместо ссылки на перечисление лучше сделать значение процента.
Потом в обработчике после загрузки можно получить таблицу значений и заполнить табличную часть загруженного документа:
Знаю что криво, косо, но для моей задачи хватило.
На 100% правильность не претендую, но работать должно
Если номенлкатура в табличной части то:
В Правиле конвертации объекта в обработчике перед выгрузкой делаем запрос к табличной части, группируем по ставке НДС и переопределяем входящие данные.
Например так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЧ.Номенклатура.СтавкаНДС КАК СтавкаНДС
| СУММА(ТЧ.СУММА) КАК Сумма
|ИЗ
| Документ.ДокументИзУАС.Товары КАК ТЧ
|ГДЕ
| Документ.Ссылка = &Ссылка
|СГРУППИРОВАТЬ ПО
| ТЧ.СтавкаНДС;
Запрос.УстановитьПараметр("ссылка", Источник.Ссылка);
ВходяшиеДанные = Новый Структура("ТЧ", ЗначениеВСтрокуВнутр(Запрос.Выполнить().Выгрузить());
ПоказатьТолько вместо ссылки на перечисление лучше сделать значение процента.
Потом в обработчике после загрузки можно получить таблицу значений и заполнить табличную часть загруженного документа:
ТЗ = ЗначениеИзСтрокиВнутр(ПараметрыОбъекта["ТЧ"]);
Для Каждого Строка Из ТЗ Цикл
НоваяСтрока = Объект.Товары.Добавить;
НоваяСтрока.Сумма = Строка.Сумма;
Если Строка.СтавкаНДС = 10 Тогда
НоваяСтрока.Номенклатура = Номенклатура10;
ИначеЕсли Строка.СтавкаНДС = 0 Тогда
НоваяСтрока.Номеклатура = Номенклатура0;
....
КонецЦикла;
ПоказатьЗнаю что криво, косо, но для моей задачи хватило.
(4)ссылка на нужную номенклатуру в базе-приемнике. Номенклатура10 я имел ввиду медикаменты НДС 10%. Можно прописать обычный код базы приемника для поиска ссылки. Например:
или запрос
Номенклатура10=справочники.номенклатура.найтипореквизиту("ставка НДС", перечисления.ставкиндс.ндс10");
(7) Точно. Упустил один момент из виду.
Нужно в правилах конвертации свойств добавить вручную новое свойство
Должна быть установлена галочка "Получить значение из входящих данных" и "Передавать данные в параметр"
Имя параметра должно называться ТЧ
Нужно в правилах конвертации свойств добавить вручную новое свойство
Должна быть установлена галочка "Получить значение из входящих данных" и "Передавать данные в параметр"
Имя параметра должно называться ТЧ
Прикрепленные файлы:
(12)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(ТЧ.Сумма) КАК Сумма,
| ТЧ.Номенклатура.СтавкаНДС КАК НоменклатураСтавкаНДС
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК ТЧ
|ГДЕ
| ТЧ.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ТЧ.Номенклатура.СтавкаНДС";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
ВходяшиеДанные = Новый Структура("ТЧ", ЗначениеВСтрокуВнутр(Запрос.Выполнить().Выгрузить()));
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(ТЧ.Сумма) КАК Сумма,
| ТЧ.Номенклатура.СтавкаНДС КАК НоменклатураСтавкаНДС
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК ТЧ
|ГДЕ
| ТЧ.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ТЧ.Номенклатура.СтавкаНДС";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
ВходяшиеДанные = Новый Структура("ТЧ", ЗначениеВСтрокуВнутр(Запрос.Выполнить().Выгрузить()));
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот