1с как подключить расширение к хранилищу

Обновлено: 31.07.2024

С развитием платформы 1с всё чаще для изменения типовых конфигураций используют расширения.

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

Меню управления расширениями для базы можно найти сразу в нескольких местах:

Вот как выглядит сам диалог для администрирования расширений:

Посмотрим его в действии.

Я покажу всё на примере одной базы, но вы знайте - можно проделывать то же самое сразу для нужного количества баз (выделив их через Ctrl или отметив галками).

Перед нами типовая бухгалтерия 3.0 без установленных расширений:

Добавляем новое расширение

В диалоге администрирования расширений переходим на закладку "Добавить" и указываем файл с расширением, уточнив его настройки (безопасный режим, защита от опасных действий и так далее):

Выводим уже добавленные расширения

Переходим на закладку "Вывести", чтобы получить список расширений (вместе с их свойствами), которые уже добавлены в базу:

Проверяем работоспособность (применимость) добавленных расширений

Это можно сделать сразу для всех расширений запустив операцию на закладке "Проверить":

И если расширение содержит ошибки - мы увидим их в отчёте обновлятора.

Обновляем уже существующее расширение

Предположим, вышла новая версия расширения и его нужно обновить в базе (записать поверх существующего).

В этом нам поможет закладка "Обновить".

Из файла

Я указал файл с новой версией расширения и указал имя уже существующего расширения в конфигураторе ("ПисьмоВПоддержку").

Это имя необходимо, чтобы обновлятор смог найти уже существующее расширение в базе и загрузить в него новую версию из файла.

Часто оно совпадает с именем файла из которого мы загружаем расширение. Но так бывает не всегда.

Чтобы узнать имя расширения наверняка - зайдём в конфигуратор после его установки:

Вот его имя: "ПисьмоВПоддержку".

Причём если мы не выбираем конкретные значения опций (например, оставляем закрашенными синим цветом "Безопасный режим", "Защита от опасных действий" и так далее), то они не меняются при обновлении расширения (остаются как были до обновления).

Из хранилища

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

Расширение НЕ подключено к хранилищу

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

А также даст вам возможность обновляться из хранилища не только на последнюю версию конфигурации, но и на любую необходимую (заполнив поле "Версия", об этом ниже).

Расширение подключено к хранилищу

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

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

Внимание! Чтобы обойти это ограничение вы можете параметризовать имя пользователя хранилища. Для этого укажите значение "%base_name%" (вместо "updater" у нас в примере). В этом случае при выполнении скрипта в качестве имени пользователя хранилища будет подставляться имя базы в обновляторе (наша задача предварительно создать пользователей с такими именами в хранилище).

Стоит также учитывать, что при этом варианте обновление всегда будет происходить на последнюю версию конфигурации в хранилище, даже если вы заполните поле "Версия" (о нём рассказывается ниже).

Именно поэтому я рекомендую держать расширение подключенным к хранилищу только в базах для разработки, а рабочие (продуктовые) базы к хранилищу не подключать.

Это поле отвечает за номер версии конфигурации расширения из хранилища, которую мы получаем.

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

Не нужно путать эту версию с версией самого расширения. Речь идёт вот об этой колонке:

Внимание. Заполнять поле "версия" имеет смысл только в том случае, если обновляемое расширение не подключено к хранилищу. Если оно подключено к хранилищу, то будем всегда получать актуальную версию несмотря на настройки.

Выгружаем все расширения во внешнюю папку

Обновлятор может легко выгружать все (или конкретное) имеющиеся в базе расширения во внешнюю папку в виде отдельных файлов:

В нашем случае результат будет таким:

В xml-файле сохраняются все настройки расширения в базе (безопасный режим, защита от опасных действий и так далее).

Загружаем все расширения из внешней папки

Все выгруженные расширения (вместе с их настройками) можно легко загрузить назад в ту же или в другую базу:

Удаляем существующее расширение

Удалим расширение с именем "ПисьмоВПоддержку":

Выполняем эти же операции по расписанию

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

Предположим, что нам требуется обновлять расширение с именем "ПисьмоВПоддержку" из хранилища в 3 базах каждую ночь.

Для этого переходим на закладку "Скрипты" в главном окне обновлятора:

Из шаблонов открываем диалог "Управление расширениями" и настраиваем его для обновления нужного расширения из хранилища:

Нажимаем на кнопку "Обновить. " и в редактор вставляется текст скрипта с нужными параметрами:

Внимание! Обычно для каждой базы в хранилище создают отдельного пользователя. Сейчас в скрипте мы указали одного и того же пользователя с именем "updater", но ничего не мешает нам параметризовать это имя и выбрать, например, из параметров скрипта значение "%base_name%". В этом случае при выполнении скрипта в качестве имени пользователя хранилища будет подставляться имя базы в обновляторе (наша задача предварительно создать пользователей с такими именами в хранилище).

Сохраняем скрипт (кнопка "Сохранить" на нижней панеле):

Далее в настройки программы, кнопка "Расписание":

Здесь создаём новую задачу с типом операции "Запуск скрипта" и выбираем файл с нашим скриптом ("x:\work\update_extension.cmd"):

Настраиваем и сохраняем остальные параметры задачи:

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.


Большинство разработчиков 1С уклоняются от использования расширений конфигурации в проектах из-за того, что расширения не поддерживают групповую разработку. Поддерживать версионность файлов *.cfe самостоятельно в папках или с использованием системы управления версиями Git готовы не все.

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


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

Продемонстрируем, как задействовать возможность для создания хранилища расширений конфигурации.

Среда для тестирования нового функционала развернута на платформе «1С:Предприятие 8.3» (8.3.12.1714) с конфигурацией «1С:ERP Управление предприятием 2» (2.4.6.154) . Одно из обязательных условий – хранилище конфигурации у вас уже поднято.

Заходим в конфигуратор, подключаемся к основному хранилищу.


Переходим меню «Конфигурация» – «Расширения конфигурации» – выбираем расширение.


В верхней панели управления формы расширений выбираем подменю «Конфигурация» – «Хранилище конфигурации» – «Создать хранилище».


Выбираем каталог, отличный от основного хранилища конфигурации. C:\1C_repository\metiz_erp – путь хранилища конфигурации. C:\1C_repository\metiz_erp_cfe – путь хранилища расширения.


Указываем пользователя хранилища (пользователи в хранилище расширений свои, но можно назвать их так же, как пользователей основного хранилища).

Хранилище создано и подключено, далее работаем по стандартному методу хранилища конфигураций.



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



Блин, а если расширений несколько, то это нужно несколько отдельных хранилищ. Ждем, когда появится хранилище проекта, где не будет этого головняка. (1) да, нужно хранилище под каждое расширение. К количеству расширений в конфигурации нужно подходить рационально. Это всё таки механизм групповой разработки. Если с разными расширениями работают разные разработчики, то они могут подключать только свои расширения. Расширение подключается за секунду, не вижу здесь "головняка". Вижу "головняк", когда 20 разработчиков пытаются модифицировать расширение не подключенное к хранилищу, а администратору их нужно как-то разруливать. (1) Есть и другая сторона, когда есть расширение которое при необходимости подключается к ряду типовых конфигураций, например обработчик клиент-банка. Да и уровни доступа могут быть разные к хранилищам разных расширений и основной конфигурации.
При такой ситуации хранилище проекта неактуально, а отдельное хранилище для расширения - то что надо. Поэтому вряд ли разработчики будут делать общее хранилище проекта. Рациональный подход к количеству - 0 расширений. Потому, что пока сравнение-объединение с новой конфигурацией поставщика не учитывает расширения есть не иллюзорный вариант попасть и не заметить как. Что-то мне подсказывает, что не из-за невозможности групповой разработки разработчики обходят расширения, далеко не из-за этого. (4) Вы пробовали базу, где более 100 пользователей динамически обновить пару раз в подряд? Если да то поймете, что система проседает, если обновлять через расширения, то нет. Фиксить ошибки моментально в рабочей базе не через расширения - это уже прошлое десятилетие. Те разработчики, которые обходят расширения, скоро уйдут на второй план, как разработчики 1С 7.7 ушли. (6) Привет, Дима. Не ожидал тебя увидеть тут в качестве обозревателя =)
По поводу расширений есть негативный опыт. Не знаю как в новых версиях ERP, но в 2.1 при обновлении расширения - система пользователей старается принудительно выгнать из программы, чего не бывает с динамическим обновлением. Да и 1С оптимизировала обновление конфигурации, на новых платформах не должно быть сильно долго. Пиши еще! (6) вот полностью согласен. Вообще обычно достаточно раз поразгребать косяки динамического обновления, чтобы раз и навсегда забыть о нем. Я если честно, за исключением конфигураций на обычных формах, уже забыл, когда выгонял кого-то для применения каких-то доработок. Расширения недооцениваются, в основном незаслуженно, даже не попытавшись в них разобраться.

(6)Вы можете даже как молитву это повторять каждый Божий день, кривая приблуда от этого прямее не станет. По факту я расширения использую, скорее потому что это слегка предохраняет меня от того, что я когда-нибудь накачу очередной релиз, который частично или полностью сломает мои доработки-логически, или физически. Как примерно я раньше использовал файл, в котором хранил список изменений относительно типовой. Расширения раскрячивает после каждого обновления релиза, который затрагивает модифицированные объекты. И каждый раз я ловлю себя на мысли, что если бы в них хранились жизненно важные структурные изменения, это могло бы привести к неиллюзорным проблемам. Пока получается, что нужно структурные изменения делать в основной конфигурации, а изменения типа изменений на форме, отчетов и обработок можно делать в самом расширении. Но как только релиз затрагивает измененные объекты, можно сразу начинать искать глюки. Обновляя связь с буферной конфой, к которой подключено расширение волшебной кнопкой в расширении. Причем могут даже отваливаться унаследованные реквизиты. Они при этом выглядят как неактивные.
Это первый важный момент. И чем сложнее расширение и больше в нем модифицированных форм и объектов, тем больше приходится прокликивать после обновления и тем выше вероятность что-то пропустить, что кстати в режиме сравнения и обновления как раз пропустить сложно.

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

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

Про известные ограничения расширений я тактично умолчу. Ситуация сильно напоминает ситуацию с конвертациями. Не успели толком разобраться со 2, как приехала 3, абсолютно другая. А многие еще толком не разобрались с предыдущей по причине скудного количества разрозненных материалов по ней.

Рассмотрим настройки и работу с хранилищем конфигурации подробнее.

Внешний вид хранилища

Как работает хранилище 1С

Хранилище, по сути, это база данных, где хранятся изменения конфигурации. Каждый из разработчиков работает со своей информационной базой, подключенной к хранилищу. Рабочая база так же может быть подключена к хранилищу. Лучше всего общая схема изображена на этой картинке:

Захватить можно как объект целиком (рекурсивно), так и отдельно объект или формы.

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

После того как разработчик произвел какие-то действия над объектом, он обязан поместить доработки в хранилище. И тем самым снять пометку о том, что объект захвачен.

Как создать хранилище 1С

Создание хранилища

Как подключиться к хранилищу 1С

Подключение к хранилищу 1С

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

Администрирование хранилища конфигурации 1С

Администрирование хранилища

Как просмотреть историю хранилища 1С

История изменения объектов

В истории хранилища 1С можно увидеть, когда, кем и что было изменено.

Разработка с хранилищем 1С 8.3

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

    конфигурации из хранилища конфигурации 1С;
  • обновить статусы хранилища 1С;
  • захват в хранилище;
  • помещение в хранилище.

Остановимся подробнее на каждом действии:

Обновить статусы хранилища 1С

Производит получение последних статусов объектов (захвачен или нет).

Обновление конфигурации из хранилища конфигурации 1С

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

Захват в хранилище конфигурации 1С

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

Произвести захват можно, вызвав правой кнопкой контекстное меню у объекта метаданных:

Захват в хранилище 1С

В открывшемся окне можно установить некоторые настройки:

Объект в хранилище

Помещение в хранилище 1С

Поместить константу в хранилище

Как добавить новый объект в хранилище 1С

Хранилище настроек

Стандартное хранилище настроек платформы 1С

Данная функция появилась вместе с платформой 1С версии 8.2. Она позволяет сохранить любые данные настроек в разрезе объекта, определенной настройки 1С, пользователя.

  • Записать настройки можно при помощи метода ХранилищеОбщихНастроек.Сохранить().
  • Потом для прочтения нужно использовать ХранилищеОбщихНастроек.Загрузить() с теми же параметрами.
  • Если настройка стала не актуальной, её можно удалить методом ХранилищеОбщихНастроек.Удалить().
  • Также в разрезе объекта можно получить список сохраненных настроек с помощью метода ХранилищеОбщихНастроек.ПолучитьСписок().

Сохраненные настройки хранятся в отдельной сводной таблице БД.

Хранилище настроек, создаваемое в конфигураторе

Хранилище настроек может создать и сам разработчик в конфигураторе 1С:

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

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

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

Хранилища в свойствах конфигурации

Создание своих настроек может понадобиться в том случае, если:

  • необходима миграции настроек между базами данных;
  • необходим ссылочный контроль данных настроек.

Использование хранилищ настроек в отчетах и обработках 1С

Хранилище настроек можно указать для определенного отчета из конфигурации, указывается в свойствах отчета:

Настройки для отчетов

Флаг Сохраняемые данные данные позволяет автоматически сохранить значение при закрытии обработки:

Флаг сохраняемые данные

Читайте также: