Как сохранить расширение 1с в файл

Обновлено: 07.07.2024

Изучив опыт использования предыдущих версий программы, и учтя тот факт, что каким бы универсальным и всеобъемлющим не было конкретное решение, в конечном итоге в 90% случаев требуется его доработка под конечного пользователя. Разработчики 8 версии программы 1С реализовали несколько принципиально новых решений для минимизации необходимости изменения стандартных механизмов конфигураций:

  • Буквально с первых версий программы у элементов многих справочников появилась возможность создания дополнительных свойств и категорий с использованием соответствующего плана видов характеристики и регистра сведений;
  • Дополнительные печатные формы и формы заполнения табличных частей, равно как и дополнительные отчеты и обработки теперь могут вызываться из соответствующего справочника;
  • Обработка стандартных процедур объектов осуществляется не внесением изменений в модуль, а путем подписок на события;
  • И, наконец, с версии платформы 8.3.6 появились в 1С расширения конфигурации.

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

Немного теории

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

  1. Сравнивать типовую и имеющуюся структуру метаданных;
  2. В случае существенного отличия типовых элементов следить за корректным обновлением;
  3. Вносить соответствующие изменения после обновления.

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

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

Ситуации, в которых можно использовать расширения

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

  • Расширения могут работать с управляемыми формами;
  • Механизм поддерживает изменение и добавление существующих подсистем;
  • До выхода платформы 8.3.8 в расширении можно было только изменять существующие роли, после обновления они позволили добавлять новые, ограничивая доступ даже к объектам основной базы;
  • Существующий механизм позволяет по собственному желанию изменять командный интерфейс подсистем и основного раздела конфигурации;
  • Также этот инструментарий позволяет добавлять обработки и отчеты без внесения изменений в структуру базы;
  • В версии платформы 8.3.9.718 значительно переработан механизм диагностирования совместимости расширения и основной конфигурации.

Из вышесказанного становится понятно, что:

  1. При работе с обычными формами функционал расширений значительно ограничен;
  2. Хотя и облегчился процесс обновления основной конфигурации, однако возможность использования конкретного расширения (в том числе и в качестве тиражных решений) может быть серьезно ограничена как изменениями исходной структуры, так и несколькими параллельно используемыми расширениями;
  3. Использовать этот механизм целесообразно в тех случаях, когда есть необходимость дифференциации внешнего вида и функционала, используемыми различными пользователями, либо когда собственными силами производится доработка типовой конфигурации, находящейся на поддержке.

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

Создание расширения

В конфигураторе войдем в меню Конфигурация->Расширения конфигурации, откроется форма (Рис.1).

Именно здесь и можно создать новое расширение. Нажмем кнопку «Добавить». Вот и окно нового расширения (Рис.2)

Рассмотрим его элементы:

  • Имя – в отличие от других элементов конфигурации оно не создается по стандартам системы, т.е. может начинаться с цифры или символа, может содержать пробел;
  • Синоним – так же, как и для других элементов метаданных содержит выражение-представление объекта;
  • Префикс – позволяет идентифицировать обработчики событий в модуле формы, так как модуль формы основной конфигурации и модуль формы расширения объединяются при работе платформы в общем контексте (по умолчанию сначала отрабатывается расширение, то есть обработчики с префиксом, потом основные обработчики);
  • Назначение.

Список поля «Назначение» состоит из трех значений, опишем их в порядке исполнения:

  1. Исправление – расширения этого назначения создаются для корректировки незначительных неточностей и ошибок в заимствованных объектах;
  2. Адаптация – значение по умолчанию, расширения этого типа предназначены для подстройки типовых объектов под требования конкретного пользователя, (если расширение создавалось в версии программы ниже 8.3.9, после обновления платформы оно будет иметь именно это назначение);
  3. Дополнение – вносят совершенно новый функционал в типовое решение.

Запуск расширения

Двойной щелчок на имени расширения в окне из Рис.1, открывает окно расширения (Рис.3)

Как видим, оно представляет собой дерево, подобное дереву основной конфигурации. И здесь возникает один вопрос, в каких случаях следует заимствовать объект?

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

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

Если после обновления или в ходе разработки нового функционала возникнет несогласованность между типами данных расширения и конфигурации или еще какие-то ошибки система проинформирует об этом пользователя (Рис.4)


Окно в правом нижнем углу указывает на нестандартную ситуации при подключении расширения, двойной клик на нем открывает подробную информацию. В данном случае мы просто поменяли тип значения у реквизита ИНН со значения «Строка» на значение «Булево» у заимствованного объекта, однако гораздо чаще бывает обратная ситуация – когда обновление типового продукта приводит к изменению или ликвидации реквизита основной базы.

Отработав и протестировав расширение на копии базы, его можно выгрузить в отдельный файл, для этого в окне (Рис.5) необходимо нажать кнопку «Конфигурация», выбрать пункт «Сохранить в файл». В отличие от обычных файлов конфигурации, имеющих расширение cf, файл дополнения к конфигурации будет иметь маску *.cfe.


Как видно из вышеприведенного рисунка загрузить новый функционал можно из того же окна, а можно из основного окна программы.

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

Путь для подключения доработки выглядит следующим образом: Все функции->Стандартные->Управление расширениями конфигурации. Открывающееся окно представлено на Рис.6

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

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

Заимствование объектов и порядок срабатывания модулей

Для того, чтобы проследить последовательность выполнения обработчиков, мы включим возможность изменения нашей конфигурации и добавим в нее новую обработку, функционал которой будет заключаться только в одном – она будет сообщать, что её запустили из основной конфигурации, код на Рис.8.

Добавим эту обработку в расширение.

  • Правой кнопкой мышки активизируем контекстное меню формы обработки (Рис.9);

Мы имеем три типа вызова для имеющейся процедуры;

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

Оставим тип вызова в положении «Вызывать после» и добавим процедуру «Расш1_СообщитьПосле(Команда)» (Рис.11).

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

Механизм аннотаций

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

При добавлении каждого нового расширения система самостоятельно выстраивает порядок их исполнения.

Настройка порядка выполнения дополнительных модулей происходит исходя не только из времени добавления модуля (позже добавлено, позже исполняется), но и исходя из назначения доработки («Исполнение» всегда будет идти прежде «Адаптации»).

Кроме этого последовательность выполнения процедур добавляемых модулей можно регулировать с помощью аннотаций:

  • &Перед(«ИмяПроцедуры»);
  • &После(«ИмяПроцедуры»);
  • &Вместо(«ИмяПроцедуры»).

Как видно, их набор схож с тем, что был продемонстрирован в предыдущем разделе, сходен и функционал.

Так как заимствованный модуль и модуль-донор находятся в одном пространстве имен, никаких дополнительных определений для типовых переменных и методов в этом случае не нужно.

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

Для ликвидации такой «несправедливости» был создан метод ПродолжитьВызов().

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

Внесение изменений в модуль объекта

Механизм подписок на события очень сильно облегчил работу разработчикам, но было одно серьезное НО.

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

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

  • Выберем в конфигураторе «ПриемНаРаботу» и из его контекстного меню добавим его в наше расширение (кстати этот механизм имеет комбинацию горячих клавиш Альт+Шифт+Ф2);
  • После выбора соответствующего дополнения мы получим картинку, как на Рис.14;
  • Нас будет интересовать выделенный желтым цветом элемент «Модуль объекта», откроем его, активировав предварительно соответствующей галочкой (Рис.15);
  • Мы получим чистый лист программного модуля, обратим внимание на верхнюю панель, а точнее, на элемент, представленный на Рис.16, в ниспадающем списке здесь представлены события, которые можно обработать для данного объекта;

В некоторых случаях из-за установленной галочки «Безопасный режим», подключение расширения происходит с ошибкой.

Небольшой анонс

В ближайшее время фирма 1С планирует выпуск платформы 8.3.11, в которой они анонсировали возможность добавления собственных:

  • Документов;
  • Справочников;
  • Планов обмена;
  • Регистров сведений.

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

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

Механизм расширения конфигурации 1C

Как указано в описании: «Механизм расширения конфигурации – это специальный механизм, предназначенный для доработки расширяемой конфигурации без изменения этой конфигурации (в том числе без снятия с поддержки).»

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

При разработке расширений следует учитывать следующие факты:

Расширение может иметь одно из следующих назначений:

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

Ограничения использования расширений:

Расширения конфигурации не поддерживают создание следующих собственных объектов:

Не поддерживается расширение следующих объектов:

Не поддерживается добавление реквизитов и табличных частей для:

Не поддерживается изменение структуры регистров всех видов. Поддерживается только расширение состава регистраторов.

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

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

Как добавить расширение конфигурации 1С 8.3

Для создания расширения необходимо запустить 1С в режиме конфигуратора.

В конфигураторе необходимо зайти в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Далее нажмем кнопку «Добавить». Мы увидим диалоговое окно создания расширения:


Стоит отдельно выделить поле Назначение – необходимо выбрать его значение в зависимости от решаемой задачи – т.к. мы выполняем добавление объектов по требованиям конкретного заказчика – нам подойдет вариант «Адаптация».


Добавим в расширение справочник Категория должности по Классификатору Предприятия. Стоит обратить внимание, что в название всех объектов процедур и функций созданных в расширении, добавляется его префикс (в нашем случае Расш1_);


Разместим наш новый Справочник в Подсистеме «ШтатноеРасписание» для этого необходимо добавить эту подсистему в Расширение – Перейдем в дерево основной Конфигурации и нажмем правой кнопкой мыши на строке с нужной подсистемой и выберем пункт «Добавить в расширение».


Теперь мы можем управлять ее составом, добавим наш новый объект в подсистему.


Далее добавим в расширение Справочник Должности и добавим для него новый реквизит КатегорияДолжности с типом СправочникСсылка.Расш1_КатегорияДолжностиПоКлассификаторуПредприятия


Далее необходимо решить задачу с выводом реквизита КатегорияДолжности на форму Справочника Должности, реализовать это можно двумя способами:

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

Интерактивное изменение Формы в расширении.

Для того чтобы вывести Реквизит на форму интерактивно: необходимо добавить саму Форму «ФормаЭлемента» в расширение. Обращу ваше внимание на следующий момент – для того чтобы появилась возможность Интерактивного добавления Реквизита объекта на форму необходимо сам Объект тоже добавить в расширение.


Далее добавим новый Реквизит в подходящую Группу на форме.


Запустив 1С в режиме Предприятия убедимся, что новый Справочник появился в интерфейсе


А открыв элемент справочника Должности, увидим, что добавляемый реквизит Категория должности также в нужном месте.


Программное изменение Формы в расширении.

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

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


Перейдем в Общий модуль УправлениеСвойствами где находится данная процедура, и кликнем правой кнопкой мыши по процедуре ПриСозданииНаСервере. В выпадающем меню выберем пункт «Добавить в расширение»


Система предложит нам выбрать одну из аннотаций, подробнее о каждой из них рассмотрим в следующих публикациях, а сейчас выберем «Вызывать после»


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


Готовое расширение можно выгрузить в файл перейдя в конфигураторе в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». В открывшемся списке расширений по правой кнопкой мыши можно вызвать выпадающее меню, либо выбрать пункт командной панели «Конфигурация» и выбрать пункт «Сохранить конфигурацию в файл…». На выходе мы получим Файл типа *.cfe который можно передать заказчику.


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

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

Как делается эта выгрузка?

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

После этого у вас сразу же откроется новое окно, которое предлагает выбрать путь сохранения (Рисунок 2).

После этого зайдите в папку, в которую только что сохраняли и вы увидите следующие файлы и папки (Рисунок 3)

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

На рисунке 5 представлен файл, который отвечает за язык, с которым работает платформа. Так как, при установке у нас был один язык, то и тут он всего один.

Возникает вопрос? А какие же тут форматы и что это за форматы?

Конфигурация выгружается в набор файлов разного типа: xml, html, bin, bsl и так другие. Модули и текстовые макеты сохраняются в виде файлов TXT. Картинки из конфигурации сохраняются в виде файлов изображений (BMP, PNG и т.д.). Справочная информация выгружается в файлы HTML.

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

Данный механизм позволяет выгружать в файлы с расширением xml.

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

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

Как сделать загрузку?

Нужно воспользоваться обратно командой "Конфигурация-Загрузить конфигурацию из файлов". В новом окне выбрать папку, в которой находятся файлы конфигурации. Потом запускаете режим пользователя и проверяете все изменения.

Этот и другие механизмы помогают разработчикам разрабатывать свои программные продукты достаточно быстро и с удобством.

На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке.

2. Откройте расширения:

Гиперссылка "Расширения" 1С

Как подключить расширение 1С (.cfe)

Предупреждение безопасности при подключении расширения 1С

Подключайте только те расширения, которым доверяете! помимо того, что они могут содержать вирус, они могут еще и навредить данным в 1С!

Выбор файла расширения 1С

6. Дождитесь окончания подключения расширения:

Выполняется подготовка расширений к использованию

Статусы расширений 1С

8. После перезапуска 1С снова откройте список расширений и убедитесь, что кружок стал зеленым:

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

Безопасный режим в подключенных расширениях 1С

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

На этом все, теперь вы знаете как подключить расширение 1С к вашей базе. Ниже рассмотрим, что можно сделать с уже подключенным расширением.

Как обновить расширение 1С

Предупреждение безопасности при подключении расширения 1С

3. И выберите новый файл расширения:

Выбор файла нового расширения 1С

Вероятнее всего изменится версия расширения:

Новая версия расширения 1С

4. Перезапустите 1С:

Перезапуск 1С из списка расширений 1С

5. Убедитесь, что новая версия расширения корректно подключилась к вашей конфигурации:

Статус успешно подключенного расширения 1С

Как временно отключить расширение

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

Как удалить расширение

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

Предупреждение безопасности при удалении расширения 1С

3. Дождитесь завершения удаления расширения:

Ожидание изменений в расширениях 1С

4. Перезапустите 1С:

Перезапуск 1С после удаления расширения

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

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