Добрый день.
Есть р. Контакты с несколькими карточками редактирования в зависимости от типа контакта.
Стоит следующая задача:
При создании нового типа контакта создавать новую клиентскую схему редактирования с заданным набором полей и заданной логикой без использования мастера разделов.
Предполагаемая реализация:
1. Создать Базовую клиентскую схему с нужным набором полей и логикой.
2. При создании нового типа контакта в событии ContactTypeInserting:
а) Произвести вставку в SysSchema новой записи клиентской схемы с указанием ParentId (Id Базовой клиентской схемы из п. 1)
б) Произвести регистрацию новой схемы редактирования в SysModuleEdit.
В связи с этим возникает ряд вопросов:
1. Каким образом программно вставить/ изменить код новой клиентской схемы?
2. Каким образом программно изменить значения локализованных строк новой клиентской схемы?
Возможно упустил ещё нюансы.
Прошу подсказать куда стоит копать.
Заранее спасибо.
Нравится
Здравствуйте!
Решить задачу можно использованием бизнес-процесса. Процесс будет начинаться элементом "Сигнал" по событию добавления записей в объект "Тип контакта".
Далее элементом "Задание-сценарий" необходимо добавить соответствующие записи в таблицы:
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), в котором хранится сама схема или ресурс.