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

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);
...
КонецЕсли;
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Программист 1С:ERP
Москва
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день