Свой функционал в типовой 1С без потери обновлений: шесть рабочих способов

· 9 мин

Содержание

Добавить функции в 1С 8.3 проще всего через расширение конфигурации (Конфигурация → Расширения конфигурации в Конфигураторе): типовая конфигурация остаётся на поддержке и обновляется как раньше. Для разовой задачи хватит внешней обработки .epf, а для кнопки в форме документа — дополнительной обработки, подключённой в режиме Предприятия.

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

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

Главный вопрос — что будет с обновлениями. Чем глубже правка, тем дороже каждое следующее обновление релиза.

СпособКогда подходитВлияние на обновленияНужен Конфигуратор
Расширение конфигурации (.cfe)Новые кнопки, реквизиты, проверки, изменение поведения типовых объектовМинимальное, расширение живёт отдельноДля разработки — да, для подключения — нет
Внешняя обработка или отчёт (.epf, .erf)Разовые задачи, выгрузки, исправление данныхНикакогоТолько для разработки
Дополнительные отчёты и обработкиПечатные формы, заполнение, команды в списках и документахНикакогоТолько для разработки
Правка конфигурацииГлубокая переработка, которую нельзя сделать расширениемВысокое: каждое обновление — сравнение и объединениеДа
Общие модулиПовторно используемый код для любых из способов вышеЗависит от того, где модуль лежитДа
COM, командная строка, HTTPСвязь с внешними программами, автоматический запускНикакогоНет, кроме подготовки

Правило практика: всё, что можно сделать расширением или дополнительной обработкой, делайте ими. Снимать конфигурацию с поддержки стоит в последнюю очередь.

Что вы хотите добавить в 1С?

Расширение конфигурации: функции без снятия с поддержки

Расширения появились в платформе 8.3.6 и с тех пор стали основным способом дорабатывать типовые решения. Расширение — отдельный набор объектов, который платформа «накладывает» на основную конфигурацию при запуске.

Что умеет расширение

  • ➕ добавлять новые справочники, документы, регистры, отчёты, обработки, общие модули, роли;
  • 🧩 добавлять реквизиты и табличные части к типовым объектам;
  • 🖱 добавлять элементы и команды на типовые формы;
  • 🔁 менять поведение типовых процедур через аннотации;
  • 🔐 давать права на новые объекты через собственные роли.

Как создать расширение пошагово

  1. Сделайте резервную копию: Администрирование → Выгрузить информационную базу в Конфигураторе, файл .dt.
  2. Откройте Конфигурация → Расширения конфигурации и нажмите «Добавить».
  3. Задайте имя, префикс (например, мр_) и назначение: «Исправление», «Адаптация» или «Дополнение».
  4. Откройте дерево расширения. Чтобы изменить типовой объект, найдите его в основной конфигурации и через контекстное меню выберите «Добавить в расширение» — объект станет заимствованным.
  5. Добавьте реквизиты, элементы формы, код.
  6. Выполните «Обновить конфигурацию базы данных» для расширения (F7 в окне расширения).
  7. Запустите Предприятие и проверьте результат.

Аннотации для изменения типового кода

В модуле заимствованного объекта процедуру не переписывают целиком, а перехватывают:

АннотацияЧто делает
&Перед("Имя")Ваш код выполняется до типового
&После("Имя")Ваш код выполняется после типового
&Вместо("Имя")Ваш код заменяет типовой; вызвать исходный можно через ПродолжитьВызов()
&ИзменениеИКонтроль("Имя")Копия типовой процедуры с пометками вставок и удалений; при обновлении платформа сообщит, если исходник изменился

Пример: запретить проведение реализации без комментария.

&После("ОбработкаПроверкиЗаполнения")
Процедура мр_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

	Если ПустаяСтрока(Комментарий) Тогда
		ОбщегоНазначения.СообщитьПользователю(
			"Заполните комментарий: без него документ не проводится.", ЭтотОбъект, "Комментарий", , Отказ);
	КонецЕсли;

КонецПроцедуры

ОбщегоНазначения.СообщитьПользователю есть в конфигурациях на БСП: БП 3.0, ЗУП 3.1, УТ 11. В нетиповых решениях используйте Сообщение = Новый СообщениеПользователю.

Подключение готового расширения без Конфигуратора

Если расширение пришло файлом .cfe, в конфигурациях на БСП его можно загрузить из режима Предприятия: Администрирование → Печатные формы, отчеты и обработки → Расширения. Там же расширение включают и отключают.

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

Внешние обработки и отчёты: самый быстрый путь

Внешняя обработка — файл .epf (отчёт — .erf), который хранится вне базы. Его пишут в Конфигураторе через Файл → Новый → Внешняя обработка, сохраняют на диск и открывают в Предприятии.

Когда это лучший выбор:

  • 📥 загрузка справочника из Excel один раз;
  • 🧹 массовое исправление реквизитов после ошибки обмена;
  • 📊 отчёт для аудитора, который больше не понадобится;
  • 🧪 проверка гипотезы перед тем, как оформлять её расширением.

Открыть файл в Предприятии: главное меню (кнопка с тремя полосками в левом верхнем углу) → Файл → Открыть.

Если вместо формы появляется сообщение о нарушении прав или предупреждение о безопасности, причин обычно две:

  1. У пользователя нет права «Интерактивное открытие внешних обработок» (или «…отчетов»). Его дают в профиле групп доступа — поручите это администратору базы.
  2. В типовой конфигурации включена защита от опасных действий: программа спросит подтверждение или запретит открытие произвольных файлов. Тогда регистрируйте файл как дополнительную обработку — об этом следующий раздел.

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

Дополнительные отчёты и обработки в режиме Предприятия

Это механизм Библиотеки стандартных подсистем. Тот же файл .epf регистрируется в базе и превращается в команду: кнопку в документе, пункт меню «Печать», команду в разделе.

Включение механизма

  1. Администрирование → Печатные формы, отчеты и обработки.
  2. Установите флажок «Дополнительные отчеты и обработки».
  3. Перейдите по ссылке «Дополнительные отчеты и обработки» и нажмите «Добавить из файла».

Что должно быть в файле

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

Функция СведенияОВнешнейОбработке() Экспорт

	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = "1.0";
	ПараметрыРегистрации.БезопасныйРежим = Истина;

	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = "Проверить контрагентов";
	Команда.Идентификатор = "ПроверитьКонтрагентов";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	Команда.ПоказыватьОповещение = Ложь;

	Возврат ПараметрыРегистрации;

КонецФункции

Виды и где они появляются

ВидГде появится команда
Дополнительная обработкаВ разделе программы, в группе дополнительных обработок
Дополнительный отчётВ разделе программы, среди дополнительных отчётов
Печатная формаВ меню «Печать» выбранных документов или справочников
Заполнение объектаВ форме объекта, команда заполнения
Отчёт (связанный)В форме объекта, в группе отчётов
Создание связанных объектовВ форме объекта, команда «Создать на основании»

После загрузки откройте карточку обработки, на вкладке «Размещение» укажите разделы или объекты, а в табличной части команд — пользователей, которым команда доступна. Без этого кнопку никто не увидит.

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

Правка конфигурации в Конфигураторе

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

Как включить изменение типовой конфигурации

  1. Выгрузите базу в .dt и сохраните файл конфигурации .cf (Конфигурация → Сохранить конфигурацию в файл).
  2. Откройте Конфигурация → Поддержка → Настройка поддержки.
  3. Нажмите «Включить возможность изменения» и подтвердите.
  4. Для объектов, которые будете менять, задайте правило «Объект поставщика редактируется с сохранением поддержки».
  5. Внесите изменения и выполните Конфигурация → Обновить конфигурацию базы данных (F7).

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

Цена такого пути

  • 🔄 каждое обновление релиза идёт через сравнение и объединение конфигураций, вручную;
  • 👨‍💻 нужен программист, который помнит, что и зачем меняли;
  • 🧾 изменения надо документировать: комментарии с датой и автором прямо в коде.

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

Общие модули и глобальные функции

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

Флажки свойств, которые решают всё

СвойствоЧто даёт
СерверКод выполняется на сервере 1С
Клиент (управляемое приложение)Код выполняется на клиенте
Вызов сервераЭкспортные функции можно вызывать с клиента
Внешнее соединениеМодуль доступен при COM-подключении
ГлобальныйПроцедуры вызываются без имени модуля
ПривилегированныйКод выполняется без проверки прав
Повторное использование возвращаемых значенийРезультат функции кешируется на время вызова или сеанса

Пример серверного модуля мр_Сервисные с функцией, доступной из любой обработки:

Функция ОстатокПоСчету(Счет, НаДату) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ЕСТЬNULL(СУММА(Остатки.СуммаОстатокДт - Остатки.СуммаОстатокКт), 0) КАК Сальдо
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный.Остатки(&НаДату, Счет = &Счет, , ) КАК Остатки";
	Запрос.УстановитьПараметр("Счет", Счет);
	Запрос.УстановитьПараметр("НаДату", НаДату);

	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	Возврат Выборка.Сальдо;

КонецФункции

Вызов из другого места: Сальдо = мр_Сервисные.ОстатокПоСчету(Счет, ТекущаяДатаСеанса());. Пример написан под регистр Хозрасчетный в БП 3.0.

Флажок «Глобальный» ставьте редко. Глобальные клиентские модули компилируются при старте программы и замедляют запуск, а имена их процедур легко пересекаются с типовыми.

Автоматизация: COM-соединение, командная строка, HTTP

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

COM-соединение

Компонента V83.COMConnector даёт внешней программе доступ к объектам базы. Перед использованием её регистрируют от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1586\bin\comcntr.dll"

Путь подставьте свой, номер платформы — ваш установленный. Разрядность скрипта и comcntr.dll должна совпадать.

Пример на PowerShell для файловой базы:

$connector = New-Object -ComObject "V83.COMConnector"
$base = $connector.Connect('File="C:\Bases\Buh";Usr="Робот";Pwd="пароль"')
$version = $base.Метаданные.Версия
Write-Output "Версия конфигурации: $version"

Свою функцию вызывают так же, через имя модуля: $base.мр_Сервисные.ИмяФункции(). Через COM доступны только общие модули с флажком «Внешнее соединение». Для клиент-серверной базы строка подключения выглядит как Srvr="server1c";Ref="buh";Usr=...;Pwd=....

Командная строка

Платформа запускает внешнюю обработку сразу при входе:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" ENTERPRISE /F"C:\Bases\Buh" /N"Робот" /P"пароль" /Execute"C:\Scripts\obmen.epf"

Такую строку ставят в планировщик заданий Windows для ночных выгрузок. В пакетном режиме Конфигуратора (DESIGNER) так же загружают расширения и обновляют базу, полный список параметров — в справке платформы.

HTTP-сервисы и OData

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

Перед вводом новой функции в рабочую базу
Выполнено: 0 / 5

Частые вопросы

Слетит ли расширение после обновления типовой конфигурации?
Нет, оно остаётся подключённым. Но если в новом релизе изменился заимствованный объект или перехваченная процедура, платформа выдаст предупреждение при запуске. Тогда расширение нужно поправить в Конфигураторе.
Можно ли добавить функции в базу 1С:Фреш или другое облако?
Да, но только расширениями и дополнительными обработками в безопасном режиме. Конфигуратор в облаке недоступен, а файлы обычно проходят проверку провайдера.
Чем расширение отличается от дополнительной обработки?
Обработка добавляет команды, но не меняет типовые объекты. Расширение может добавить реквизит в документ, изменить форму и перехватить типовой код.
Сколько расширений можно подключить к одной базе?
Жёсткого лимита для практики нет, но каждое расширение увеличивает время запуска. Если два расширения перехватывают одну процедуру, порядок их срабатывания нужно проверять отдельно.
Нужна ли отдельная лицензия на расширения или COM-подключение?
Отдельной лицензии на сами механизмы нет. COM-соединение с клиент-серверной базой занимает сеанс, и для него нужна свободная клиентская лицензия.