Skip to content
cccskills
FreePublished on GitHub

epf-bsp-add-command

Определить команду в БСП‑описании обработки (`СведенияОВнешнейОбработке`) — открытие формы, вызов клиентского/серверного метода, заполнение объекта и т.п. Используй когда нужно зарегистрировать команду в дополнительной обработке БСП

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md18.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

/epf-bsp-add-command — Добавление команды БСП

Добавляет команду в существующую функцию СведенияОВнешнейОбработке() и генерирует соответствующий обработчик.

Предварительно обработка должна быть инициализирована через /epf-bsp-init.

Usage

/epf-bsp-add-command <ProcessorName> <Идентификатор> [ТипКоманды] [Представление]
ПараметрОбязательныйПо умолчаниюОписание
ProcessorNameда—Имя обработки
Идентификаторда—Внутреннее имя команды (латиница)
ТипКомандынетиз вида обработкиТип запуска команды (см. маппинг ниже)
Представлениенет= ИдентификаторОтображаемое имя команды для пользователя
SrcDirнетsrcКаталог исходников

Маппинг типов команд

Пользователь может указать тип в свободной форме:

Пользователь пишетТипКомандыДоступен для вида обработки
открыть форму, формаТипКомандыОткрытиеФормы()любого
клиентский метод, на клиентеТипКомандыВызовКлиентскогоМетода()любого
серверный метод, на сервереТипКомандыВызовСерверногоМетода()любого
заполнение формы, заполнить формуТипКомандыЗаполнениеФормы()ЗаполнениеОбъекта
загрузка из файла, импорт из файлаТипКомандыЗагрузкаДанныхИзФайла()ДополнительнаяОбработка; в конфигурации должна быть подсистема «Загрузка данных из файла»

Других типов команд в БСП нет. Если запрошенный тип не подходит ни под одну строку — спроси пользователя, не придумывай метод. Если тип недоступен для вида обработки — сообщи об этом и не добавляй команду.

Если пользователь не указал тип — определи по виду обработки из существующего кода СведенияОВнешнейОбработке():

Вид обработки (из кода)ТипКоманды по умолчанию
ДополнительнаяОбработкаТипКомандыОткрытиеФормы()
ДополнительныйОтчетТипКомандыОткрытиеФормы()
ЗаполнениеОбъектаТипКомандыВызовСерверногоМетода()
ОтчетТипКомандыОткрытиеФормы()
ПечатнаяФормаТипКомандыВызовСерверногоМетода()
СозданиеСвязанныхОбъектовТипКомандыВызовСерверногоМетода()

Шаблон добавления команды

Вставляется в СведенияОВнешнейОбработке() перед строкой Возврат ПараметрыРегистрации:

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

Для печатных форм (ВидОбработкиПечатнаяФорма) добавь также:

	НоваяКоманда.Модификатор = "ПечатьMXL";

Для команды ЗагрузкаДанныхИзФайла Модификатор обязателен: полное имя справочника, в который загружаются данные. Если пользователь его не назвал — спроси.

	НоваяКоманда.Модификатор = "Справочник.Номенклатура";

Примечание: в отличие от первой команды (из /epf-bsp-init), дополнительные команды используют строковые литералы НСтр("ru = '...'") для представления и строку для идентификатора, а не Метаданные().

Шаблоны обработчиков

Шаблон выбирается по паре «тип команды × вид обработки».

ОткрытиеФормы

Обработчик не нужен: открывается основная форма обработки, идентификатор команды приходит в Параметры.ИдентификаторКоманды.

ВызовСерверногоМетода, ЗаполнениеФормы — если обработчик уже есть

Если процедура ВыполнитьКоманду уже существует в модуле объекта, добавь ветку перед КонецЕсли:

	ИначеЕсли ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}

ВызовСерверногоМетода, ЗаполнениеФормы — если обработчика нет

Процедура добавляется в модуль объекта. Сигнатура зависит от вида обработки.

ДополнительнаяОбработка, ДополнительныйОтчет (без ОбъектыНазначения):

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

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

ЗаполнениеОбъекта, Отчет:

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполненияКоманды) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

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

Для команды типа ЗаполнениеФормы обработчик тот же: ОбъектыНазначения = Неопределено, заполняемая форма передаётся в ПараметрыВыполненияКоманды.ЭтаФорма.

СозданиеСвязанныхОбъектов (ссылки созданных объектов добавляются в массив СозданныеОбъекты):

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты, ПараметрыВыполненияКоманды) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

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

ПечатнаяФорма — если процедура Печать уже есть

Добавь блок перед КонецПроцедуры:

	ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "{{Идентификатор}}");
	Если ПечатнаяФорма <> Неопределено Тогда
		ПечатнаяФорма.ТабличныйДокумент = Сформировать{{Идентификатор}}(МассивОбъектов, ОбъектыПечати);
		ПечатнаяФорма.СинонимМакета = НСтр("ru = '{{Представление}}'");
	КонецЕсли;

ПечатнаяФорма — если процедуры Печать нет

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

	ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "{{Идентификатор}}");
	Если ПечатнаяФорма <> Неопределено Тогда
		ПечатнаяФорма.ТабличныйДокумент = Сформировать{{Идентификатор}}(МассивОбъектов, ОбъектыПечати);
		ПечатнаяФорма.СинонимМакета = НСтр("ru = '{{Представление}}'");
	КонецЕсли;

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

ВызовКлиентскогоМетода

Добавляется в модуль основной формы (Forms/<FormName>/Ext/Form/Module.bsl). Имя и сигнатура зависят от вида обработки.

ДополнительнаяОбработка, ДополнительныйОтчет:

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

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

ЗаполнениеОбъекта, Отчет:

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

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

СозданиеСвязанныхОбъектов:

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

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

ПечатнаяФорма (процедура называется Печать, не ВыполнитьКоманду):

&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

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

Если процедура уже есть — добавь ветку ИначеЕсли.

ЗагрузкаДанныхИзФайла

В модуль объекта добавляются три экспортные процедуры. Если какая-то из них уже есть — добавь в неё ветку ИначеЕсли.

Процедура ОпределитьПараметрыЗагрузкиДанныхИзФайла(ИдентификаторКоманды, ПараметрыЗагрузки) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// ПараметрыЗагрузки.ИмяМакетаСШаблоном = "ЗагрузкаДанныхИзФайла";
		// ПараметрыЗагрузки.ОбязательныеКолонки.Добавить("<ИмяКолонки>");
	КонецЕсли;

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

Процедура СопоставитьЗагружаемыеДанныеИзФайла(ИдентификаторКоманды, ЗагружаемыеДанные) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Заполнить колонку СопоставленныйОбъект по данным из файла
	КонецЕсли;

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

Процедура ЗагрузитьИзФайла(ИдентификаторКоманды, ЗагружаемыеДанные, ПараметрыЗагрузки, Отказ) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Загрузка; для каждой строки заполнить РезультатСопоставленияСтроки
		// ("Создан", "Обновлен", "Пропущен") и при ошибке ОписаниеОшибки
	КонецЕсли;

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

Колонки загружаемых данных берутся из макета обработки ЗагрузкаДанныхИзФайла (имя макета можно переопределить через ПараметрыЗагрузки.ИмяМакетаСШаблоном). Если макета нет — предложи создать его через /template-add.

Инструкции

  1. Найди и прочитай ObjectModule.bsl через Glob: src/{{ProcessorName}}/Ext/ObjectModule.bsl
  2. Убедись что СведенияОВнешнейОбработке() существует. Если нет — предложи вызвать /epf-bsp-init
  3. Определи вид обработки из существующего кода (найди строку с ВидОбработки...())
  4. Вставь блок команды перед Возврат ПараметрыРегистрации
  5. Добавь обработчик по шаблону для типа команды и вида обработки из шага 3:
    • Для серверных обработчиков и ЗагрузкаДанныхИзФайла — в ObjectModule.bsl, область ПрограммныйИнтерфейс
    • Для клиентских обработчиков — в модуль основной формы (найти через Glob: src/{{ProcessorName}}/Forms/*/Ext/Form/Module.bsl)
  6. Если обработчик (ВыполнитьКоманду / Печать / процедуры загрузки) уже есть — добавь ветку, не создавай дубль процедуры
  7. Используй табы для отступов

Пример

Пользователь: /epf-bsp-add-command МояОбработка ЗаказПокупателя серверный "Заказ покупателя"

В СведенияОВнешнейОбработке() перед Возврат добавится:

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

И в существующую процедуру ВыполнитьКоманду добавится блок обработки.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из состава, настроить роли по умолчанию, поменять раскладку панелей, настроить начальную страницу

The English summary is being prepared. Showing the original description.

Nikolay-Shirokov/cc-1c-skills717Updated Oct 22, 2026

Анализ структуры конфигурации 1С — свойства, состав, счётчики объектов. Используй для обзора конфигурации — какие объекты есть, сколько их, какие настройки

The English summary is being prepared. Showing the original description.

Nikolay-Shirokov/cc-1c-skills717Updated Oct 22, 2026

Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля

The English summary is being prepared. Showing the original description.

Nikolay-Shirokov/cc-1c-skills717Updated Oct 22, 2026

Валидация конфигурации 1С. Используй после создания или модификации конфигурации для проверки корректности

The English summary is being prepared. Showing the original description.

Nikolay-Shirokov/cc-1c-skills717Updated Oct 22, 2026

Заимствование объектов из конфигурации 1С в расширение (CFE). Используй когда нужно перехватить метод, изменить форму или добавить реквизит к существующему объекту конфигурации

The English summary is being prepared. Showing the original description.

Nikolay-Shirokov/cc-1c-skills717Updated Oct 22, 2026

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

The English summary is being prepared. Showing the original description.

Nikolay-Shirokov/cc-1c-skills717Updated Oct 22, 2026

See all skills by Nikolay-Shirokov

Report a problem with this skill