Имя: Пароль:
1C
1С v8
Помогите разобраться с КД 2.1, по выгрузке одного дока в несколько
0 slafor
 
31.05.23
19:37
Обмен Розница 2.3 <-> БП 3.0.

Пытаюсь настроить правила выгрузки ОРП из Розницы, так, чтобы документ в приемнике разделился на 2 ОРП - по Патенту и по УСН. Правила еще раньше были сильно изменены, и использовать новые типовые правила не получится. Так что приходится додумывать самому.

На вкладе Алгоритмы\Запросы есть запрос ОтчетОРозничныхПродажах_ТаблицаПромежуточная, который по Чекам получает основную таблицу для дальнейшего использования в ПВД и ПКО. Я сделал из него 2 своих запроса - ОтчетОРозничныхПродажах_ТаблицаПромежуточная_ФП и ОтчетОРозничныхПродажах_ТаблицаПромежуточная_ФУ - туда попадают продажи либо только по ПСН, либо только по УСН.
Далее нашел ПКО ОтчетОРозничныхПродажах, где используется эта промежуточная таблица, сделал свои ПКО полным копированием этого, и получил в итоге ОтчетОРозничныхПродажах_ФП и ОтчетОРозничныхПродажах_ФУ, которые обращаются каждый к своему запросу соответственного.
Дальше увидел ПВД ОтчетОРозничныхПродажах, и его скопировал и сделал такие же ПВД для ПСН и УСН, они обращаются только к "своим" запросам и используют только "свои" ПКО.

Еще сделал не просто копирование номера документа из источника, и его "модернизацию" по наши потребности - если в источнике он был, скажем, АБВГ-000001, то сейчас он в первом случае будет АБВГ-П-00001, а во втором - АБВГ-У-00001.

Стандартные ПКО и ПВД ОтчетОРозничныхПродажах отключил.

Но при этом почему-то выгружаются либо только часть ОРП по ПСН, либо часть по УСН. Отдельно новые документы создаваться упорно не хотят.

Догадываюсь, что все дело в настройках, может быть, "Порядок выполнения" в ПВД, или (что скорее всего) - как правильно искать обхект приемника в настройках ПВД. В общем-то, задачи искать ранее выгруженный объект не было, обмен за день делается всего один раз и больше никогда не повторяется, но все-таки хотелось сделать как надо.

Понимаю, для знатоков КД это вопросы наверняка покажутся смешными, но я никак не могу в них разобраться. Спасибо за внимание, и буду рад, если сможете помочь мне советом.
1 asady
 
31.05.23
22:21
(0) у тебя эти доки на один уид садятся и затирают друг друга
2 slafor
 
01.06.23
16:19
(1) А подскажете, как мне этого избежать?

Хотелось бы сделать так: основной документ оставить, он будет искаться по уиду, но переноситься туда будут только товары по УСН. А ещё создать дополнительный документ, уид которого переноситься не будет, а будет создаваться в приёмнике, и в нём уже будут товары по ПСН. Это возможно?
3 elCust
 
01.06.23
16:38
(2) В приемнике делаешь еще один реквизит, к примеру "ДокументУСН" заполняешь его, далее поля поиска включая реквизит ДокументУСН.
Но нужно будет решить только вопрос ссылочности.
4 boozin
 
01.06.23
16:38
Делай два разных правила. Во втором случае делай поля поиска, а не по уид, например Дата и номер, или добавь во вторую базу доп. реквизит тип УИД и ищи по нему, или любой другой идентифицирующий реквизит, который сам придумаешь... :)
5 boozin
 
01.06.23
16:39
(3) Опередил... :)
6 slafor
 
17.06.23
18:12
На время ушёл от этой темы, но теперь пришлось вернуться :)

Я сделал 2 разных ПВД и 2 разных ПКО, они опираются на "свои" запросы - в одних из Чеков/ОРП берутся продажи по СНО УСН, в других - по ПСН. При этом в номере вместо первых лидирующих нулей появляется префикс - либо -У, либо -П. Но все равно в файл выгрузки попадает только один из документов - либо с префиксом -У, либо с префиксом -П. И зависит все от того, какое из ПВД стоит выше.
Это можно было понять, когда я в обеих ПКО использовал поиск по внутреннему идентификатору источника, но и там сначала должно было выгрузиться одно ПВД, а затем другое должно было его "затереть". А сейчас выгружается первое (допустим, ПВД для УСН), а второй документ ОРП (по ПСН) в приемнике уже не создается, и в файле выгрузки его нет.
Как я только не "изголялся" - делал первое ПКО с поиском по внутреннему идентификатору, второе - без поиска, или и первое и второе ПКО - оба без поиска по УИДу - все равно в файл выгружается только первый ОРП - тот, который стоит выше в списке ПВД.

Что я делаю не так?

(4)(3) Поиск по объектам источника я могу вести по номеру, но не по точному номеру источника, а по его "измененному" варианту: например, в источнике у ОРП был номер "АБВГ-0000001", а в приемнике он стал уже таким - "АБВГ-У-00001". Кстати, как можно организовать такой поиск?
7 slafor
 
17.06.23
18:14
8 Sapiens_bru
 
17.06.23
18:25
(6) Нет под рукой КД2, Да и вообще давно не писал правил.
Если два разных ПВД затирают друг друга я бы попробовал один из этих вариантов:

1) Где то в настройках то ли ПВД,то ли ПКО есть флажок типа "запоминать выгруженные объекты" это как раз для минимизации файла выгрузки, чтобы данные не писались повторно. Попробуй отключить.

2) Напиши одно общее ПВД, получи данных для двух типов документов и вызови метод ВыгрузитьПоПравилу , там уже кодом распишешь какое ПКО когда вызывать. А основное ПКО для этого ПВД вообще не ставь.
9 Aleksey
 
17.06.23
18:54
Попробуй поиграться с параметром КлючВыгружаемыхДанных
типа
КлючВыгружаемыхДанных = СокрЛП(Источник.Ссылка.УникальныйИдентификатор())+"/"+  либо "-У", либо "-П".
10 welwel
 
18.06.23
15:58
(6) Если один и тот же объект выгружается разными пко (в два приемника), то см. (9), так как по умолчанию КлючВыгружаемыхДанных сам источник. Если для выгрузки одного объекта используется одно пко из двух по условию, то см 2) из (8)
11 welwel
 
18.06.23
16:10
Бывает, что объект выгружается не из своего пвд, а по ссылке из чужого пвд, например, через реквизит ДокументОснование, для которого пко явно не задано, а подбирается автоматически по типу ссылки (емнип последнее по порядку пко для этого типа). В этом случае можно (не надёжно) изменить приоритет "родного" пвд, чтоб отработал раньше, но надёжнее в пкс того реквизита передвыгрузкой доопределить имяпко явно, если для типа есть не одно пко.
12 welwel
 
18.06.23
16:15
(6) был номер "АБВГ-0000001", а в приемнике он стал уже таким - "АБВГ-У-00001"

Можно в пко для пкс Номер менять Значение в Передвыгрузкой на соответствующее.

Если этого недостаточно, то можно изменить в пко обработчик ПоляПоиска, который выполняется уже на стороне приемника, и в нем определить поиск ссылки через свой запрос.
13 welwel
 
18.06.23
16:37
+ (12) поиск через свой запрос в ПоляПоиска требуется редко и разве что в экзотических случаях, когда нет в приемнике реквизита поиска, а есть, к примеру, дополнительный реквизит в рс.
14 slafor
 
26.06.23
14:56
А подскажите ещё один момент, пожалуйста.

Я сделал ПВД с произвольной выборкой, в качестве ПКО там указано ОтчетОРозничныхПродажах_ФУ (УСН), а перед выгрузкой (т.е. раньше) выполняется конструкция ВыгрузитьПоПравилу(Объект,,,,"ОтчетОРозничныхПродажах_ФП") - по Патентам. Так вот, в стандартной выгрузке ОРП после выгрузки создает документы - Приходный и Расходный кассовый ордер, Списание со счета и ещё что-то. Всё это обрабатывается в обработчике ПВД После выгрузки: https://disk.yandex.ru/i/IQMjZx67FDT_-w .
Поскольку сейчас ПВД у меня один, то весь код в этом обработчике я закомментировал, и решил нужные документы создавать через ПКО, в обработчике После загрузки: https://disk.yandex.ru/i/FDBZe06rfeuymQ , я просто ищу Приходники по полю Документ-основание, если он есть, меняю его, если нет - создаю новый Приходник. Но система при загрузке на меня ругается на строке Выборка.Следующий(), хотя тот же самый код через внешнюю обработку работает "на ура".

Может быть, в обработчике ПКО После загрузки этого делать нельзя?

Или как можно использовать обработчик ПВД После выгрузки, если ПВД у меня всего один, а новые кассовые документы мне надо создавать в зависимости от системы налогообложения ОРП?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой