Всем доброго дня!
С обменами практически не работал, поэтому не пойму как решить такую схему обмена.
Делаю через КД2. Есть 2 базы 1с БП И ЗУП. В каждой есть по похожему документу. У документов есть реквизит УИД(Уникальный идентификатор) - не типовой. Поиск документа идет по нему.
В базе источника создается первый документ, которому присваивается новый УИД. На основании его создается второй с этим же УИДом, на основании второго третий итд. В документах меняются только даты начала и окончания. То есть при синхронизации, после создания новых документов в источнике, они регистрируются к обмену, по УИД находится тот документ в ЗУП и в нем меняются даты.
Но мне нужно не только это.
В приемнике есть даты, номер, он же номер приказа и ТЧ со старыми датами нач и кон и старым номером приказа.
Так вот нужно чтобы при синхронизации, если грузится первый документ источника, то просто создавался документ в приемнике. А если грузится второй, третий итд, то в приемнике брались текущие данные из шапки (дата нач, дата кон, номер приказа), переносились новой строкой в ТЧ и в шапку писались уже новые данные.
Такое вообще возможно?
Думал можно использовать объект коллекции в Перед загрузкой но это получается ТЧ и если пишу в получении номера Значение = объект.Номер, то программа ругается, что нет такого Объект... Видимо перед загрузкой еще нет объекта. А после загрузки дата в шапке уже сменится на новую и ее тянуть смысла нет.
(2) Немного не понял. Мне нужно дату начала взять из шапки приемника добавить новой строкой в ТЧ тоже приемника. Получается в параметр передавать из приемника в приемник?
В правилах выгрузки сделать формирование структуры, которая будет содержать правильный образ документа в приемнике. Выгрузка произвольным запросом и там написать нужный алгоритм. Сразу изо всех документов-источников, какие должны попасть в выгрузку. Потом из этой структуры сделать уже документ в приемнике, как надо.
(5) Ну вот есть в ЗУП документ с номером КМ13-03-05/2. 03 это месяц, 05 порядковый номер всех документов этого типа за месяц. У него в ТЧ есть строка с номером КМ13-03-05/1. Получается сроки документа менялись 1 раз. Плюс может быть перенос с одного месяца на другой. В БП получается есть 2 документа, второй создан на основании первого. В БП своя нумерация, номер приказа в БП из ЗУП не передается. Я В БП создаю третий документ на основании второго. И что я должен засунуть в структуру? 3 документа. Так у меня нет проблем с синхронизацией других данных документа. Мне при выгрузке, после того как документ нашелся, надо как то нужно получить его текущий номер, что он сейчас КМ13-03-05/2, добавить строку в ТЧ с этим номером, а в шапку присвоить уже номер КМ13-03-05/3.
Сори, если я сильно туплю. Если есть ссылки на хорошую литературу по теме, буду очень признателен.
Так у меня нет проблем с синхронизацией других данных документа.
так конвертация так устроена, что иногда для одной маленькой галки приходится переделать вообще все. Селяви.
Я бы делал полностью структуру конечного документа, а на стороне получателя уже решал, что с ней делать, то ли новый документ, то ли дописать существующий, то ли еще что.
Да, такое похоже, можно сделать через КоллекцияОбъектов. Надо создать ПКГС - правило конвертации группы свойств и в источнике ничего не указывать, а в приемнике - табличную часть ЗУП. И в обработчике "Перед обработкой" в этой группе нужно получить коллекцию строк табличной части. Вот пример кода для совсем других целей, но по аналогии:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОсновнойОстатки.Субконто1 КАК ФизЛицо,
| -ОсновнойОстатки.СуммаОстаток КАК СуммаВзаиморасчетов
|ИЗ
| РегистрБухгалтерии.Основной.Остатки(&Дата, Счет В ИЕРАРХИИ (&Счет70), , ) КАК ОсновнойОстатки";
Запрос.УстановитьПараметр("Дата", Новый Граница(конецДня(Источник.дата), ВидГраницы.Включая));
Запрос.УстановитьПараметр("Счет70", ПланыСчетов.Основной.А70);
РезультатЗапроса = Запрос.Выполнить();
КоллекцияОбъектов = РезультатЗапроса.Выгрузить();