Claude Skill

1c-bsp-registration

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

LLM Mart · 0 points · 15 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download Desko77-claude-code-skills-1c-skills_1c-bsp-registration-ac33656.zip · 3 KB
Part of desko77/claude-code-skills-1c — 48 skills

Install

skills CLI npx skills add https://github.com/Desko77/claude-code-skills-1c/tree/main/skills/1c-bsp-registration
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install desko77-claude-code-skills-1c@llmmart
Git git clone https://github.com/Desko77/claude-code-skills-1c.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole desko77/claude-code-skills-1c collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

/epf-bsp-init - Регистрация обработки в БСП

Добавляет в модуль объекта обработки функцию СведенияОВнешнейОбработке(), необходимую для регистрации в подсистеме "Дополнительные отчеты и обработки" БСП.

Usage

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

* Назначение обязательно для видов: ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов.

Маппинг вида обработки

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

Пользователь пишет Вид API-метод
доп обработка, обработка, глобальная ДополнительнаяОбработка ВидОбработкиДополнительнаяОбработка()
доп отчет, глобальный отчет ДополнительныйОтчет ВидОбработкиДополнительныйОтчет()
заполнение, заполнить ЗаполнениеОбъекта ВидОбработкиЗаполнениеОбъекта()
отчет (назначаемый, для объекта) Отчет ВидОбработкиОтчет()
печатная форма, печать ПечатнаяФорма ВидОбработкиПечатнаяФорма()
создание связанных объектов СозданиеСвязанныхОбъектов ВидОбработкиСозданиеСвязанныхОбъектов()

Тип команды по умолчанию

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

Шаблон: СведенияОВнешнейОбработке

Базовый шаблон - одинаковый для всех видов, отличаются только вызовы API-методов и условные секции.

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

	МетаданныеОбработки = Метаданные();

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

	{{СЕКЦИЯ_НАЗНАЧЕНИЕ}}

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

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

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

Подстановки

  • {{ВидОбработки}} - API-метод из таблицы маппинга вида
  • {{ТипКоманды}} - API-метод из таблицы типа команды по умолчанию

Условные секции

{{СЕКЦИЯ_НАЗНАЧЕНИЕ}} - только для назначаемых видов (ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов). Одна строка на каждый объект:

	ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату");

Формат имени объекта: ИмяКлассаОбъектаМетаданного.ИмяОбъекта (например Документ.СчетНаОплату, Справочник.Контрагенты).

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

{{СЕКЦИЯ_МОДИФИКАТОР}} - только для ПечатнаяФорма:

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

Для остальных видов - удалить вместе с пустой строкой.

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

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

Для ЗаполнениеОбъекта / СозданиеСвязанныхОбъектов

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

	// TODO: Реализация

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

Для ПечатнаяФорма

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

	// TODO: Реализация

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

Для ДополнительнаяОбработка / ДополнительныйОтчет (с ВызовСерверногоМетода)

Если пользователь явно выбрал серверный метод вместо открытия формы:

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

	// TODO: Реализация

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

Обрати внимание: у глобальных обработок нет параметра ОбъектыНазначения.

Инструкции

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

Пример

Пользователь: /epf-bsp-init МояОбработка печатная форма для Документ.СчетНаОплату

Результат в ObjectModule.bsl:

#Область ОписаниеПеременных

#КонецОбласти

#Область ПрограммныйИнтерфейс

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

	МетаданныеОбработки = Метаданные();

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

	ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату");

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

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

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

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

	// TODO: Реализация

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#КонецОбласти

Дальнейшие шаги

  • Добавить еще команду: /epf-bsp-add-command
  • Добавить форму: /epf-add-form
  • Добавить макет: /template-add
  • Собрать EPF: /epf-build
Files (claude-code-skills-1c)
  • evals
    • evals.json 3.9 KB
      {
        "skill_name": "1c-bsp-registration",
        "evals": [
          {
            "id": "register-print-form",
            "prompt": "Зарегистрируй обработку ФормированиеНакладных как форму печати для Документ.РеализацияТоваровУслуг. Исходники в src/.",
            "expected_output": "В src/ФормированиеНакладных/Ext/ObjectModule.bsl в регионе PublicInterface добавлена функция ExternalDataProcessorInfo() с видом PrintForm и назначением Document.РеализацияТоваровУслуг, а также процедура Print.",
            "expectations": [
              "В ObjectModule.bsl появилась функция ExternalDataProcessorInfo() Export в регионе PublicInterface",
              "Функция ExternalDataProcessorInfo содержит RegistrationParameters.Kind = AdditionalReportsAndDataProcessorsClientServer.ProcessorKindPrintForm()",
              "Функция ExternalDataProcessorInfo содержит RegistrationParameters.Purpose.Add(\"Document.РеализацияТоваровУслуг\")",
              "Поле NewCommand.Modifier = \"PrintMXL\" присутствует в функции",
              "Добавлена процедура Print(ObjectsArray, PrintFormsCollection, PrintObjects, OutputParameters) Export"
            ],
            "expect": [
              "ExternalDataProcessorInfo",
              "PrintForm",
              "Document\\.РеализацияТоваровУслуг"
            ],
            "forbid": [
              "AdditionalDataProcessor"
            ],
            "should_activate": true
          },
          {
            "id": "register-object-filling",
            "prompt": "Зарегистрируй обработку ЗаполнениеРеквизитов как заполнение объекта для Справочник.Контрагенты. Исходники в src/.",
            "expected_output": "В ObjectModule.bsl добавлена ExternalDataProcessorInfo() с видом ObjectFilling, назначением Catalog.Контрагенты и процедурой ExecuteCommand с параметром TargetObjects.",
            "expectations": [
              "Функция ExternalDataProcessorInfo содержит ProcessorKindObjectFilling()",
              "Функция ExternalDataProcessorInfo содержит RegistrationParameters.Purpose.Add(\"Catalog.Контрагенты\")",
              "NewCommand.Use содержит CommandTypeServerMethodCall()",
              "Добавлена процедура ExecuteCommand(CommandID, TargetObjects, CommandExecutionParameters) Export"
            ],
            "expect": [
              "ExternalDataProcessorInfo",
              "ObjectFilling",
              "Catalog\\.Контрагенты"
            ],
            "forbid": [
              "PrintForm"
            ],
            "should_activate": true
          },
          {
            "id": "register-global",
            "prompt": "Зарегистрируй обработку УниверсальнаяОбработка как дополнительную обработку (глобальная). Исходники в src/.",
            "expected_output": "В ObjectModule.bsl добавлена ExternalDataProcessorInfo() с видом AdditionalDataProcessor, без секции Purpose, с командой CommandTypeOpenForm().",
            "expectations": [
              "Функция ExternalDataProcessorInfo содержит ProcessorKindAdditionalDataProcessor()",
              "В функции ExternalDataProcessorInfo отсутствует вызов RegistrationParameters.Purpose.Add (глобальная обработка)",
              "NewCommand.Use содержит CommandTypeOpenForm()",
              "Поле NewCommand.Modifier отсутствует (не форма печати)"
            ],
            "expect": [
              "ExternalDataProcessorInfo",
              "AdditionalDataProcessor"
            ],
            "forbid": [
              "ObjectFilling",
              "PrintForm"
            ],
            "should_activate": true
          }
        ]
      }
      
  • SKILL.md 12.1 KB
    ---
    name: 1c-bsp-registration
    description: Добавить функцию регистрации БСП (СведенияОВнешнейОбработке) в модуль объекта обработки
    argument-hint: <ProcessorName> <Вид>
    allowed-tools:
      - Read
      - Edit
      - Glob
      - Grep
    ---
    
    # /epf-bsp-init - Регистрация обработки в БСП
    
    Добавляет в модуль объекта обработки функцию `СведенияОВнешнейОбработке()`, необходимую для регистрации в подсистеме "Дополнительные отчеты и обработки" БСП.
    
    ## Usage
    
    ```
    /epf-bsp-init <ProcessorName> <Вид> [Назначение...]
    ```
    
    | Параметр      | Обязательный | По умолчанию | Описание                                                |
    |---------------|:------------:|--------------|---------------------------------------------------------|
    | ProcessorName | да           | -            | Имя обработки (должна быть создана через `/epf-init`)   |
    | Вид           | да           | -            | Вид обработки (см. маппинг ниже)                        |
    | Назначение    | *            | -            | Объекты метаданных для назначаемых видов                 |
    | SrcDir        | нет          | `src`        | Каталог исходников                                      |
    
    \* Назначение обязательно для видов: ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов.
    
    ## Маппинг вида обработки
    
    Пользователь может указать вид в свободной форме. Определи нужный по контексту:
    
    | Пользователь пишет                        | Вид                        | API-метод                                    |
    |-------------------------------------------|----------------------------|----------------------------------------------|
    | доп обработка, обработка, глобальная      | ДополнительнаяОбработка    | `ВидОбработкиДополнительнаяОбработка()`      |
    | доп отчет, глобальный отчет              | ДополнительныйОтчет       | `ВидОбработкиДополнительныйОтчет()`         |
    | заполнение, заполнить                     | ЗаполнениеОбъекта          | `ВидОбработкиЗаполнениеОбъекта()`            |
    | отчет (назначаемый, для объекта)          | Отчет                      | `ВидОбработкиОтчет()`                        |
    | печатная форма, печать                    | ПечатнаяФорма              | `ВидОбработкиПечатнаяФорма()`                |
    | создание связанных объектов               | СозданиеСвязанныхОбъектов  | `ВидОбработкиСозданиеСвязанныхОбъектов()`    |
    
    ## Тип команды по умолчанию
    
    | Вид                        | ТипКоманды по умолчанию                   |
    |----------------------------|-------------------------------------------|
    | ДополнительнаяОбработка    | `ТипКомандыОткрытиеФормы()`               |
    | ДополнительныйОтчет       | `ТипКомандыОткрытиеФормы()`               |
    | ЗаполнениеОбъекта          | `ТипКомандыВызовСерверногоМетода()`        |
    | Отчет                      | `ТипКомандыОткрытиеФормы()`               |
    | ПечатнаяФорма              | `ТипКомандыВызовСерверногоМетода()`        |
    | СозданиеСвязанныхОбъектов  | `ТипКомандыВызовСерверногоМетода()`        |
    
    ## Шаблон: СведенияОВнешнейОбработке
    
    Базовый шаблон - одинаковый для всех видов, отличаются только вызовы API-методов и условные секции.
    
    ```bsl
    Функция СведенияОВнешнейОбработке() Экспорт
    
    	МетаданныеОбработки = Метаданные();
    
    	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    	ПараметрыРегистрации.Вид    = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ВидОбработки}};
    	ПараметрыРегистрации.Версия = "1.0";
    
    	{{СЕКЦИЯ_НАЗНАЧЕНИЕ}}
    
    	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    	НоваяКоманда.Представление        = МетаданныеОбработки.Представление();
    	НоваяКоманда.Идентификатор        = МетаданныеОбработки.Имя;
    	НоваяКоманда.Использование        = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ТипКоманды}};
    	НоваяКоманда.ПоказыватьОповещение = Ложь;
    	{{СЕКЦИЯ_МОДИФИКАТОР}}
    
    	Возврат ПараметрыРегистрации;
    
    КонецФункции
    ```
    
    ### Подстановки
    
    - `{{ВидОбработки}}` - API-метод из таблицы маппинга вида
    - `{{ТипКоманды}}` - API-метод из таблицы типа команды по умолчанию
    
    ### Условные секции
    
    **`{{СЕКЦИЯ_НАЗНАЧЕНИЕ}}`** - только для назначаемых видов (ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов). Одна строка на каждый объект:
    
    ```bsl
    	ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату");
    ```
    
    Формат имени объекта: `ИмяКлассаОбъектаМетаданного.ИмяОбъекта` (например `Документ.СчетНаОплату`, `Справочник.Контрагенты`).
    
    Для глобальных видов (ДополнительнаяОбработка, ДополнительныйОтчет) - секция не нужна, удалить вместе с пустой строкой.
    
    **`{{СЕКЦИЯ_МОДИФИКАТОР}}`** - только для ПечатнаяФорма:
    
    ```bsl
    	НоваяКоманда.Модификатор = "ПечатьMXL";
    ```
    
    Для остальных видов - удалить вместе с пустой строкой.
    
    ## Шаблоны серверных обработчиков
    
    Для видов с типом команды `ВызовСерверногоМетода` добавь соответствующую процедуру-обработчик в ту же область `ПрограммныйИнтерфейс`, после `СведенияОВнешнейОбработке`.
    
    ### Для ЗаполнениеОбъекта / СозданиеСвязанныхОбъектов
    
    ```bsl
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполненияКоманды) Экспорт
    
    	// TODO: Реализация
    
    КонецПроцедуры
    ```
    
    ### Для ПечатнаяФорма
    
    ```bsl
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    	// TODO: Реализация
    
    КонецПроцедуры
    ```
    
    ### Для ДополнительнаяОбработка / ДополнительныйОтчет (с ВызовСерверногоМетода)
    
    Если пользователь явно выбрал серверный метод вместо открытия формы:
    
    ```bsl
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
    
    	// TODO: Реализация
    
    КонецПроцедуры
    ```
    
    Обрати внимание: у глобальных обработок нет параметра `ОбъектыНазначения`.
    
    ## Инструкции
    
    1. Найди `ObjectModule.bsl` через Glob: `src/{{ProcessorName}}/Ext/ObjectModule.bsl`
    2. Прочитай файл
    3. Если `СведенияОВнешнейОбработке` уже есть - сообщи пользователю и не дублируй
    4. Если файл не найден - предложи сначала вызвать `/epf-init`
    5. Найди область `#Область ПрограммныйИнтерфейс` ... `#КонецОбласти`
    6. Вставь функцию `СведенияОВнешнейОбработке()` внутрь этой области
    7. Если вид требует серверный обработчик - вставь его тоже в эту область, после функции
    8. Используй табы для отступов (как в исходном файле)
    
    ## Пример
    
    Пользователь: `/epf-bsp-init МояОбработка печатная форма для Документ.СчетНаОплату`
    
    Результат в `ObjectModule.bsl`:
    
    ```bsl
    #Область ОписаниеПеременных
    
    #КонецОбласти
    
    #Область ПрограммныйИнтерфейс
    
    Функция СведенияОВнешнейОбработке() Экспорт
    
    	МетаданныеОбработки = Метаданные();
    
    	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    	ПараметрыРегистрации.Вид    = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    	ПараметрыРегистрации.Версия = "1.0";
    
    	ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату");
    
    	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    	НоваяКоманда.Представление        = МетаданныеОбработки.Представление();
    	НоваяКоманда.Идентификатор        = МетаданныеОбработки.Имя;
    	НоваяКоманда.Использование        = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    	НоваяКоманда.ПоказыватьОповещение = Ложь;
    	НоваяКоманда.Модификатор = "ПечатьMXL";
    
    	Возврат ПараметрыРегистрации;
    
    КонецФункции
    
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    	// TODO: Реализация
    
    КонецПроцедуры
    
    #КонецОбласти
    
    #Область СлужебныеПроцедурыИФункции
    
    #КонецОбласти
    ```
    
    ## Дальнейшие шаги
    
    - Добавить еще команду: `/epf-bsp-add-command`
    - Добавить форму: `/epf-add-form`
    - Добавить макет: `/template-add`
    - Собрать EPF: `/epf-build`
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related