Конвертация данных 2.1 УАС-БП Корп

1. rabideus 18.06.20 12:13 Сейчас в теме
Есть УАС и БП Корп, нужно перенести документы(приобретение,реализация и т.д.) из УАС в БП с изменением номенклатуры, в БП номенклатур всего 4 с разделением по НДС(Медикаменты 0%, Медикаменты 10% и т.д.) т.е. на выходе вместо большого списка номенклатур должно получаться от 1 до 4 строк.
Вопрос: какими способами можно реализовать данный функционал?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. andy_zhav 197 18.06.20 13:34 Сейчас в теме
(1) Я такое делал передачей в параметр в приемнике.
На 100% правильность не претендую, но работать должно

Если номенлкатура в табличной части то:
В Правиле конвертации объекта в обработчике перед выгрузкой делаем запрос к табличной части, группируем по ставке НДС и переопределяем входящие данные.
Например так:
Запрос  = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ТЧ.Номенклатура.СтавкаНДС КАК СтавкаНДС
|    СУММА(ТЧ.СУММА) КАК Сумма
|ИЗ 
|    Документ.ДокументИзУАС.Товары КАК ТЧ
|ГДЕ 
|   Документ.Ссылка = &Ссылка
|СГРУППИРОВАТЬ ПО
|  ТЧ.СтавкаНДС;
Запрос.УстановитьПараметр("ссылка", Источник.Ссылка);

ВходяшиеДанные = Новый Структура("ТЧ", ЗначениеВСтрокуВнутр(Запрос.Выполнить().Выгрузить());
Показать


Только вместо ссылки на перечисление лучше сделать значение процента.
Потом в обработчике после загрузки можно получить таблицу значений и заполнить табличную часть загруженного документа:

ТЗ = ЗначениеИзСтрокиВнутр(ПараметрыОбъекта["ТЧ"]);
Для Каждого Строка Из ТЗ Цикл
  НоваяСтрока = Объект.Товары.Добавить;
  НоваяСтрока.Сумма = Строка.Сумма;
  Если Строка.СтавкаНДС = 10 Тогда
     НоваяСтрока.Номенклатура = Номенклатура10;
  ИначеЕсли Строка.СтавкаНДС = 0 Тогда
    НоваяСтрока.Номеклатура = Номенклатура0;
....
КонецЦикла;
Показать


Знаю что криво, косо, но для моей задачи хватило.
3. rabideus 18.06.20 14:28 Сейчас в теме
4. rabideus 18.06.20 18:19 Сейчас в теме
(2)
Номенклатура10

Номенклатура10 и Номенклатура0 это что ?
5. andy_zhav 197 18.06.20 23:07 Сейчас в теме
(4)ссылка на нужную номенклатуру в базе-приемнике. Номенклатура10 я имел ввиду медикаменты НДС 10%. Можно прописать обычный код базы приемника для поиска ссылки. Например:
Номенклатура10=справочники.номенклатура.найтипореквизиту("ставка НДС", перечисления.ставкиндс.ндс10");
или запрос
6. rabideus 19.06.20 10:34 Сейчас в теме
(5)
оменклатура10=справочники.номенклатура.найтипореквизиту("ставка НДС", перечисления.ставкиндс.ндс10");

спасибо
7. rabideus 19.06.20 12:16 Сейчас в теме
(2)При выгрузке все нормально, через Сообщить структуру выводит,но при загрузке почему то ошибку дает:
Прикрепленные файлы:
8. andy_zhav 197 19.06.20 12:51 Сейчас в теме
(7) Точно. Упустил один момент из виду.
Нужно в правилах конвертации свойств добавить вручную новое свойство
Должна быть установлена галочка "Получить значение из входящих данных" и "Передавать данные в параметр"
Имя параметра должно называться ТЧ
Прикрепленные файлы:
9. andy_zhav 197 19.06.20 12:58 Сейчас в теме
(7) Еще увидел ошибку в коде у вас.
Я про реквизит ставка НДС когда писал - Т9 на телефоне разделила текст "СтавкаНДС" на 2 слова. в этом месте 1С выдаст ошибку на недопустимое значение параметра №1.
Не повторяйте мою ошибку ))
10. rabideus 19.06.20 13:03 Сейчас в теме
11. rabideus 19.06.20 14:33 Сейчас в теме
(9)Как только добавил параметр ТЧ так сразу перестал выгружать данные, странно...буду копаться
Прикрепленные файлы:
12. andy_zhav 197 19.06.20 14:59 Сейчас в теме
(11) Проверьте что нет ошибки в обработчике ПередВыгрузкой. Ключ структуры во входящих данных должен строго соответствовать имени параметра в ПКС
13. rabideus 19.06.20 15:04 Сейчас в теме
(12)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(ТЧ.Сумма) КАК Сумма,
| ТЧ.Номенклатура.СтавкаНДС КАК НоменклатураСтавкаНДС
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК ТЧ
|ГДЕ
| ТЧ.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ТЧ.Номенклатура.СтавкаНДС";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);

ВходяшиеДанные = Новый Структура("ТЧ", ЗначениеВСтрокуВнутр(Запрос.Выполнить().Выгрузить()));
Оставьте свое сообщение

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