Как интегрировать Библиотеку интеграции с МДЛП в типовую 1С:Бухгалтерию предприятия 3.0?

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

Интеграция специализированных библиотек 1С, таких как Библиотека интеграции с МДЛП (БИМ), в типовые конфигурации (например, «1С:Бухгалтерия предприятия 3.0») — задача нетривиальная. Многие разработчики, особенно не имеющие глубокого опыта работы со стандартами Библиотеки стандартных подсистем (БСП), пытаются выполнить интеграцию путем обычного сравнения и объединения конфигураций в конфигураторе. В результате они сталкиваются с целым рядом проблем: незаполненными или поврежденными метаданными, отсутствием новых интерфейсов в пользовательском режиме, конфликтами версий и сбоями в механизмах обновления ИБ.

В этой статье мы подробно разберем, почему возникают технические ошибки при ручном объединении, как устроена архитектура интеграции подсистем на БСП, а также рассмотрим альтернативные и более безопасные пути автоматизации работы с МДЛП в организациях, использующих типовую 1С:Бухгалтерию.

Почему ручное объединение конфигураций «лоб в лоб» приводит к ошибкам?

Рассмотрим типичную ситуацию, описанную автором темы. При попытке объединить БП 3.0 и БИМ в режиме сравнения-объединения конфигураций часть объектов (например, регистр сведений РабочиеМестаМДЛП) создается без измерений и ресурсов, а в пользовательском режиме новые функции не появляются, хотя заголовок системы меняется на наименование интегрируемой библиотеки.

Выясним главные причины такого поведения платформы:

  1. Отсутствие программной регистрации подсистемы в БСП. Архитектура современных конфигураций 1С построена так, что простого наличия объектов метаданных в дереве конфигурации недостаточно для их работы. При запуске системы механизмы БСП обращаются к специальным переопределяемым модулям для инициализации подсистем. Если новая библиотека не зарегистрирована в программном коде, система не запустит обработчики обновления информационной базы, не создаст записи в служебных справочниках и не инициализирует структуру хранения данных. Именно поэтому служебный регистр РабочиеМестаМДЛП остался пустым и неработоспособным.
  2. Конфликт версий БСП и БПО. Библиотека МДЛП содержит в себе собственные версии БСП (Библиотеки стандартных подсистем) и БПО (Библиотеки подключаемого оборудования). Типовая конфигурация БП 3.0 также базируется на этих библиотеках, но, как правило, более свежих версий. При «слепом» объединении конфигураций происходит затирание новых версий БСП/БПО в БП 3.0 старыми версиями из дистрибутива БИМ. Это приводит к нарушению логики работы всей базы данных и потере поддержки типовой конфигурации.
  3. Смешение основных конфигураций. Изменение заголовка системы на «Библиотека интеграции с МДЛП» свидетельствует о том, что при объединении были некорректно перенесены свойства корневого объекта конфигурации. Настройка поддержки была нарушена, и база частично потеряла связь с конфигурацией-поставщиком БП 3.0.

Как правильно зарегистрировать подсистему в БСП программно

Если вы все же приняли решение внедрять Библиотеку интеграции с МДЛП непосредственно в код конфигурации БП 3.0, необходимо строго следовать стандартам внедрения БСП. Разберем по шагам, какие программные изменения требуются для корректной инициализации подсистемы.

После переноса объектов метаданных через сравнение и объединение (исключая замену общих модулей БСП БП 3.0 старыми версиями) необходимо зарегистрировать библиотеку в общем модуле ПодсистемыКонфигурацииПереопределяемый.

Найдем процедуру ПриДобавленииПодсистем и проанализируем её структуру. Нам необходимо добавить туда описание интеграционного контура МДЛП, чтобы конфигурация поняла, что в ее составе появился новый программный модуль. Пример добавления кода выглядит следующим образом:


Процедура ПриДобавленииПодсистем(СписокПодсистем) Экспорт
    
    // Регистрируем основную БСП и другие имеющиеся библиотеки
    // ...
    
    // Регистрируем Библиотеку интеграции с МДЛП
    СписокПодсистем.Добавить("ОбновлениеИнформационнойБазыМДЛП");
    
КонецПроцедуры

Затем необходимо прописать вызовы обработчиков в модуле ОбщегоНазначенияКлиентПереопределяемый в процедуре ПослеНачалаРаботыСистемы, чтобы запустить регламентные процессы обмена на клиенте:


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

Регистрация в переопределяемых модулях заставит систему при первом запуске в режиме «Предприятие» запустить процедуру обновления ИБ, которая создаст структуру регистра РабочиеМестаМДЛП, заполнит необходимые константы и справочники по умолчанию, а также предоставит доступ к интерфейсу МДЛП пользователям с соответствующими ролями.

Отраслевая специфика: почему МДЛП нет в типовой БП 3.0 «из коробки»?

Проанализируем политику фирмы 1С по наполнению типовых конфигураций. В стандартную «Бухгалтерию предприятия 3.0» встроена поддержка ИС МП («Честный Знак») для общей маркировки потребительских товаров (обувь, одежда, табак, парфюмерия, молочная продукция). Однако полноценная интеграция с ФГИС МДЛП в БП 3.0 отсутствует.

Это связано с тем, что учет медицинских препаратов имеет жесткую отраслевую специфику (серии, сроки годности, учет по дозировкам, особые единицы измерения, работа с рецептурными бланками). Разработчики 1С поставляют функционал МДЛП только в специализированных отраслевых решениях:

Попытка ручного внедрения БИМ в стандартную бухгалтерию превратит базу в «кастомный долгострой», который будет крайне сложно и дорого обновлять при выходе новых релизов от 1С.

Современные альтернативные варианты интеграции (без изменения кода БП 3.0)

Рассмотрим, как решить задачу автоматизации обмена с МДЛП без снятия БП 3.0 с поддержки и ручного встраивания кода.

Вариант 1. Использование механизма расширений (Extensions)

Платформа 1С v8.3 позволяет кастомизировать систему с помощью расширений конфигурации. На рынке существуют готовые коммерческие модули и расширения от независимых разработчиков и партнеров 1С. Такие расширения подключаются в режиме «1С:Предприятие» за несколько минут, не требуют изменения основной конфигурации и автоматически встраивают контур МДЛП в документы поступления и реализации типовой БП 3.0. Основная конфигурация при этом остается на полной поддержке.

Вариант 2. Специализированное приложение «1С:МДЛП»

Для небольших медицинских кабинетов, аптек, стоматологий и санаториев фирма 1С создала отдельное локальное и облачное приложение «1С:МДЛП». Схема работы выглядит следующим образом:

Этот вариант является самым надежным и дешевым с точки зрения сопровождения IT-инфраструктуры организации.

Вариант 3. Использование веб-сервиса «Фарма.Просто»

Для организаций с минимальным объемом оборота маркированных лекарств нет необходимости автоматизировать обмен непосредственно в учетной системе. Оператор ЦРПТ предоставляет бесплатный личный кабинет и приложение «Фарма.Просто». Вы можете выгружать документы поступления или реализации из 1С в формате XML и загружать их в личный кабинет «Фарма.Просто» вручную для подписания и отправки в государственную систему.

Разбор схем обмена данными с МДЛП: Прямой и Обратный акцепт

При проектировании обмена с МДЛП (будь то через встроенную библиотеку или собственную обработку API) критически важно понимать бизнес-логику взаимодействия контрагентов.

Разберем две основные схемы движения документов при поступлении лекарственных средств:

  1. Прямая схема акцептования (прямой акцепт). При этой схеме грузоотправитель (поставщик) первым отправляет сведения об отгрузке в МДЛП (указывая номера упаковок SGTIN или коробов SSCC). Покупатель в личном кабинете или через 1С видит это уведомление, проверяет соответствие кодов физически поступившему товару путем сканирования и отправляет подтверждение приемки. До подтверждения покупателем товар числится «в пути» и не может быть списан или реализован.
  2. Обратная схема акцептования (обратный акцепт). Эта схема чаще всего используется в розничных аптеках и медицинских учреждениях. При обратном акцепте покупатель (получатель) товара первым сканирует поступившие упаковки и отправляет сведения о приемке во ФГИС МДЛП. Система МДЛП направляет запрос поставщику на подтверждение этой сделки. Поставщик подтверждает факт отгрузки, после чего лекарственные средства переходят на баланс покупателя. Обратная схема позволяет покупателю не ждать, пока дистрибьютор отправит документы в систему маркировки, и быстрее оприходовать товар.

Ниже приведена упрощенная схема обработки документов в 1С при обратном акцепте:

Криптография и работа с Регистраторами выбытия (РВ)

Некоторые разработчики на форумах предлагают отказаться от использования типовой библиотеки МДЛП и написать собственную обработку обмена, вызывая сторонние утилиты через консоль (например, утилиту cryptcp от КриптоПро). Проанализируем, почему этот путь сопряжен со значительными трудностями:

Таким образом, попытка обойти стандартные решения 1С и написать обмен с МДЛП «с нуля» оправдана только в очень редких случаях (например, при автоматизации работы на старых версиях платформы 1С 7.7). Во всех остальных случаях для баз на платформе 1С 8.3 оптимальным решением является использование официальной Библиотеки интеграции с МДЛП (внедренной по стандартам БСП) либо переход на специализированную конфигурацию «1С:МДЛП» с последующей синхронизацией данных с вашей рабочей «1С:Бухгалтерией 3.0».

← На главную