Как реализовать импорт номенклатуры из одной базы 1С в другую по нажатию кнопки?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Зачастую перед разработчиками встает задача оперативного переноса данных из одной информационной базы в другую. Рассмотрим подробно, как организовать механизм выбора номенклатуры в «чужой» базе и её последующий импорт в текущую конфигурацию.

Определение архитектуры решения

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

  1. COM-соединение — классический вариант, если обе базы находятся на одном сервере под управлением Windows. Это наиболее быстрый способ с точки зрения разработки, позволяющий обращаться к объектам другой базы напрямую, как к своим.
  2. HTTP и Web-сервисы — современный стандарт, который рекомендуется использовать в распределенных системах или при работе под управлением Linux. Этот способ обеспечивает независимость от клиентской платформы и высокую безопасность.
  3. OData (Open Data Protocol) — технология, позволяющая публиковать справочники как REST-сервисы. Это избавляет от необходимости писать сложный код на стороне сервера-источника, так как доступ к данным осуществляется через стандартные URL.

Реализация механизма выбора данных

Для создания интерактивного окна выбора предлагаем следующий алгоритм действий:

  1. Создание формы выбора: В текущей конфигурации необходимо создать управляемую форму, которая будет выступать в роли «окна просмотра». Эту форму лучше реализовать через механизм Расширения конфигурации, чтобы не снимать основную конфигурацию с поддержки.
  2. Взаимодействие через сервис: При открытии формы или нажатии кнопки «Выбрать» база-приемник отправляет запрос к базе-источнику. Если используется HTTP-сервис, он возвращает JSON-структуру с данными номенклатуры.
  3. Обработка данных: Полученные данные десериализуются в структуру или массив, которые затем отображаются в табличном поле (Динамический список или Таблица значений) формы.

Пример логики импорта (условный код)

При получении данных важно помнить о ссылочной целостности и предотвращении дублей. Рассмотрим логику обработки выбранного элемента:


// Пример логики обработки полученных данных на стороне клиента
Процедура ИмпортироватьНоменклатуру(ВыбраннаяНоменклатура)
    // 1. Поиск соответствия по коду или артикулу
    НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоАртикулу(ВыбраннаяНоменклатура.Артикул);
    
    Если НайденнаяНоменклатура.Пустая() Тогда
        // 2. Создание нового объекта, если соответствие не найдено
        НовыйТовар = Справочники.Номенклатура.СоздатьЭлемент();
        ЗаполнитьЗначенияСвойств(НовыйТовар, ВыбраннаяНоменклатура);
        НовыйТовар.Записать();
    Иначе
        // 3. Обновление существующей записи
        ОбъектДляОбновления = НайденнаяНоменклатура.ПолучитьОбъект();
        ЗаполнитьЗначенияСвойств(ОбъектДляОбновления, ВыбраннаяНоменклатура);
        ОбъектДляОбновления.Записать();
    КонецЕсли;
КонецПроцедуры

Ключевые рекомендации по реализации

Проанализируем важные аспекты, которые помогут сделать решение профессиональным:

Подводя итог, можно сказать, что реализация «кнопки» — это лишь вершина айсберга. Основная работа заключается в настройке безопасного доступа к базе-источнику через HTTP-сервисы и корректной обработке полученных данных в базе-приемнике. Применяя описанные подходы, вы сможете создать надежный и удобный инструмент интеграции.

← На главную