Использование com-соединения для сопоставления номенклатуры, контрагентов

Публикация № 1232168

Учет и отчетность - Анализ учета

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).

 
 Листинг 1. Алгоритм создания ТЗ для передачи в другую базу
 
 Листинг 2. Алгоритм обхода ТЗ, полученной из другой базы

В листинге 2 представлены функции и процедуры формы внешней обработки, каждой процедуре на форме соответствует кнопка: подключение к базе ЦБ, получить остатки из ЦБ, сравнить товары из ЦБ и т.д.

Работа с ком-подключением задается только пользователю с определенной ролью (захватывается одна лицензия платформы 1с) - в моем случае, я создал роль "КомКоннектор", вы можете использовать одну из предопределенных типовых ролей.

При работе с ТЗ надо помнить о типах значений, которые мы передаем/получаем через ТаблицуЗначений - для таблиц значений типы полей надо задавать заранее (см листинги).

При работе с ком-подключением используйте конструкцию Попытка Исключение КонецПопытки.

В принципе, это все.

Всем добра! :)

С пользой для клиентов, RustIG

 
 См. также

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Nikola23 511 07.05.20 09:11 Сейчас в теме
ОМГ! COM соединение в 2020 году. Я не говорю, что технология плохая, но неужели вас утраивает скорость?
А если соединение зависнет намертво?

http сервисы - вот что я выбираю.
3. Rustig 1533 07.05.20 09:29 Сейчас в теме
(1) скорость в представленных задачах - быстрая - неуловимая я бы сказал - один раз получаем таблицу с данными, далее можно сразу отключать Ком-соединение (сделать равным Неопределено). Далее работа с данными происходит внутри одной базы - сравниваем элементы.
По сравнению с http-запросами - время на развертывание минимально.
Я предлагаю использовать ком-подключение только для разовых операций - НЕ ДЛЯ ОБРАБОТКИ данных онлайн, НЕ ДЛЯ ПЕРИОДИЧЕСКИХ ОБМЕНОВ.
Тут задачи узкоспециализированные, которые встречаются или раз в жизни компании, или за редким исключением сверить остатки.
Но соглашусь с тем, что если надо периодически сравнивать остатки для баз (как в моем примере №1), тогда надо продумывать http-запросы. В этом случае базы можно разнести по разным локальным сетям, по разным серверам. По поводу скорости нет статистики. Зато информации на Инфостарт много.
7. Nikola23 511 07.05.20 13:14 Сейчас в теме
(3) Сравниваете построчно?
А если таблица остатков 100000 строки и вторая таблица такая же?

Вы ищите конкретное расхождение или только факт, что все ок/не ок?
8. Rustig 1533 07.05.20 14:50 Сейчас в теме
(7) листинг кода есть в публикации.
не понял, что значит построчно и не построчно сравнивать?
конечно, есть разница когда 100 тыс или 40 тыс позиций в таблице - ждать приходится разное
кол-во секунд.
Плюс логику надо закладывать - к примеру в обороте за последний год может быть 10 тыс. позиций, а в таблице номенклатуры за все годы работы накопилось 70 тыс.Тогда и сравнивать надо только 10 тыс. Это отсекается алгоритмами.
По ситуации надо решать задачи - я во всех своих публикациях придерживаюсь этой мысли - универсально тут нельзя рассуждать. Согласен, что если не приемлемо долго происходит сравнение названий, то надо придумывать дополнительные механизмы - к примеру, сохранение и восстановление значений таблиц - использовать типовые стандартные механизмы формы, чтобы при повторном открытии форм снова и снова не запускать сравнение.
ДА и к тому, это сравнение всегда "на убывание" - пользователь всегда должен корректировать расхождения и уменьшать их количество, а не накапливать их.
9. Rustig 1533 07.05.20 14:56 Сейчас в теме
(7) развернуть механизм ком-сравнения занимает 5 минут. копируете один листинг в одну базу в общий модуль, второй листинг во внешнюю обработку в модуль формы, накидываете кнопки и тестируете подключение и сравнение номенклатуры, контрагентов, кол-во.
Я аккумулировал небольшой свой опыт работы на трех разных проектах, о которых описал, плюс четвертый опыт использовал мой коллега для предварительной подготовки баз БП 3.0 и УТ 11 перед настройкой обмена УТ-БП.

Я считаю это удачное решение - я вижу развитие этого механизма - хотел бы увидеть - в использовании расширений - тогда не придется снимать с поддержки конфигруацию. В типовых конфигурациях очень много общих модулей с признаком "Внешнее соединение". Можно ли их расширить, добавив свои процедуры для механизма ком-сравнения?
10. Nikola23 511 07.05.20 15:09 Сейчас в теме
(9) точно так же и с сервисами. Копируете расширение (фреймворк) и работаете.
Платформонезависимо, без глюков.

Так, например, на майских праздниках я решал задачу "выявить и устранить расхождения сс-ти в ERP". Где кто-то взял и испортил все с 17го года.

Вероятно и COM дал бы результат, но за какое время? Тут нельзя взять и после запроса отключиться)

Сотни миллионов строк движений регистров проверялось.
Если раходится, сразу же запрашивались детальные данные и движение восстанавливалось.
11. Rustig 1533 07.05.20 15:11 Сейчас в теме
(10) я хотел бы познать ваши методы , искренне говорю.
12. Nikola23 511 07.05.20 15:39 Сейчас в теме
(11) статья уже готовится) Что бы не пропустить - добавляйтесь в друзья. Инфостарт пришлет уведомление.
2. Nikola23 511 07.05.20 09:12 Сейчас в теме
Плюсую за монетизацию в конце статьи. Как удалось договориться с модератором?)
Если ответ длинный, напишите в личку, пожалуйста.
4. Rustig 1533 07.05.20 09:30 Сейчас в теме
(2) Задал вопрос в техподдержку, получил ответ, что запрещено для получения оплаты за свои обработки, а за донаты не запрещено.
5. dsdred 1439 07.05.20 09:37 Сейчас в теме
Для таких вещей использую OData
Разворачивать не трудно, хоть у себя на локалке опубликовал и пользуйся.
6. Rustig 1533 07.05.20 10:20 Сейчас в теме
(5) да, отличное замечание! были наработки по ком, поделился, дополнением стало то, что при написании статьи систематизировал свои знания.
Оставьте свое сообщение

См. также

Excel vs 1С: битва с неожиданным исходом Промо

Анализ учета Универсальные обработки Загрузка и выгрузка в Excel Финансовые Управленческие v8 1cv8.cf Россия Бесплатно (free)

Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!

11.04.2019    35692    bolefirenko    116    

Как сделать сторно в 1С

Анализ учета v8 v8::ОУ КА2 УУ Бесплатно (free)

Сторно – это исправление ошибок учета, когда ошибочно внесенную операцию записывают с отрицательными числами. В программах 1С есть два вида документа, с помощью которых можно выполнить сторно необходимых данных. Это "Корректировка регистров" и "Операция" в 1С 8.3.

30.03.2020    2712    Koder_Line    0    

Консилиум во флаконе

Бухгалтерский учет Анализ учета v8::БУ v8::Запросы v8::СКД 1cv8.cf Бесплатно (free)

Ошибки, держитесь крепче. Flowcon вышел на охоту.

14.03.2019    8524    1c-intelligence    10    

Элементы внедрения системы адресного хранения на программе "Кортес: Адресный склад"

Управление проектом Учет ТМЦ Учет ТМЦ v8 КА1 УУ Абонемент ($m)

С чего начать внедрение адресного хранения склада? Возможно ли проводить безбумажную инвентаризацию? Не понимаете, о чем я спрашиваю? - Объясню по порядку.

1 стартмани

12.11.2018    10708    16    Rustig    40    

Ошибка №2 внедрения "Бюджетирования" в 1С:ERP2 и 1С:КА2: реализация бизнес-логики на уровне отборов правил получения фактических данных

Финансовый учет и бюджетирование (FRP) Анализ учета Финансовый учет и бюджетирование (FRP) v8 ERP2 Россия УУ Бесплатно (free)

Ошибка настройки правил получения фактических данных в 1C:ERP2 и 1С:КА2 довольно распространена. Попытка реализовать бизнес-логику на уровне правил получения фактических данных делает отчетность сложно проверяемой, увеличивает время формирования отчетов и практически всегда приводит к искажению фактических данных в бюджетных отчетах.

22.08.2018    9175    SergeyN    5    

Использование регистров сведений в качестве эталона для сверки остатков между базами

Анализ учета Перенос данных из 1C8 в 1C8 v8 1cv8.cf БУ НУ УУ Налог на рекламу Бесплатно (free)

Наименее затратный метод сверки остатков между базами данных. Я его применил на проекте перехода с УПП одной редакции на другую при сверке и корректировке остатков партионного учета.

01.02.2016    14605    Kindman1980    10    

ЗУП РСВ-1 не учитывает пособие по уходу за ребенком до 1.5 лет

Бухгалтерские Анализ учета Зарплата Зарплата v8 ЗУП2.5 Россия БУ ФОМС, ПФ, ФСС Бесплатно (free)

Конфигурация 2.5.82.2 Ситуация: РСВ-1 за 1полугодие2014 не выводит в раздел 2 строки 200-201 суммы начисленных пособий по уходу до 1.5 лет

16.07.2014    15375    agentesecreto    2    

Несколько слов про закрытие 20.01 в случае производства (43 счет)

Анализ учета Бухгалтерский учет Закрытие периода Закрытие периода v8 БП2.0 Россия БУ Бесплатно (free)

Анамнез: в БП 2.0 было такое...Было простое производство (отчет производства за смену) и реализация, как услуг, так и готовой продукции. И было всё прекрасно, всё закрывалось, но однажды перестало и никто не знал почему... Случай показателен двойной ошибкой пользователя, причем, первая ошибка компенсировала вторую...

15.07.2014    16454    1cspbru    6    

«Торгашка» в облаках

Анализ учета v8 Россия Бесплатно (free)

Может ли небольшая торговая фирма в маленьком заштатном городке работать в «облаке»?

27.01.2013    23087    PAVI    159    

Что делать, если СЗВ 6-3 не "идет" с РСВ-1

Зарплата Анализ учета Зарплата v8 КА1 БП2.0 ЗУП2.5 УПП1 Россия БУ ФОМС, ПФ, ФСС Бесплатно (free)

В связи с необходимость подавать новую форму СЗВ 6-3 за 2011 год, у многих организаций возникла проблема, когда при проверке отчетов ПФР сообщает о расхождениях между 6-3 и ИС(общероссийская база). И вроде ничего сложного, исправить указанные ошибки. Но... После исправления расхождений по людям, 6-3 может "не пойти" с РСВ-1. О методике решения и причинах возникновения проблемы в моей статье.

24.02.2012    10777    MaksIvanov    19    

Запрос по остаткам регистра накопления на каждый день

Практика программирования Работа с интерфейсом Анализ учета Оборотно-сальдовая ведомость, Анализ счета Учет ТМЦ Оборотно-сальдовая ведомость, Анализ счета Учет ТМЦ v8 1cv8.cf Россия БУ Бесплатно (free)

Неоднократно сталкивался с необходимостью написания запроса для получения остатков по периоду накопления на каждый день. Поскольку рабочий инструмент - консоль запросов, то хотелось получить результат без использования СКД (да и разбираться с ней начал существенно позже). Идея, вероятно, слегка извращенная, но работающая. Альтернативные более быстрые варианты принимаются)

18.01.2012    69562    Laertid    35    

Готовое решение для отслеживания конфликтов кадровых неявок в ЗУП и УПП

Управление персоналом (HRM) Поиск данных Тестирование и исправление Анализ учета Управление персоналом (HRM) v8 ЗУП2.5 ЗКБУ УПП1 Бесплатно (free)

В актуальной версии ЗУП 2.5 оперативный контроль кадровых неявок сводится к программной проверке : не начинается ли в эту же самую дату какая-то другая неявка? Многие пользователи считают, что этого явно недостаточно. Вашему вниманию предлагается готовое решение (в виде программного кода) для ЗУП и УПП, которое после проведения документа кадровой неявки информирует пользователя, какие конфликты кадровых неявок повлекло за собой проведение документа.

29.06.2011    15496    megatrend    8