|
конвертация рт-ут (из одного документа в несколько документов) | ☑ | ||
---|---|---|---|---|
0
prtx
08.12.18
✎
19:15
|
добрый день. что-то ничего путевого в инете не нашел.
ситуация следующая. есть розница, в ней есть документ - отчет о розничных продажах, и в этом документе фиксируются проданные товары(таблица - товары) и возвращенные товары(таблица - возвращенные товары), типовой обмен работает хорошо НО возврат он не переносит в управление торговлей. хочу сделать следующее: чтобы при обмене в ут создавалось два документа отчет о розничных продажах. в одном мы фиксируем то что продали а в другом то, что нам вернули. соответственно в первый документ мы получаем данные из источника из таблицы - товары, а во второй документ получаем данные из источника из таблицы - возвращенные товары. в конвертации я создал новое пко, в котором собственно(событие "перед выгрузкой") через запрос и получаю данные из таблицы - возвращенные товары. создал пвд для этого пко, но второй документ так и не создается. может надо где-то еще настройки поставить. пример пко: Номер = СтрЗаменить(Источник.Номер, "-", "В"); ВходящиеДанные.Вставить("Номер", Номер); ВходящиеДанные.Вставить("Комментарий", "Это документ возврата."); Запрос = Новый Запрос(); Запрос.Текст = " |ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Характеристика КАК Характеристика, | Товары.Количество КАК Количество, | Товары.КоличествоУпаковок КАК КоличествоУпаковок, | Товары.Упаковка КАК Упаковка, | Товары.СтавкаНДС КАК СтавкаНДС, | Товары.Цена КАК Цена, | Товары.Сумма КАК Сумма, | Товары.СуммаНДС КАК СуммаНДС, | Товары.СуммаАкцизногоНалога КАК СуммаАкцизногоНалога, | Товары.ПодакцизныеТоварыДляКоммерческогоИспользования КАК ПодакцизныеТоварыДляКоммерческогоИспользования, | Товары.СтатусУказанияСерий КАК СтатусУказанияСерий, | Товары.ДисконтнаяКарта КАК ДисконтнаяКарта, | Товары.Продавец КАК Продавец |ИЗ | Документ.ОтчетОРозничныхПродажах.ВозвращенныеТовары КАК Товары |ЛЕВОЕ СОЕДИНЕНИЕ | Справочник.Номенклатура КАК СпрНоменклатура |ПО | СпрНоменклатура.Ссылка = Товары.Номенклатура |ГДЕ | Товары.Ссылка = &Ссылка | И СпрНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)"; Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка); ТаблицаТовары = Запрос.Выполнить().Выгрузить(); ВходящиеДанные.Вставить("Товары", ТаблицаТовары); СуммаДокумента = ОбработкаТабличнойЧастиТоварыКлиентСервер.ПолучитьСуммуДокумента(ТаблицаТовары, Источник.ЦенаВключаетНДС); ВходящиеДанные.Вставить("СуммаДокумента", СуммаДокумента); |
|||
1
prtx
08.12.18
✎
19:17
|
(0) обмен настраиваю между розница и управление торговлей
|
|||
2
Sereja
08.12.18
✎
22:16
|
(1) Поиск документа у тебя как осуществляется в приемнике?
|
|||
3
RomanYS
08.12.18
✎
22:27
|
почитай описание обработчиков. ВходящиеДанные - это то, что ПКО может получить от ПВД. Менять их перед выгрузкой ПКО бессмысленно.
|
|||
4
MaxS
09.12.18
✎
06:59
|
Раз есть такой вопрос, дам ответ для КД3 ;)
На стороне приемника создаём 2 ПКО для ООРП и для возврата товаров. В ПОД получения для документа ООРП указываем оба ПКО и проверяем заполнение табличных частей в поступивших данных. Если есть соответствующая табл часть, разрешаем использовать ПКО. На стороне источника - в рознице нужно использовать формат обмена 1.6 - там есть возвраты и т.п... Соответственно в приёмнике тоже нужна поддержка формата 1.6. |
|||
5
Конструктор1С
09.12.18
✎
07:55
|
А зачем разбивать на два документа?
|
|||
6
mexanik_96
09.12.18
✎
08:59
|
ВыгрузитьПоПравилу()
|
|||
7
prtx
09.12.18
✎
13:03
|
(2) для документа ООРП который показывает наши продажи используется поиск по внутреннему идентификатору и полям - дата и номер, а для ООРП который должен показывать возвраты поиск только по полям поиска - дата и номер(номер присваиваю новый - Номер = СтрЗаменить(Источник.Номер, "-", "В");
ВходящиеДанные.Вставить("Номер", Номер);) |
|||
8
prtx
09.12.18
✎
13:10
|
(5) по логике можно былобы засунуть возвраты(из источника из таблицы - возвращенные товары) в приемник в таблицу товары, вместе с продажами, но руководство хочет видеть два отдельных документа в приемники, чтобы в одном были продажи а во втором возвраты.
|
|||
9
prtx
09.12.18
✎
13:16
|
(0) небольшое разъяснение:
в правилах обмена есть готовые пвд - ОтчетОРозничныхПродажах и пко - ОтчетОРозничныхПродажах. При помощи этих правил мы переносим только продажи. я добавил свои пвд - ОтчетОРозничныхПродажахВозврат и пко - ОтчетОРозничныхПродажахВозврат. При помощи этих правил я хочу выгружать только возвраты. код пко приведен выше в первом сообщении. |
|||
10
prtx
09.12.18
✎
13:27
|
(6) вот добавил в пвд - ОтчетОРозничныхПродажахВозврат в событие "перед выгрузкой" следующее:
ВыгрузитьПоПравилу(Объект.Ссылка, , , , "ОтчетОРозничныхПродажахВозврат"); эффекта ноль, документы ООРП по правилу ОтчетОРозничныхПродажах создаются а вот по правилу ОтчетОРозничныхПродажахВозврат, нет. |
|||
11
mexanik_96
09.12.18
✎
15:37
|
(10) быть не может, поставь сообщить на пвд, и да перенеси в "при выгрузке"
|
|||
12
mexanik_96
09.12.18
✎
15:40
|
(11) при выгрузке нет такого события, я ошибся
(10) а пко то есть "ОтчетОРозничныхПродажахВозврат"? |
|||
13
mexanik_96
09.12.18
✎
15:42
|
(12) в пко источник, приемник типы верно указаны? выведи сообщить что нибудь в пко все таки
|
|||
14
prtx
09.12.18
✎
16:07
|
(11) методом тыка выяснил, что мой пвд и пко - ОтчетОРозничныхПродажахВозврат, просто не стартует. т.к. если отключить пвд - ОтчетОРозничныхПродажах, то при обмене работает все как надо. получается, что при обмене выполняется пвд - ОтчетОРозничныхПродажах, а после него не запускается пвд - ОтчетОРозничныхПродажахВозврат.
|
|||
15
mexanik_96
09.12.18
✎
16:13
|
автор, у тебя должен быть 1 пвд. в нем по дефолту пко для не возвратовф. в модуле выгрузить по правилу
|
|||
16
prtx
09.12.18
✎
17:16
|
(15) т.е. я оставляю типовое пвд - ОтчетОРозничныхПродажах, и в нем прописываю:
ВыгрузитьПоПравилу(Объект.Ссылка, , , , "ОтчетОРозничныхПродажах"); ВыгрузитьПоПравилу(Объект.Ссылка, , , , "ОтчетОРозничныхПродажахВозврат"); так получается? доберусь до пк, попробую. |
|||
17
prtx
09.12.18
✎
17:24
|
(15) спасибо за помощь. заработало.
последний вопрос: а в каких случаях можно/нужно использовать несколько пвд? просто я думал так логичнее, для каждого пко использовать свой пвд. |
|||
18
mexanik_96
09.12.18
✎
18:03
|
(17) там вопрос не в том что когда нужно\можно, а в том как она это делает.(тип 1с соответствие, выгруженных объектов, если по ключевым полям там объект есть то другое пвд по этому объекту пройдет мимо(туда пишет после выгрузки объекта из события как раз таки), ну для рег сведений с регистратором нужно так делать, там почему-то порядок выше для рс стоит даже если по коду идет ниже), ну вообще код же открыт, понятен и прост, так что можно было разобраться самому
|
|||
19
Конструктор1С
09.12.18
✎
18:05
|
(8) скажи что это не есть гуд
|
|||
20
Конструктор1С
09.12.18
✎
18:10
|
(16)
"ОтчетОРозничныхПродажах" "ОтчетОРозничныхПродажахВозврат" маленько глаза режет... Правила хорошего тона в программировании обязывают присваивать имена родственным реквизитам/методам/объектам одинаково, чтобы из их названия было четкое понимание, в чем их различие. Правильнее будет, например так: "ОтчетОРозничныхПродажахПродажи" "ОтчетОРозничныхПродажахВозврат" и становится сразу понятно, какая между ними разница |
|||
21
mexanik_96
09.12.18
✎
18:15
|
(21) правило хорошего тона в кд называть пко "типисточник_типполучатель"(для того чтобы не лезть в пко и смотреть что во что должно прийти)
в его случае это "ОтчетОРозничныхПродажах_ВозвратТоваровОтРозничногоПокупателя" это нужно когда у тебя пко будет 200-300 оглохнешь вот с такими ОтчетОРозничныхПродажахВозврат(2), ОтчетОРозничныхПродажахВозврат(50), строкувсправочник(178) и тд... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |