Кто знает как сделать? Борюсь уже 3-ий день.

1. user973528 12.10.18 17:30 Сейчас в теме
Написал правила конвертации для УТ - БП. Выгружаю документы реализации с помощью обработки "Выгрузка данных XML".
Но при выгрузке почему то Номенклатура которая является услугой сохраняется в табличной части "Товары", как это исправить? Подскажите пожалуйста.
Прикрепленные файлы:
Найденные решения
38. bmk74 234 19.10.18 14:19 Сейчас в теме
(37)
| И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)";


И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)";
Это зачем вы поставили ?
Уберите там не должно быть кавычек и точки с запятой
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. bmk74 234 12.10.18 17:45 Сейчас в теме
(1)
ыгружаю документы реализации с помощью обработки "Выгрузка данных XML"

А вообще такие вещи выбираются запросом, в "при выгрузке объекта" помещаются в ТЗ и в структуру ИсходящиеДанные
в правилах ставится на эти таб части получить из входящих данных галочка.
2. bmk74 234 12.10.18 17:39 Сейчас в теме
В УТ она в какой табличной части ?
3. user973528 12.10.18 17:42 Сейчас в теме
(2) Товары, даже услуги в Товарах
4. user973528 12.10.18 17:43 Сейчас в теме
(2) Может так попробовать в "После загрузки" реализации

А = 1;
Для Каждого Стр Из Объект.Товары Цикл

Если Стр.Номенклатура.ВидНоменклатуры.Услуга = Истина Тогда

Для Каждого Стр1 Из Объект.Услуги Цикл

Стр.Номенклатура = Стр1.Номенклатура;

КонецЦикла;
КонецЕсли;
А = А+1;
КонецЦикла;
6. bmk74 234 12.10.18 17:46 Сейчас в теме
(4) повторюсь
А вообще такие вещи выбираются запросом, в "при выгрузке объекта" помещаются в ТЗ и в структуру ИсходящиеДанные
в правилах ставится на эти таб части получить из входящих данных галочка.
7. user973528 12.10.18 17:46 Сейчас в теме
(6) А есть пример запроса? Запрос из реализации делать?
10. bmk74 234 12.10.18 17:57 Сейчас в теме
(7)Да в правиле ПКО Реализации Перед выгрузкой, вам надо просто сделать из одной таблицы 2, Товары и услуги, ну соответственно
У вас в Структуре ИсходящиеДанные будут ключи Товары и Услуги с соответствующими табличными частями...)
В ПКС на данные таб части поставить галку получить из входящих данных, внутри них убрать источник
Если найду пример то выложу
8. user973528 12.10.18 17:49 Сейчас в теме
(6) В типовых правилах УТ - БП 2.0 нашёл это

Запросы.ТоварыИзВидовЗапасовДляРеализацииТУПродажа.УстановитьПараметр("Ссылка", Источник.Ссылка);
РезультатыЗапроса = Запросы.ТоварыИзВидовЗапасовДляРеализацииТУПродажа.ВыполнитьПакет();

ТабЧастьТовары   = РезультатыЗапроса[4].Выгрузить();
СуммаТоваров     = ТабЧастьТовары.Итог("Сумма");
ТабЧастьТара     = РезультатыЗапроса[5].Выгрузить();
СуммаТары        = ТабЧастьТара.Итог("Сумма");
ТабЧастьУслуги   = РезультатыЗапроса[2].Выгрузить();
СуммаУслуг       = ТабЧастьУслуги.Итог("Сумма");
ТабЧастьАгУслуги = РезультатыЗапроса[6].Выгрузить();
СуммаАгУслуг     = ТабЧастьАгУслуги.Итог("Сумма");

СуммаНДСТоваров = 0;
СуммаНДСУслуг   = 0;
СуммаНДСАгУслуг = 0;

Если Не Источник.ЦенаВключаетНДС Тогда
	СуммаНДСТоваров = ТабЧастьТовары.Итог("СуммаНДС");
	СуммаНДСУслуг   = ТабЧастьУслуги.Итог("СуммаНДС");
	СуммаНДСАгУслуг = ТабЧастьАгУслуги.Итог("СуммаНДС");
КонецЕсли;

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

Если Источник.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности Тогда
	Отказ = ТабЧастьТара.Количество() = 0 И ТабЧастьТовары.Количество() = 0;
	ВходящиеДанные.Вставить("ВидОперации", "ОтгрузкаБезПереходаПраваСобственности");
	ВходящиеДанные.Вставить("СуммаДокумента", СуммаТоваров + СуммаНДСТоваров + СуммаТары);
Иначе
	ВходящиеДанные.Вставить("Услуги",          ТабЧастьУслуги);
	ВходящиеДанные.Вставить("АгентскиеУслуги", ТабЧастьАгУслуги);
	ВходящиеДанные.Вставить("СуммаДокумента",  СуммаТоваров + СуммаНДСТоваров + СуммаТары + СуммаУслуг + СуммаНДСУслуг + СуммаАгУслуг + СуммаНДСАгУслуг);
	ВходящиеДанные.Вставить("ВидОперации", "ПродажаКомиссия");
КонецЕсли;
Показать
12. bmk74 234 12.10.18 17:58 Сейчас в теме
(8)
оварыИзВидовЗапасовДляРеализацииТУПродажа.Устано


Да именно про это я и говорил, действуйте аналогично
9. herfis 499 12.10.18 17:56 Сейчас в теме
(4) Почти. Только не в "После загрузки", а в "Перед выгрузкой" ПКГС "Товары":
Если ОбъектКоллекции.Номенклатура.ВидНоменклатуры.Услуга Тогда
     Отказ = Истина;
КонецЕсли;

Для загрузки услуг в ТЧ "Услуги" можно прописать зеркальную фигню, чтобы товары исключались.
ЗЫ. Для оптимизации выгрузки (чтобы по каждой номенклатуре в БД не лезло) можно в "Перед обработкой" заменить "КоллекциюОбъектов" с родной ТЧ источника на результат запроса, который получит ТЧ и признак услуги за один запрос к БД.
11. bmk74 234 12.10.18 17:58 Сейчас в теме
14. herfis 499 12.10.18 17:59 Сейчас в теме
(11) Может я неправильно понял задачу?
Нужно ТЧ источника "Товары" разделить на "Товары" и "Услуги" в приемнике? Или другое?
13. bmk74 234 12.10.18 17:59 Сейчас в теме
(9) Этим вы только исключите номенклатуру из ТЧ, а в Услуги вы ее как потом добавлять будете
15. herfis 499 12.10.18 18:00 Сейчас в теме
(13) Так а в услугах аналогично - источник "Товары" из источника, только фильтруем товары, оставляя только услуги при выгрузке.
16. user973528 12.10.18 18:01 Сейчас в теме
(15)
Да,то и нужно сделать, раскидать по товарам и услугам
17. bmk74 234 12.10.18 18:02 Сейчас в теме
(15)Круто, такого я обычно не видел :), как вариант конечно можно...но все таки через получение из входящих данных как то правильней...мне кажется
18. user973528 12.10.18 18:06 Сейчас в теме
(15) А где найти это ПКГС табличной части Товары?
19. bmk74 234 12.10.18 18:08 Сейчас в теме
(18)
Правой кнопкой на ТЧ и Изменить
20. bmk74 234 12.10.18 18:08 Сейчас в теме
(19)
Только вам еще сопоставить надо будет ТЧ товары и ТЧ услуги в данном случае
22. user973528 12.10.18 18:12 Сейчас в теме
(20) Товары сопоставлены, но вот услуги никак не сопоставить потому что табличной части «Услуги» в УТ нет
23. bmk74 234 12.10.18 18:17 Сейчас в теме
(22)Скиньте ваши правила, мне быстрее в них будет все написать чем обьяснять :)
24. user973528 12.10.18 18:24 Сейчас в теме
21. bmk74 234 12.10.18 18:10 Сейчас в теме
(9)
который получит ТЧ и признак услуги за один запрос к БД.

Для оптимизации как раз перед выгрузкой и создаются две таблицы, помещаются во входящие данные, а на самих правилах по этим ТЧ ставиться получать из входящих данных
25. user973528 12.10.18 19:06 Сейчас в теме
(21)

Вот я вам закинул
Прикрепленные файлы:
ПравилаОбмена(Правка).xml
29. bmk74 234 15.10.18 12:26 Сейчас в теме
(25)Держите, возможно запрос придется подправить, так как я не уверен что услуги у вас в базе так определяются
Прикрепленные файлы:
ПравилаОбмена(С Услугами).xml
30. user973528 15.10.18 14:04 Сейчас в теме
(29)
ите, возможно запрос придется подправить, так как я не уверен что услуги у вас в базе так определяются


Хорошо спасибо большое, сегодня попробую, напишу как результат
31. user973528 19.10.18 09:53 Сейчас в теме
(29) Валится на ошибке "Поле не найдено, Док.Номенклатура.ВидНоменклатуры.Услуга"
32. user973528 19.10.18 10:17 Сейчас в теме
(29)
"ВЫБРАТЬ
|	РеализацияТоваровУслугТовары.Номенклатура,
|	РеализацияТоваровУслугТовары.Количество,
|	РеализацияТоваровУслугТовары.Цена,
|	РеализацияТоваровУслугТовары.Сумма,
|	РеализацияТоваровУслугТовары.СуммаНДС
|ИЗ
|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
|	РеализацияТоваровУслугТовары.Ссылка = &Ссылка";
Показать


Ругается на "| И НЕ Док.Номенклатура.ВидНоменклатуры.Услуга"
Как можно сделать?
33. user973528 19.10.18 11:46 Сейчас в теме
(29) Может как то через наименование сделать?
34. bmk74 234 19.10.18 13:32 Сейчас в теме
(33)Я же вам написал, что запрос возможно подправить придется, у вас как делится номенклатура на услуги и товары ?
35. bmk74 234 19.10.18 13:54 Сейчас в теме
(33)Если УТ последние то там можно через типНоменклатуры
ГДЕ Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
36. user973528 19.10.18 14:09 Сейчас в теме
(35)
(33)Если УТ последние то там можно через типНоменклатуры


Сейчас попробую
37. user973528 19.10.18 14:13 Сейчас в теме
(35)
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML1.МодульОбъекта(3086)}: Ошибка в обработчике события ПередВыгрузкойОбъекта
ПКО = РеализацияТоваровУслуг (Документ: Реализация товаров и услуг)
Объект = Реализация товаров и услуг м300-000253 от 31.03.2018 23:59:59 (Реализация товаров и услуг)
Обработчик = ПередВыгрузкойОбъекта
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(13,1)}: Ожидается последовательность операторов
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML1.МодульОбъекта(1735)
КодСообщения = 41

Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| Док.Номенклатура,
| Док.Количество,
| Док.СтавкаНДС,
| Док.Сумма,
| Док.СуммаНДС,
| Док.Цена
| ИЗ Документ.РеализацияТоваровУслуг.Товары  КАК Док
| ГДЕ Док.Ссылка = &Ссылка
| И Док.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)";
| ;
|//////////////////////////////////////////////////////
|ВЫБРАТЬ
| Док.Номенклатура,
| Док.Номенклатура.Наименование КАК Содержание,
| Док.Количество,
| Док.СтавкаНДС,
| Док.Сумма,
| Док.СуммаНДС,
| Док.Цена
| ИЗ Документ.РеализацияТоваровУслуг.Товары  КАК Док
| ГДЕ Док.Ссылка = &Ссылка
| И Док.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)";
Запрос.УстановитьПараметр("Ссылка",Источник.Ссылка);
ВходящиеДанные = Новый Структура;
МассивВыборок = Запрос.ВыполнитьПакет();
ВходящиеДанные.Вставить("Товары",МассивВыборок[0].Выгрузить());
ВходящиеДанные.Вставить("Услуги",МассивВыборок[1].Выгрузить());
Показать
38. bmk74 234 19.10.18 14:19 Сейчас в теме
(37)
| И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)";


И РеализацияТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)";
Это зачем вы поставили ?
Уберите там не должно быть кавычек и точки с запятой
39. user973528 19.10.18 14:33 Сейчас в теме
(38) Спасибо большое вам, очень выручили. Все заработало, только есть одна загвоздка что в услугах в бухгалтерии уже счет доходов не заполняется, можно ли как то его заполнить?
40. bmk74 234 19.10.18 14:43 Сейчас в теме
(39)Если бухия стандартная и настроены счета то все просто
В Правиле ПослеЗагрузки вставте
Отбор = Новый Структура;
Отбор.Вставить("НеЗаполненныеРеквизиты", Истина);

СчетаУчетаВДокументах.Заполнить(Объект, Отбор);
user973528; +1 Ответить
41. user973528 19.10.18 14:46 Сейчас в теме
(40)
тбор = Новый Структура;
Отбор.Вставить("НеЗаполненныеРеквизиты", Истина);

СчетаУчетаВДокументах.Заполнить(Объект, Отбор);


Хорошо, спасибо большое))
42. user973528 19.10.18 14:47 Сейчас в теме
(40) Счет фактуры так же наверно можно будет вытащить по запросу и входящих данных?
43. bmk74 234 19.10.18 15:12 Сейчас в теме
(42)Для СФ надо правило просто отдельное написать..., там в принципе все стандарто
27. user973528 13.10.18 08:54 Сейчас в теме
(9) Нужно ли сопоставлять табличные части "Услуги" в правилах?
26. user973528 12.10.18 19:36 Сейчас в теме
Вопрос еще актуален, справиться не могу
28. Климов Сергей 15.10.18 11:12 Сейчас в теме
(26) Ещё один вариант:
1. В ПКГС группы "Товары", в обработчике "Перед обработкой" создаём ТЗ КоллекцияОбъектов со структурой, идентичной структуре ТЧ "Товары".
2. В цикле перебираем ТЧ Товары, если в строке товар - добавляем в ТЗ.
3. В ПКГС группы "Услуги", в обработчике "Перед обработкой" создаём ТЗ КоллекцияОбъектов со структурой, идентичной структуре ТЧ "Услуги".
4. В цикле перебираем ТЧ Товары, если в строке услуга - добавляем в ТЗ.
Оставьте свое сообщение

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