Синхронизация договоров между ДО и БУХ

1. blandinko 09.10.19 11:48 Сейчас в теме +0.37 $m
Всем добрый день!

Сразу скажу, что в синхронизации полный ноль (даже минус 287). Необходимо решить небольшую проблему со стандартными правилами синхронизации:

Есть стандартные правила обмена для выгрузки договоров из ДО в БУХ (в одностороннем порядке). Правила прилагаю.
Однако в них нет никакой проверки на предмет наличия в БУХ загружаемого договора (например, по регистрационному номеру и дате регистрации).

Мне необходимо добавить этот контроль.
По образу и подобию синхронизации других справочников (например, контрагентов), в ExchangeRules (для правил ДО) добавила строки:

<ПоследовательностьПолейПоиска>СтрокаИменСвойствПоиска = "Номер";</ПоследовательностьПолейПоиска> //Добавляю только рег. номер для теста
...
<ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>tru­e</ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>


Загрузила обновленные правила в настройки синхронизации, но проверка все равно не происходит, и договор загружается даже при наличии в БУХ договора с таким же рег. номером...

Подскажите, пожалуйста, в чем может быть проблема? Или все не так просто как я думаю, и только правкой в нотпаде правил обмена не обойтись?
Прикрепленные файлы:
Правила конвертации ДО стандартные.zip
ExchangeRules_исправленный.xml
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. blandinko 10.10.19 17:38 Сейчас в теме
Проблема оказалась в том, что для свойства, по которому должен был осуществляться поиск, не было установлено свойство "Поиск="true""
3. blandinko 11.10.19 09:55 Сейчас в теме
Теперь проблема в контроле по ДВУМ полям. Например, РегистрационныйНомер и Контрагент.
В случае, если передается договор с рег. номером, уже имеющимся в БУХ, но другим Контрагентом, договор в БУХ не создается.
То есть контролирует уникальность только по РегНомеру.

Подскажите, пожалуйста, что не так?? Как сделать, чтобы искал связку "РегНомер + Контрагент"?
Прикрепленные файлы:
4. blandinko 14.10.19 12:57 Сейчас в теме
Опытным путем выяснилось, что поиск по двум строковым реквизитам (например, РегистрационныйНомер и Комментарий) отрабатывает правильно. То есть договор из ДО в БУХ загружается, если не совпадает хоть один из реквизитов.
При поиске по Регистрационному номеру и реквизиту типа "Дата" (ДатаРегистрации) или "Контрагент" - поиск осуществляется только по регистрационному номеру. То есть загрузка договора не происходит, даже если второй реквизит (ДатаРегистрации или Контрагент) не совпадают у загружаемого и найденного договора.
Может кто-то все-таки подскажет, в чем может быть причина?
5. Lord_Michael 17.10.19 13:48 Сейчас в теме
(4) могу ошибаться, но вроде в параметре СтрокаИменСвойствПоиска нужно указывать имена полей приемника, а у Вас указаны поля источника. поля не находит - поиск не отрабатывает.
6. blandinko 17.10.19 14:40 Сейчас в теме
(5) Добрый день! Спасибо за ответ!

Я пробовала указывать и имена источника, и приемника. По полю "РегистрационныйНомер" (наименование в источнике), поиск проходит отлично.
На данный момент удалось добиться поиска по двум полям - рег. номер и Дата, что изначально и нужно было.
Параметр "СтрокаИменСвойствПоиска" совсем убрала за ненадобностью, оставила "Поиск = "true"" для необходимых реквизитов и сделала перед выгрузкой приведение Даты к началу дня, т.к. в БП в справочнике ДоговорыКонтрагентов этот реквизит имеет состав "Дата" (Не ДатаВремя, как в ДО).
Вроде работает.

Но поиска по Контрагенту, например, так и не удалось добиться. Хотя сами справочники контрагентов синхронизируются без проблем.
7. Lord_Michael 17.10.19 19:53 Сейчас в теме
(6) рекомендую попробовать в обработчике Поля поиска прописать условия с выбором НомерВариантаПоиска с выводом отладочной информации. на разных вариантах указать разные комбинации полей поиска через СтрокаИменСвойствПоиска. таким образом можно будет точно локализовать, сколько итераций поиска будет проведено и на каких комбинациях полей будет ошибка или успешный поиск. например:
Если НомерВариантаПоиска = 1 Тогда
     СтрокаИменСвойствПоиска = "РегистрационныйНомер, ДатаРегистрации, Контрагент";
     Сообщить(1);
ИначеЕсли НомерВариантаПоиска = 2 Тогда
     СтрокаИменСвойствПоиска = "РегистрационныйНомер, Контрагент";
     Сообщить(2);
...
КонецЕсли;
Оставьте свое сообщение

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