Добрый день!
У меня настроен импорт контрагентов из 1С автоматически раз в час через планировщик заданий.
Также в системе действует поиск дублей по названию контрагента.
При импорте контрагентов из 1С иногда вылезает диалог для обработки дублированной записи, т.к. это происходит в автоматическом режиме, то интеграция зависает на этом месте.
Подскажите, пожалуйста, как можно этого избежать? Нужно, чтобы в таком случае не было проверки на дубли.
Нравится
Тут (http://www.community.terrasoft.ru/forum/topic/9197) мне предложили просто убрать правило поиска дублей, а потом создавать, когда понадобится.
Если вам не подходит данный вариант, то пляшите от начального скрипта запуска интеграции.
Вы запускаете через ярлык?
Тогда, скорее всего, используете окно wnd_AutoRun1C, его скрипт wnd_AutoRun1CScript. Там используется функция ImportAllObject из scr_Dataflow1CUtils. И т.д. пока не найдете вызов этого окна дублирования. (Что-то я пытался найти, но потом согласился на вариант техподдержки)
Другой вариант - это закрывать окно при его вызове. Для этого надо во-первых узнать что за окно запускается и на OnPrepare его закрывать. Но, скорее всего, окно используется и при обычном поиске дублей и оно тогда также будет пропадать. Поэтому надо будет найти разницу (наверное, в атрибутах) при намеренном вызове поиска дублей и во время интеграции. И по этой разнице закрывать или не закрывать окно.
(этот вариант я не рассматривал, так как потратил много времени на предыдущий вариант, поэтому выбрал самое простое)
Если найдете решение, прошу описать его тут.
Здравствуйте, Дмитрий!
Окно дублей появляется в том случае, если Вами используется импорт в набор данных. Чтобы избежать его появления, можно импортировать напрямую в таблицу. Однако при этом учтите, что при таком импорте не срабатывает стандартная логика на добавление записи, например, средства связи не попадут на деталь.
Да, в принципе вариант импорта не в набор данных, а в таблицу подойдет. Спасибо.
Изменил импорт контрагентов в таблицу вместо набора данных. Но похоже что поиск дублей все равно отрабатывает. На контрагентах, которые уже есть в террасофте возникает ошибка в функции "InitializeOriginalDataset" скрипта wnd_BaseDuplicatesFoundScript
Информация по сервису '' не найдена.
Подскажите, пожалуйста, в чем можеь быть причина?
Дмитрий,
при импорте Вы можете отключать проверку дублей.
Это делает следующая конструкция:
Connector.Attributes('IsDuplicatesCheckDisabled') = true; try { ВашDataset.Post(); } catch (e) { Обработка ошибки(e.description); } finally { Connector.Attributes('IsDuplicatesCheckDisabled') = false; }
Конечно возможны и другие варианты скрипта, все зависит от конкретного случая.
Александр, спасибо за ответ. А подскажите еще, где нужно использовать этот скрипт?
Этот атрибут отключает все события и триггеры, связанные с поиском дублей.
Достаточно отключить их на момент сохранения записи (т.е. перед Post()),
а затем опять включить. Это минималистский вариант. При записи нескольких значений,
его можно использовать сразу для всех (запретить дубли, потом вставить несколько
строк в таблицу, потом разрешить). Смотрите по задаче.
Да, еще забыл сказать, что использовать этот скрипт надо при вставке или
обновлении тех таблиц, по которым у Вас идет поиск дублей.
В стандарте - это таблицы контрагентов и средств связи.
Дальше зависит от Ваших правил.