Синхронизация договоров между ДО и БУХ
Всем добрый день!
Сразу скажу, что в синхронизации полный ноль (даже минус 287). Необходимо решить небольшую проблему со стандартными правилами синхронизации:
Есть стандартные правила обмена для выгрузки договоров из ДО в БУХ (в одностороннем порядке). Правила прилагаю.
Однако в них нет никакой проверки на предмет наличия в БУХ загружаемого договора (например, по регистрационному номеру и дате регистрации).
Мне необходимо добавить этот контроль.
По образу и подобию синхронизации других справочников (например, контрагентов), в ExchangeRules (для правил ДО) добавила строки:
Загрузила обновленные правила в настройки синхронизации, но проверка все равно не происходит, и договор загружается даже при наличии в БУХ договора с таким же рег. номером...
Подскажите, пожалуйста, в чем может быть проблема? Или все не так просто как я думаю, и только правкой в нотпаде правил обмена не обойтись?
Сразу скажу, что в синхронизации полный ноль (даже минус 287). Необходимо решить небольшую проблему со стандартными правилами синхронизации:
Есть стандартные правила обмена для выгрузки договоров из ДО в БУХ (в одностороннем порядке). Правила прилагаю.
Однако в них нет никакой проверки на предмет наличия в БУХ загружаемого договора (например, по регистрационному номеру и дате регистрации).
Мне необходимо добавить этот контроль.
По образу и подобию синхронизации других справочников (например, контрагентов), в ExchangeRules (для правил ДО) добавила строки:
<ПоследовательностьПолейПоиска>СтрокаИменСвойствПоиска = "Номер";</ПоследовательностьПолейПоиска> //Добавляю только рег. номер для теста
...
<ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>true</ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>
...
<ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>tru
Загрузила обновленные правила в настройки синхронизации, но проверка все равно не происходит, и договор загружается даже при наличии в БУХ договора с таким же рег. номером...
Подскажите, пожалуйста, в чем может быть проблема? Или все не так просто как я думаю, и только правкой в нотпаде правил обмена не обойтись?
Прикрепленные файлы:

ExchangeRules_исправленный.xml
По теме из базы знаний
- 1С:Бухгалтерия государственного учреждения 8
- 1С:Документооборот КОРП. Интеграция vs синхронизация. Бесшовная интеграция
- Доки: новый сервис электронного документооборота: цены от 1 500 руб.
- Тренд 2025 года – Интеграция с 1С:Документооборот 3.0
- Модуль интеграции 1С: Документооборот 3.0: мост к эффективной работе предприятий
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Теперь проблема в контроле по ДВУМ полям. Например, РегистрационныйНомер и Контрагент.
В случае, если передается договор с рег. номером, уже имеющимся в БУХ, но другим Контрагентом, договор в БУХ не создается.
То есть контролирует уникальность только по РегНомеру.
Подскажите, пожалуйста, что не так?? Как сделать, чтобы искал связку "РегНомер + Контрагент"?
В случае, если передается договор с рег. номером, уже имеющимся в БУХ, но другим Контрагентом, договор в БУХ не создается.
То есть контролирует уникальность только по РегНомеру.
Подскажите, пожалуйста, что не так?? Как сделать, чтобы искал связку "РегНомер + Контрагент"?
Прикрепленные файлы:

Опытным путем выяснилось, что поиск по двум строковым реквизитам (например, РегистрационныйНомер и Комментарий) отрабатывает правильно. То есть договор из ДО в БУХ загружается, если не совпадает хоть один из реквизитов.
При поиске по Регистрационному номеру и реквизиту типа "Дата" (ДатаРегистрации) или "Контрагент" - поиск осуществляется только по регистрационному номеру. То есть загрузка договора не происходит, даже если второй реквизит (ДатаРегистрации или Контрагент) не совпадают у загружаемого и найденного договора.
Может кто-то все-таки подскажет, в чем может быть причина?
При поиске по Регистрационному номеру и реквизиту типа "Дата" (ДатаРегистрации) или "Контрагент" - поиск осуществляется только по регистрационному номеру. То есть загрузка договора не происходит, даже если второй реквизит (ДатаРегистрации или Контрагент) не совпадают у загружаемого и найденного договора.
Может кто-то все-таки подскажет, в чем может быть причина?
(5) Добрый день! Спасибо за ответ!
Я пробовала указывать и имена источника, и приемника. По полю "РегистрационныйНомер" (наименование в источнике), поиск проходит отлично.
На данный момент удалось добиться поиска по двум полям - рег. номер и Дата, что изначально и нужно было.
Параметр "СтрокаИменСвойствПоиска" совсем убрала за ненадобностью, оставила "Поиск = "true"" для необходимых реквизитов и сделала перед выгрузкой приведение Даты к началу дня, т.к. в БП в справочнике ДоговорыКонтрагентов этот реквизит имеет состав "Дата" (Не ДатаВремя, как в ДО).
Вроде работает.
Но поиска по Контрагенту, например, так и не удалось добиться. Хотя сами справочники контрагентов синхронизируются без проблем.
Я пробовала указывать и имена источника, и приемника. По полю "РегистрационныйНомер" (наименование в источнике), поиск проходит отлично.
На данный момент удалось добиться поиска по двум полям - рег. номер и Дата, что изначально и нужно было.
Параметр "СтрокаИменСвойствПоиска" совсем убрала за ненадобностью, оставила "Поиск = "true"" для необходимых реквизитов и сделала перед выгрузкой приведение Даты к началу дня, т.к. в БП в справочнике ДоговорыКонтрагентов этот реквизит имеет состав "Дата" (Не ДатаВремя, как в ДО).
Вроде работает.
Но поиска по Контрагенту, например, так и не удалось добиться. Хотя сами справочники контрагентов синхронизируются без проблем.
(6) рекомендую попробовать в обработчике Поля поиска прописать условия с выбором НомерВариантаПоиска с выводом отладочной информации. на разных вариантах указать разные комбинации полей поиска через СтрокаИменСвойствПоиска. таким образом можно будет точно локализовать, сколько итераций поиска будет проведено и на каких комбинациях полей будет ошибка или успешный поиск. например:
Если НомерВариантаПоиска = 1 Тогда
СтрокаИменСвойствПоиска = "РегистрационныйНомер, ДатаРегистрации, Контрагент";
Сообщить(1);
ИначеЕсли НомерВариантаПоиска = 2 Тогда
СтрокаИменСвойствПоиска = "РегистрационныйНомер, Контрагент";
Сообщить(2);
...
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот