Claude Skill

1c-form-patterns

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

LLM Mart · 0 points · 10 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-form-patterns-eb281b4.zip · 5 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-form-patterns
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

/form-patterns - паттерны компоновки форм

Справочник типовых паттернов дизайна управляемых форм 1С. Вызывай перед проектированием формы через /form-compile, когда требования пользователя не детализируют расположение элементов.

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


Архетипы форм

Форма документа

Шапка (horizontal, 2 колонки)
├─ Левая (vertical): НомерДата (H: Номер + Дата "от"), Контрагент, Договор
├─ Правая (vertical): Организация, Подразделение, ЦеныИВалюта (надпись-ссылка)
Страницы (pages)
├─ Товары: таблица Объект.Товары
├─ Услуги: таблица Объект.Услуги (опционально)
└─ Дополнительно: прочие реквизиты
Подвал (vertical)
├─ Итоги (horizontal): Всего, НДС, Скидка
└─ КомментарийОтветственный (horizontal): Комментарий + Ответственный

События: OnCreateAtServer, OnReadAtServer, OnOpen, BeforeWriteAtServer, AfterWriteAtServer, AfterWrite, NotificationProcessing Свойства: autoTitle=false

Форма обработки (DataProcessor)

Параметры (vertical)
├─ Группа полей ввода (Организация, Период, режимы работы)
├─ Информационные надписи (label, hyperlink)
Рабочая область
├─ Таблица данных или Pages с вкладками
Кнопки действий
├─ Выполнить / Применить (defaultButton)
├─ Закрыть (stdCommand: Close)

События: OnCreateAtServer, OnOpen, NotificationProcessing Свойства: windowOpeningMode=LockOwnerWindow (если диалог), autoTitle=false

Форма списка

Отборы (group: alwaysHorizontal)
├─ ГруппаОтбор[Поле] (H): Флажок + Поле ввода (для каждого фильтра)
Список (table, DynamicList)
├─ Колонки: labelField (не input - данные только для чтения)

События: OnCreateAtServer, OnOpen, NotificationProcessing, OnLoadDataFromSettingsAtServer Свойства: autoSaveDataInSettings=Use Фильтры: пара реквизитов на каждый - Отбор[Поле] (значение) + Отбор[Поле]Использование (boolean) Ссылка (Ref) в запросе: добавлять элемент-колонку Ссылка в конец таблицы списка с userVisible: false. Ссылка нужна пользователю для самостоятельного вывода реквизитов ссылки, которые не были предусмотрены разработчиком, но не для отображения. Исключение: если явно требуется показать ссылку в колонках - выводить в место, указанное в ТЗ (или в конец, если не указано), без userVisible: false.

Форма элемента справочника

Простая:

ГруппаРеквизитов (horizontal)
├─ Наименование -> Объект.Description
└─ Код -> Объект.Code (если нужен)

Сложная:

Главное (vertical)
├─ Наименование -> Объект.Description
├─ Параметры (horizontal, 2 колонки)
│  ├─ Левая: основные реквизиты
│  └─ Правая: дополнительные реквизиты
└─ КонтактныеДанные / Дополнительно (vertical)

События: OnCreateAtServer, OnReadAtServer, BeforeWriteAtServer, NotificationProcessing

Мастер (Wizard)

Страницы (pages, OnCurrentPageChange)
├─ Шаг1: описание + параметры
├─ Шаг2: основная работа
└─ Шаг3: результат
Кнопки (horizontal)
├─ Назад (command), Далее (command, defaultButton), Выполнить (command)
└─ Закрыть (stdCommand: Close)

Свойства: windowOpeningMode=LockOwnerWindow, commandBarLocation=None


Конвенции именования

Группы

Назначение Имя Тип
Шапка ГруппаШапка horizontal
Левая колонка ГруппаШапкаЛевая vertical
Правая колонка ГруппаШапкаПравая vertical
Номер+Дата ГруппаНомерДата horizontal
Подвал ГруппаПодвал vertical
Итоги ГруппаИтоги horizontal
Кнопки ГруппаКнопок horizontal
Страницы ГруппаСтраницы / Страницы pages
Предупреждение ГруппаПредупреждение horizontal, visible:false
Доп. секция ГруппаДополнительно / ГруппаПрочее vertical, collapse

Элементы

Назначение Имя
Поле в таблице [Таблица][Поле]
Итог Итоги[Поле]
Надпись-ссылка [Поле]Надпись
Фильтр Отбор[Поле]
Флажок фильтра Отбор[Поле]Использование
Кнопка команды [ИмяКоманды] (имя = команда)
Баннер-картинка [Баннер]Картинка
Баннер-надпись [Баннер]Надпись
Подменю Подменю[Действие]

Обработчики событий

Имя = имя элемента + суффикс на русском:

Событие Суффикс Пример
OnChange ПриИзменении ОрганизацияПриИзменении
StartChoice НачалоВыбора КонтрагентНачалоВыбора
Click Нажатие ЦеныИВалютаНажатие
OnEditEnd ПриОкончанииРедактирования ТоварыПриОкончанииРедактирования
OnStartEdit ПриНачалеРедактирования ТоварыПриНачалеРедактирования

Обработчики формы: ПриСозданииНаСервере, ПриОткрытии, ПередЗакрытием, ОбработкаОповещения.


Принципы компоновки

  1. Порядок чтения. Сверху вниз, слева направо. Самое важное - вверху.
  2. Двухколоночная шапка. Основные реквизиты слева (контрагент, склад), организационные справа (организация, подразделение).
  3. Кнопки действий внизу. Главная кнопка - defaultButton: true. Закрыть - всегда последняя.
  4. Таблицы - основная область. Табличные части занимают большую часть формы, обычно на Pages.
  5. Итоги рядом с таблицей. В подвале, горизонтальная группа, все поля readOnly.
  6. Фильтры - отдельная зона. Над списком, alwaysHorizontal, пара "флажок + поле" на каждый фильтр.
  7. Скрытые элементы для состояний. Баннеры, предупреждения - visible: false, показываются программно.
  8. Надписи-ссылки для диалогов. labelField с hyperlink: true и событием Click.
  9. Встроенная кнопка выбора вместо отдельной. Для полей выбора файла/значения предпочитать choiceButton: true (кнопка "..." в поле) + событие StartChoice, а не отдельную кнопку рядом. Компактнее и идиоматичнее.
  10. Не дублировать title. Если заголовок совпадает с именем реквизита - не указывать title явно, платформа подставит автоматически.

Продвинутые паттерны (ERP)

Сворачиваемые группы

Для необязательных секций (подписи, дополнительно, прочее):

{ "group": "vertical", "name": "ГруппаПодписи", "title": "Подписи",
  "behavior": "Collapsible", "collapsed": true, "children": [...] }

Баннер-предупреждение

Группа "картинка + надпись", скрыта по умолчанию, показывается программно:

{ "group": "horizontal", "name": "ГруппаПредупреждение", "showTitle": false,
  "visible": false, "children": [
    { "picture": "ПредупреждениеКартинка" },
    { "label": "ПредупреждениеНадпись", "title": "Текст", "maxWidth": 76, "autoMaxWidth": false }
]}

Popup-меню в командной панели

Группировка связанных команд (печать, отправка) в одну кнопку с иконкой:

{ "cmdBar": "КоманднаяПанель", "children": [
    { "popup": "ПодменюПечать", "title": "Печать",
      "picture": "StdPicture.Print", "representation": "Picture", "children": [
        { "button": "ПечатьНакладная", "command": "Печать" },
        { "button": "ПечатьСчет", "command": "ПечатьСчет" }
    ]}
]}

Форма без стандартной командной панели

Для модальных диалогов и мастеров:

{ "properties": { "commandBarLocation": "None", "windowOpeningMode": "LockWholeInterface" } }

Надпись-гиперссылка

Вместо кнопки для открытия подформ (ЦеныИВалюта, УчетнаяПолитика):

{ "labelField": "ЦеныИВалютаНадпись", "path": "ЦеныИВалюта", "hyperlink": true, "on": ["Click"] }

Пример: форма обработки (полный DSL)

{
  "title": "Загрузка данных из CSV",
  "properties": { "autoTitle": false, "windowOpeningMode": "LockOwnerWindow" },
  "events": { "OnCreateAtServer": "ПриСозданииНаСервере" },
  "elements": [
    { "group": "vertical", "name": "ГруппаПараметры", "children": [
      { "input": "ФайлЗагрузки", "path": "ФайлЗагрузки", "title": "Файл", "clearButton": true, "horizontalStretch": true, "on": ["StartChoice"] },
      { "input": "Кодировка", "path": "Кодировка" },
      { "input": "Разделитель", "path": "Разделитель", "title": "Разделитель колонок" }
    ]},
    { "table": "Данные", "path": "Объект.Данные", "on": ["OnStartEdit"], "columns": [
      { "input": "ДанныеНомерСтроки", "path": "Объект.Данные.LineNumber", "readOnly": true, "title": "№" },
      { "input": "ДанныеНаименование", "path": "Объект.Данные.Наименование" },
      { "input": "ДанныеКоличество", "path": "Объект.Данные.Количество", "on": ["OnChange"] },
      { "input": "ДанныеСумма", "path": "Объект.Данные.Сумма", "readOnly": true }
    ]},
    { "group": "horizontal", "name": "ГруппаКнопок", "children": [
      { "button": "Загрузить", "command": "Загрузить", "title": "Загрузить из файла", "defaultButton": true },
      { "button": "Очистить", "command": "Очистить", "title": "Очистить таблицу" },
      { "button": "Закрыть", "stdCommand": "Close" }
    ]}
  ],
  "attributes": [
    { "name": "Объект", "type": "ExternalDataProcessorObject.ЗагрузкаИзCSV", "main": true },
    { "name": "ФайлЗагрузки", "type": "string" },
    { "name": "Кодировка", "type": "string(20)" },
    { "name": "Разделитель", "type": "string(5)" }
  ],
  "commands": [
    { "name": "Загрузить", "action": "ЗагрузитьОбработка" },
    { "name": "Очистить", "action": "ОчиститьОбработка" }
  ]
}
Files (claude-code-skills-1c)
  • evals
    • evals.json 3.1 KB
      {
        "skill_name": "1c-form-patterns",
        "evals": [
          {
            "id": 1,
            "prompt": "Мне нужно создать форму документа ПоступлениеТоваров, но я не знаю как правильно расположить поля шапки, табличную часть и итоги. Покажи стандартный паттерн.",
            "expected_output": "Показан паттерн Document Form с описанием структуры: двухколоночная шапка, Pages с таблицей товаров, футер с итогами, рекомендуемые события и соглашения об именовании.",
            "expectations": [
              "Показан архетип 'Document Form' с текстовой схемой структуры (Header, Pages, Footer)",
              "Упомянуты события OnCreateAtServer, OnReadAtServer, BeforeWriteAtServer",
              "Показаны соглашения об именовании групп: HeaderGroup, HeaderLeftGroup, FooterGroup, TotalsGroup",
              "Показаны примеры именования элементов для таблицы: [Table][Field]"
            ]
          },
          {
            "id": 2,
            "prompt": "Создаю форму обработки для массовой замены цен. Покажи паттерн формы обработки: какие группы, кнопки, события стандартные для такого типа форм.",
            "expected_output": "Показан паттерн Data Processor Form с зонами параметров, рабочей областью и кнопками действий, включая defaultButton и кнопку Close.",
            "expectations": [
              "Показан архетип 'Data Processor Form' со структурой Parameters / Working area / Action buttons",
              "Упомянуто свойство windowOpeningMode=LockOwnerWindow для диалогов",
              "Показана кнопка закрытия через stdCommand: Close",
              "Упомянуто событие OnCreateAtServer"
            ]
          },
          {
            "id": 3,
            "prompt": "Как правильно сделать форму-мастер (визард) в 1С? Нужно провести пользователя через 3 шага: ввод параметров, предпросмотр, результат.",
            "expected_output": "Показан паттерн Wizard с Pages по шагам, кнопками Back/Next/Execute, рекомендациями по windowOpeningMode и отсутствию стандартной командной панели.",
            "expectations": [
              "Показан архетип 'Wizard' со структурой Pages (Step1, Step2, Step3)",
              "Показаны кнопки Back, Next (defaultButton), Execute, Close",
              "Упомянуты свойства windowOpeningMode=LockOwnerWindow и commandBarLocation=None",
              "Показан JSON DSL-пример или текстовая схема мастера"
            ]
          }
        ]
      }
      
  • SKILL.md 13.6 KB
    ---
    name: 1c-form-patterns
    description: Справочник паттернов компоновки управляемых форм 1С. Используй как справочник при проектировании форм - архетипы, конвенции, продвинутые приемы
    argument-hint: (no arguments)
    allowed-tools: []
    ---
    
    # /form-patterns - паттерны компоновки форм
    
    Справочник типовых паттернов дизайна управляемых форм 1С. Вызывай **перед** проектированием формы через `/form-compile`, когда требования пользователя не детализируют расположение элементов.
    
    **Как использовать:** выбери подходящий архетип, применяй конвенции именования, при необходимости используй продвинутые паттерны.
    
    ---
    
    ## Архетипы форм
    
    ### Форма документа
    
    ```
    Шапка (horizontal, 2 колонки)
    ├─ Левая (vertical): НомерДата (H: Номер + Дата "от"), Контрагент, Договор
    ├─ Правая (vertical): Организация, Подразделение, ЦеныИВалюта (надпись-ссылка)
    Страницы (pages)
    ├─ Товары: таблица Объект.Товары
    ├─ Услуги: таблица Объект.Услуги (опционально)
    └─ Дополнительно: прочие реквизиты
    Подвал (vertical)
    ├─ Итоги (horizontal): Всего, НДС, Скидка
    └─ КомментарийОтветственный (horizontal): Комментарий + Ответственный
    ```
    
    **События:** OnCreateAtServer, OnReadAtServer, OnOpen, BeforeWriteAtServer, AfterWriteAtServer, AfterWrite, NotificationProcessing
    **Свойства:** autoTitle=false
    
    ### Форма обработки (DataProcessor)
    
    ```
    Параметры (vertical)
    ├─ Группа полей ввода (Организация, Период, режимы работы)
    ├─ Информационные надписи (label, hyperlink)
    Рабочая область
    ├─ Таблица данных или Pages с вкладками
    Кнопки действий
    ├─ Выполнить / Применить (defaultButton)
    ├─ Закрыть (stdCommand: Close)
    ```
    
    **События:** OnCreateAtServer, OnOpen, NotificationProcessing
    **Свойства:** windowOpeningMode=LockOwnerWindow (если диалог), autoTitle=false
    
    ### Форма списка
    
    ```
    Отборы (group: alwaysHorizontal)
    ├─ ГруппаОтбор[Поле] (H): Флажок + Поле ввода (для каждого фильтра)
    Список (table, DynamicList)
    ├─ Колонки: labelField (не input - данные только для чтения)
    ```
    
    **События:** OnCreateAtServer, OnOpen, NotificationProcessing, OnLoadDataFromSettingsAtServer
    **Свойства:** autoSaveDataInSettings=Use
    **Фильтры:** пара реквизитов на каждый - `Отбор[Поле]` (значение) + `Отбор[Поле]Использование` (boolean)
    **Ссылка (Ref) в запросе:** добавлять элемент-колонку Ссылка в конец таблицы списка с `userVisible: false`. Ссылка нужна пользователю для самостоятельного вывода реквизитов ссылки, которые не были предусмотрены разработчиком, но не для отображения. Исключение: если явно требуется показать ссылку в колонках - выводить в место, указанное в ТЗ (или в конец, если не указано), без userVisible: false.
    
    ### Форма элемента справочника
    
    **Простая:**
    ```
    ГруппаРеквизитов (horizontal)
    ├─ Наименование -> Объект.Description
    └─ Код -> Объект.Code (если нужен)
    ```
    
    **Сложная:**
    ```
    Главное (vertical)
    ├─ Наименование -> Объект.Description
    ├─ Параметры (horizontal, 2 колонки)
    │  ├─ Левая: основные реквизиты
    │  └─ Правая: дополнительные реквизиты
    └─ КонтактныеДанные / Дополнительно (vertical)
    ```
    
    **События:** OnCreateAtServer, OnReadAtServer, BeforeWriteAtServer, NotificationProcessing
    
    ### Мастер (Wizard)
    
    ```
    Страницы (pages, OnCurrentPageChange)
    ├─ Шаг1: описание + параметры
    ├─ Шаг2: основная работа
    └─ Шаг3: результат
    Кнопки (horizontal)
    ├─ Назад (command), Далее (command, defaultButton), Выполнить (command)
    └─ Закрыть (stdCommand: Close)
    ```
    
    **Свойства:** windowOpeningMode=LockOwnerWindow, commandBarLocation=None
    
    ---
    
    ## Конвенции именования
    
    ### Группы
    
    | Назначение | Имя | Тип |
    |-----------|-----|-----|
    | Шапка | `ГруппаШапка` | horizontal |
    | Левая колонка | `ГруппаШапкаЛевая` | vertical |
    | Правая колонка | `ГруппаШапкаПравая` | vertical |
    | Номер+Дата | `ГруппаНомерДата` | horizontal |
    | Подвал | `ГруппаПодвал` | vertical |
    | Итоги | `ГруппаИтоги` | horizontal |
    | Кнопки | `ГруппаКнопок` | horizontal |
    | Страницы | `ГруппаСтраницы` / `Страницы` | pages |
    | Предупреждение | `ГруппаПредупреждение` | horizontal, visible:false |
    | Доп. секция | `ГруппаДополнительно` / `ГруппаПрочее` | vertical, collapse |
    
    ### Элементы
    
    | Назначение | Имя |
    |-----------|-----|
    | Поле в таблице | `[Таблица][Поле]` |
    | Итог | `Итоги[Поле]` |
    | Надпись-ссылка | `[Поле]Надпись` |
    | Фильтр | `Отбор[Поле]` |
    | Флажок фильтра | `Отбор[Поле]Использование` |
    | Кнопка команды | `[ИмяКоманды]` (имя = команда) |
    | Баннер-картинка | `[Баннер]Картинка` |
    | Баннер-надпись | `[Баннер]Надпись` |
    | Подменю | `Подменю[Действие]` |
    
    ### Обработчики событий
    
    Имя = имя элемента + суффикс на русском:
    
    | Событие | Суффикс | Пример |
    |---------|---------|--------|
    | OnChange | ПриИзменении | `ОрганизацияПриИзменении` |
    | StartChoice | НачалоВыбора | `КонтрагентНачалоВыбора` |
    | Click | Нажатие | `ЦеныИВалютаНажатие` |
    | OnEditEnd | ПриОкончанииРедактирования | `ТоварыПриОкончанииРедактирования` |
    | OnStartEdit | ПриНачалеРедактирования | `ТоварыПриНачалеРедактирования` |
    
    Обработчики формы: `ПриСозданииНаСервере`, `ПриОткрытии`, `ПередЗакрытием`, `ОбработкаОповещения`.
    
    ---
    
    ## Принципы компоновки
    
    1. **Порядок чтения.** Сверху вниз, слева направо. Самое важное - вверху.
    2. **Двухколоночная шапка.** Основные реквизиты слева (контрагент, склад), организационные справа (организация, подразделение).
    3. **Кнопки действий внизу.** Главная кнопка - `defaultButton: true`. Закрыть - всегда последняя.
    4. **Таблицы - основная область.** Табличные части занимают большую часть формы, обычно на Pages.
    5. **Итоги рядом с таблицей.** В подвале, горизонтальная группа, все поля readOnly.
    6. **Фильтры - отдельная зона.** Над списком, alwaysHorizontal, пара "флажок + поле" на каждый фильтр.
    7. **Скрытые элементы для состояний.** Баннеры, предупреждения - `visible: false`, показываются программно.
    8. **Надписи-ссылки для диалогов.** `labelField` с `hyperlink: true` и событием Click.
    9. **Встроенная кнопка выбора вместо отдельной.** Для полей выбора файла/значения предпочитать `choiceButton: true` (кнопка "..." в поле) + событие `StartChoice`, а не отдельную кнопку рядом. Компактнее и идиоматичнее.
    10. **Не дублировать title.** Если заголовок совпадает с именем реквизита - не указывать `title` явно, платформа подставит автоматически.
    
    ---
    
    ## Продвинутые паттерны (ERP)
    
    ### Сворачиваемые группы
    
    Для необязательных секций (подписи, дополнительно, прочее):
    
    ```json
    { "group": "vertical", "name": "ГруппаПодписи", "title": "Подписи",
      "behavior": "Collapsible", "collapsed": true, "children": [...] }
    ```
    
    ### Баннер-предупреждение
    
    Группа "картинка + надпись", скрыта по умолчанию, показывается программно:
    
    ```json
    { "group": "horizontal", "name": "ГруппаПредупреждение", "showTitle": false,
      "visible": false, "children": [
        { "picture": "ПредупреждениеКартинка" },
        { "label": "ПредупреждениеНадпись", "title": "Текст", "maxWidth": 76, "autoMaxWidth": false }
    ]}
    ```
    
    ### Popup-меню в командной панели
    
    Группировка связанных команд (печать, отправка) в одну кнопку с иконкой:
    
    ```json
    { "cmdBar": "КоманднаяПанель", "children": [
        { "popup": "ПодменюПечать", "title": "Печать",
          "picture": "StdPicture.Print", "representation": "Picture", "children": [
            { "button": "ПечатьНакладная", "command": "Печать" },
            { "button": "ПечатьСчет", "command": "ПечатьСчет" }
        ]}
    ]}
    ```
    
    ### Форма без стандартной командной панели
    
    Для модальных диалогов и мастеров:
    
    ```json
    { "properties": { "commandBarLocation": "None", "windowOpeningMode": "LockWholeInterface" } }
    ```
    
    ### Надпись-гиперссылка
    
    Вместо кнопки для открытия подформ (ЦеныИВалюта, УчетнаяПолитика):
    
    ```json
    { "labelField": "ЦеныИВалютаНадпись", "path": "ЦеныИВалюта", "hyperlink": true, "on": ["Click"] }
    ```
    
    ---
    
    ## Пример: форма обработки (полный DSL)
    
    ```json
    {
      "title": "Загрузка данных из CSV",
      "properties": { "autoTitle": false, "windowOpeningMode": "LockOwnerWindow" },
      "events": { "OnCreateAtServer": "ПриСозданииНаСервере" },
      "elements": [
        { "group": "vertical", "name": "ГруппаПараметры", "children": [
          { "input": "ФайлЗагрузки", "path": "ФайлЗагрузки", "title": "Файл", "clearButton": true, "horizontalStretch": true, "on": ["StartChoice"] },
          { "input": "Кодировка", "path": "Кодировка" },
          { "input": "Разделитель", "path": "Разделитель", "title": "Разделитель колонок" }
        ]},
        { "table": "Данные", "path": "Объект.Данные", "on": ["OnStartEdit"], "columns": [
          { "input": "ДанныеНомерСтроки", "path": "Объект.Данные.LineNumber", "readOnly": true, "title": "№" },
          { "input": "ДанныеНаименование", "path": "Объект.Данные.Наименование" },
          { "input": "ДанныеКоличество", "path": "Объект.Данные.Количество", "on": ["OnChange"] },
          { "input": "ДанныеСумма", "path": "Объект.Данные.Сумма", "readOnly": true }
        ]},
        { "group": "horizontal", "name": "ГруппаКнопок", "children": [
          { "button": "Загрузить", "command": "Загрузить", "title": "Загрузить из файла", "defaultButton": true },
          { "button": "Очистить", "command": "Очистить", "title": "Очистить таблицу" },
          { "button": "Закрыть", "stdCommand": "Close" }
        ]}
      ],
      "attributes": [
        { "name": "Объект", "type": "ExternalDataProcessorObject.ЗагрузкаИзCSV", "main": true },
        { "name": "ФайлЗагрузки", "type": "string" },
        { "name": "Кодировка", "type": "string(20)" },
        { "name": "Разделитель", "type": "string(5)" }
      ],
      "commands": [
        { "name": "Загрузить", "action": "ЗагрузитьОбработка" },
        { "name": "Очистить", "action": "ОчиститьОбработка" }
      ]
    }
    ```
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related