🔥 Горящие вакансии
Все статьи

Расширения конфигурации 1С: нюансы и кейсы. Часть 1

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti

Расширения конфигурации 1С облегчают доработку и поддержку типовых решений на внедрениях. Для облачных вариантов это практически единственный способ доработки. Также на расширениях реализуются хотфиксы — быстрые исправления. В последних версиях платформы доступны функции, облегчающие создание «универсальных расширений», независимых от конфигурации. Например, интеграционный инструментарий, консоли, файловый менеджер.

Алексей, разработчик 1С в компании Neti, рассказывает о расширениях конфигурации и предупреждает о подводных камнях, с которыми может столкнуться каждый программист.

Краткая справка

Технология с довольно скудным функционалом появилась в 2015 году, в платформе 8.3.6.

Возможности расширений в типовых конфигурациях зависят от режима совместимости, который обычно ограничен версией БСП. На февраль 2021 года в основных линейках типовых конфигураций (ЕРП, БП, ЗУП) используется БСП версии 3.1.3 и режим совместимости 8.3.14.

В базовых версиях расширения не поддерживаются.

Расширения конфигурации 1С: нюансы и кейсы. Часть 1

Как это выглядит при разработке

Как это выглядит при разработке. Есть основная конфигурация и ее расширение (отдельная мини-конфигурация). Объекты бывают собственными, созданными в самой конфигурации или в расширении, и заимствованными, захваченными из основной конфигурации в расширение. Для заимствованных объектов можно переопределять ряд свойств.

Свойства объектов бывают контролируемые и модифицируемые. Контролируемые свойства менять нельзя — они должны совпадать у основной конфигурации и расширения, иначе расширение не запустится. Модифицируемые свойства можно изменять в расширении.

Возможности технологии

Расширения конфигурации 1С: нюансы и кейсы. Часть 1

В версии платформы 8.3.14, поддерживаемой современными типовыми решениями, широкий спектр возможностей для изменения. В частности, можно:

  • менять большое количество свойств заимствованных объектов;
  • создавать собственные справочники, документы и РС;
  • создавать и переопределять подсистемы и роли, шаблоны доступа;
  • переопределять практически все модули и формы;
  • версионировать расширения в хранилище.

Расширения конфигурации 1С: нюансы и кейсы. Часть 1

В последних версиях платформы появилось множество интересных возможностей. Отметим самые существенные:

  • в версии 8.3.13 — поддержка создания своих РН, РБ, РР и связанных объектов, функционал планов обмена;
  • в 8.3.14 — собственные параметры сеанса, что дает полноценное создание своих РЛС;
  • в 8.3.15 — появилась возможность заимствовать процедуры и функции с контролем изменения кода в основной конфигурации и в расширении — аннотация &ИзменениеИКонтроль;
  • в 8.3.16 — создание собственных констант, функциональных опций и критериев отбора, изменение состава заимствованных критериев отбора и функциональных опций;
  • в 8.3.17 — создание своих подписок на события и заимствование существующих;
  • в 8.3.18 — возможность расширения состава типов заимствованных объектов (с некоторыми исключениями, например, для определяемого типа).

Более подробно с описанием механизма расширений можно узнать в следующих материалах:

  • документация к платформе → https://its.1c.ru/db/v8316doc#bookmark:dev:TI000001513
  • книга «Расширения конфигураций. Адаптация прикладных решений с сохранением поддержки в облаках и на земле. Разработка в системе „1С:Предприятие 8.3“», Е. Ю. Хрусталева.
  • статья об эволюции возможностей расширений на Инфостарте — https://infostart.ru/1c/articles/1190788/

Кейс: переход на ЗУП 3.1 КОРП в федеральной торгово-производственной компании

Основной источник кейсов для этой статьи — проект перехода на ЗУП 3.1 КОРП с ЗУП 2.5 в крупной торгово-производственной компании. Особенности проекта:

  • холдинговая структура, состоящая из десятка юрлиц;
  • пять тысяч сотрудников;
  • существенная текучка кадров и большой объем документооборота;
  • управленческий учет, аналогичный ЗУП 2.5.

Важное требование заказчика: доработки конфигурации необходимо выполнить только  с помощью расширений. Удалось на 99%, 1% — ограничения технологии, о которых поговорим отдельно.

Проект выполнялся на версии платформы 8.3.13, 8.3.15, поэтому для некоторых кейсов сейчас доступны альтернативные решения.

Собственные структуры данных

Одна из первых задач любого внедрения — адаптация структуры хранимых данных к реалиям конкретного проекта, то есть расширение структуры данных.

С версии 8.3.11 платформа умеет через расширения создавать справочники, документы, регистры сведений. С 8.3.13 — РН, РБ, РР,  полноценные планы обмена, ПВХ, ПС, ПР.

Эти возможности широко применялись на проекте для расширения структуры данных. Расширялся реквизитный состав заимствованных справочников и документов, добавлялись собственные документы, регистры сведений, регистры накопления. Более того, на смежном проекте внедрения решения 1С:ERP в той же компании проектная команда решила не использовать дополнительные реквизиты вообще. В итоге для описания всей специфики номенклатуры в едином расширении было создано более 100 новых реквизитов, десяток перечислений и справочников-классификаторов. Результат по производительности не ставит каких-либо значимых вопросов, все работает так же быстро, как и типовая ERP.

Работать с расширенной структурой данных удобно. Она поддерживается конструктором запросов и в пользовательском режиме, и в конфигураторе.

Однако стоит учитывать ряд особенностей:

1. Тип ЛюбаяСсылка не содержит ссылок на собственные типы расширения. Механизмы, использующие этот тип, с данными расширения работать не будут.

2. Если в заимствованный справочник/документ добавлен новый реквизит, необходимо захватить в расширение роль, дающую права на этот справочник/документ, иначе реквизит останется без прав и не будет показан на форме.

Хранение новых реквизитов

Рассмотрим способ реализации хранения данных в расширении. Под новые справочники и документы создаются новые таблицы. Они помечаются суффиксом Х и порядковым номером. Например, Reference789X1.

Когда в заимствованный объект расширения добавляется новый реквизит, табличная часть или реквизит табличной части, в базе данных копируется весь набор таблиц объекта с теми же суффиксами в названиях. Например, для таблицы справочника Reference34 будет создана Reference34X1, для новой табличной части может быть создана таблица Reference34_VN34437X1.

Таблицы нового набора дополняются созданными в расширении структурами, после чего данные переносятся в новые таблицы. Дальше вся работа идет с этими таблицами в рамках разделителей текущей области.

Если расширение после изменения основной конфигурации не может быть запущено, оно переводится в неактивный режим. Новые данные не удаляются и не теряются. Для отключения расширения необходимо выбрать соответствующий пункт меню и подтвердить свои намерения в диалоге. Случайно это сделать сложно, поэтому опасения, которые возникли, когда возможность только появилась, сейчас напрасны.

Есть особенность в работе глобального метода ПолучитьСтруктуруХраненияБазыДанных(): в именах таблиц не показываются суффиксы, поэтому определить этим методом наличие или отсутствие расширенной структуры невозможно.

Расширения конфигурации 1С: нюансы и кейсы. Часть 1

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

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

Оставить коментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Отправить резюме

    Я согласен на обработку персональных данных в соответствии
    со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

    Отправить резюме

      Я согласен на обработку персональных данных в соответствии
      со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

      Pекомендовать друга

        Выбрать вакансию
        • Программист 1С
        • Консультант-аналитик 1С
        • Разработчик Android
        • Разработчик iOS
        • Разработчик React JS (middle)
        • Разработчик React Native (middle)
        • UX/UI дизайнер
        • Аналитик
        • QA engineer (тестировщик)
        • Разработчик PHP (senior)
        • Разработчик React JS
        • Разработчик Flutter
        • Разработчик React Native
        • Проекты для команды специалистов 1С
        • Проекты для специалистов 1С
        • Стажер-программист 1С
        • Ведущий консультант Microsoft Dynamics 365 Sales
        • Руководитель проектов Microsoft Dynamics 365 FO и AX 2012
        • Консультант Microsoft Dynamics AX на зарубежные проекты
        • Ведущий консультант Microsoft Dynamics 365 Finance and Operation
        • Разработчик PHP (фреймворк Yii2 или Laravel)
        • Разработчик Bitrix
        • Ведущий разработчик Microsoft Dynamics AX на зарубежные проекты
        • Разработчик PHP
        Я согласен на обработку персональных данных в соответствии
        со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

        Pекомендовать друга

          Выбрать вакансию
          • Программист 1С
          • Консультант-аналитик 1С
          • Разработчик Android
          • Разработчик iOS
          • Разработчик React JS (middle)
          • Разработчик React Native (middle)
          • UX/UI дизайнер
          • Аналитик
          • QA engineer (тестировщик)
          • Разработчик PHP (senior)
          • Разработчик React JS
          • Разработчик Flutter
          • Разработчик React Native
          • Проекты для команды специалистов 1С
          • Проекты для специалистов 1С
          • Стажер-программист 1С
          • Ведущий консультант Microsoft Dynamics 365 Sales
          • Руководитель проектов Microsoft Dynamics 365 FO и AX 2012
          • Консультант Microsoft Dynamics AX на зарубежные проекты
          • Ведущий консультант Microsoft Dynamics 365 Finance and Operation
          • Разработчик PHP (фреймворк Yii2 или Laravel)
          • Разработчик Bitrix
          • Ведущий разработчик Microsoft Dynamics AX на зарубежные проекты
          • Разработчик PHP
          Я согласен на обработку персональных данных в соответствии
          со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

          Спасибо!

          Мы получили ваше резюме. Менеджер свяжется с вами в течение трех дней

          Горящие вакансии