Использование com-соединения для сопоставления номенклатуры, контрагентов
Com-подключение для сравнения номенклатуры, контрагентов, остатков.
- Описание
- Подробнее
Описание
Добрый день!
Опишу способ использования ком-подключения для определенного круга задач — когда надо сопоставить или номенклатуру, или контрагентов, или остатки между двумя базами.
Суть в двух словах. В одной базе (База-1) в общем модуле будут созданы функции, возвращающие таблицу значений названий номенклатуры/ названий контрагентов/ остатков /других значений примитивных типов. В другой базе (База-2) мы создадим ком-подключение к Базе-1, будем получать из Базы-1 таблицу значений названий номенклатуры, названий контрагентов, остатков. Далее в Базе-2 создадим пользовательскую форму для сопоставления названий номенклатур, названий контрагентов, остатков. Отдадим на откуп сопоставление номенклатуры/контрагентов/остатков пользователям.
Уточнения:
1) в Базе-2 не надо использовать ком-объект NewObject ("Запрос") — с запросами мы работаем исключительно в Базе-1, конструируем их, выполняем, передаем в другую базу только ТаблицуЗначений. Ссылки не передаем, но если надо передать ссылки, то заменяем их на УИД. Так как в запросе мы не можем получить УИДы, то потребуется пройтись в цикле по выборке, чтобы определить по каждой ссылке соответствующий УИД в возвращаемой ТаблицеЗначений.
2) Ком-подключение используется не для программной обработки данных, а для визуального сопоставления справочников и остатков именно пользователями программы 1С. Пользователи видят расхождение, и производят дальнейшую обработку номенклатуры, контрагентов, остатков исходя из смысла рабочего процесса (см. рис. из примеров задач).
Примеры возникновения подобных задач:
1) Есть база Источник (например, КА) и есть база Приемник (некая база адресного хранения товаров). Номенклатура переходит из базы Источника в базу Приемник с помощью заданного плана обмена, товары сопоставляются между базами по уникальному идентификатору УИД. Одной из задач в таком случае становится сопоставить остатки товаров в базах.
2) Есть две независимые базы БП и УТ, учет ведется параллельно, обмен между базами не настроен. Но в какой-то момент становится необходимым настроить обмен между базами. И тогда для первоначальной настройки обмена требуется сопоставить номенклатуру и контрагентов. Номенклатуру будем сопоставлять по названию и ряду дополнительных признаков (помечен на удаление, это группа, это услуга — это из стандартных признаков). Контрагентов будем сопоставлять по названию, ИНН и КПП, плюс по стандартным признакам.
3) Есть несколько баз УТ, и надо объединить базы в одну базу. Если базы находятся в одной локальной сети, то для первоначального сопоставления номенклатуры и контрагентов можно использовать прямое подключение по com-технологии (см. рис.)
На рисунке показано сравнение номенклатуры по названию. Использовано Левое соединение таблиц, но вы можете использовать Полное соединение таблиц, чтобы увидеть какая номенклатура не совпадает по названию в обеих базах.
Технология использования:
За ком-интерфейс отвечает компонента dll — comcntr.dll (переводится как "управление ком"), которая расположена в установочной папке 1с (см. рис.1). Именно эту компоненту вам надо зарегистрировать в опер. системе самостоятельно, если этого не сделала платформа 1с при первоначальной установке.
В Базе-1 придется создать общий модуль, задать ему свойство "внешнее соединение" (рис.2)
В общем модуле Базы-1 функции условно можно разделить на две категории: функции, которые получают данные из этой же базы для передачи Таблицы Значений в другую базу. И функции, которые используются для работы с другой базой — например, та же функция получения Ком-соединения с другой базой. Смотрите разделение функций на рис. 3.
Остальную функциональность в Базе-2 для использования ком-подключения и сопоставления номенклатуры (контрагентов или остатков) можно разработать во внешней обработке (рис.4).
Таким образом, если у вас имеется не редактируемая на поддержке типовая БП и редактируемая измененная УТ, то вы можете создать экспортные функции в общем модуле УТ, а подключаться по ком-соединению из БП и видеть расхождения в номенклатуре в пользовательской форме БП. То есть, снимать с поддержки БП не придется, потому что будете использовать внешнюю обработку.
Далее будут представлены алгоритмы создания ТаблицыЗначений в Базе-1 (Листинг 1) и алгоритмы обхода ТаблицыЗначений в Базе-2 (Листинг 2).