Создание новой клиентской схемы из скрипта

Добрый день.

Есть р. Контакты с несколькими карточками редактирования в зависимости от типа контакта.

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

Предполагаемая реализация:
1. Создать Базовую клиентскую схему с нужным набором полей и логикой.
2. При создании нового типа контакта в событии ContactTypeInserting:
а) Произвести вставку в SysSchema новой записи клиентской схемы с указанием ParentId (Id Базовой клиентской схемы из п. 1)
б) Произвести регистрацию новой схемы редактирования в SysModuleEdit.

В связи с этим возникает ряд вопросов:
1. Каким образом программно вставить/ изменить код новой клиентской схемы?
2. Каким образом программно изменить значения локализованных строк новой клиентской схемы?
Возможно упустил ещё нюансы.

Прошу подсказать куда стоит копать.

Заранее спасибо.

Нравится

5 комментариев

Здравствуйте!

Решить задачу можно использованием бизнес-процесса. Процесс будет начинаться элементом "Сигнал" по событию добавления записей в объект "Тип контакта".

Далее элементом "Задание-сценарий" необходимо добавить соответствующие записи в таблицы:
1) SysSchema
2) SysModuleEdit

Записи можно добавить при помощи CRUD операций. Подробнее:
https://academy.terrasoft.ru/documents/technic-sdk/7-9/postroenie-zapro…

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

Алексей, спасибо за ответ.

"Демьяник Алексей" написал:Все значения локализованных строк, а также код схемы, хранятся в поле MetaData. В этом поле также хранится название схемы. По этой причине необходимо генерировать название схемы, а также MetaData при каждом добавлении записи (эту логику необходимо продумать в элементе "Задание-сценарий").

Не могли бы подсказать, какие механизмы "из коробки" я мог бы использовать для генерации метаданных?

Игорь, здравствуйте!

Что можно сделать?

  • Настроить страницу редактирования, которая должна создаваться при добавлении типа
  • Сохранить значение MetaData этой схемы из таблицы SysSchema
  • Использовать это значение при генерации новых схем. В MetaData необходимо подменить UID, название и заголовок схемы

Альтернативный вариант - эмулировать создание страницы из мастера раздела. Однако быстрее и проще создавать страницу через SQL запросы.

"Демьяник Алексей" написал:В MetaData необходимо подменить UID, название и заголовок схемы

"Демьяник Алексей" написал:Однако быстрее и проще создавать страницу через SQL запросы.

Я так понимаю, что нужно ещё сгенерировать данные для таблиц SysSchemaContent, SysSchemaResources, SysSchemaProperties, SysSchemaSources и других.

Алексей, не могли бы вы привести пример генерации новой схемы карточки, используя SQL?

Пример генерации карточки можно посмотреть при помощи SQL Profiler'а.

Необходимо учесть, что часть таблиц используется как развязка, а часть используется как хранение информации. Где присутствует поле из типом varbinary(MAX), в котором хранится сама схема или ресурс.

Показать все комментарии