Подскажите как добавить связь раздела "Согласующие" в список выбора?
![]()
Нравится
Для того чтобы добавлять произвольные "Связи" в штатную механику, Вам необходимо добавить ее описание в таблицу EntityConnection
- SysEntitySchemaUId (это реплика к значению колонки UId из таблицы SysSchema запись в которой описывает схему объекта для которого устанавливается связь
- ColumUId (это реплика к одноименному полю в таблице SysEntitySchemaReference запись в которой отражает связь объекта с субъектом и его полем, фактически является описанием соотношения справочных полей в объектах)
изучите на примере уже существующих связей.
PS: в помощь Вам SQL скрипт который поможет Вам найти нужное значение по имени колонки и схемы от которой строится связь
-- Ищем колонку Лида (Lead) в схеме Активности (Activity)
SELECT SysEntitySchemaReference.*, Name FROM SysEntitySchemaReference SysEntitySchemaReference
INNER JOIN dbo.SysSchema SysSchema ON SysEntitySchemaReference.SysSchemaId = SysSchema.Id
WHERE ColumnName = 'Lead' AND Name = 'Activity'Севостьянов Илья Сергеевич,
Все намного проще:
1. Добавить в объект Activity колонку, ссылающуюся на нужный справочник .
2. Найти UId колонки добавленной в первом пункте (в метаданных справочника).
3) Выполнить скрипт предоставленный раннее
INSERT INTO EntityConnection (SysEntitySchemaUId, ColumnUId) VALUES ('C449D832-A4CC-4B01-B9D5-8A12C42A9F89', 'UId_колонки_из_п.2');
Где UId колонки - UId колонки для связи из метаданных обьекта Activity.
4) Выполнить очистку кэша и перезайти в систему.
Последовательность правильная. В п.3 можно использовать более удобный скрипт для MSSQL:
DECLARE @columnName varchar(max) = 'UsrColumn';
INSERT INTO [EntityConnection] ([SysEntitySchemaUId], [ColumnUId])
VALUES (
(SELECT
[UId]
FROM [SysSchema]
WHERE [Name] = 'Activity'
AND [ExtendParent] = 0),
(SELECT DISTINCT
[ColumnUId]
FROM [SysEntitySchemaReference]
WHERE [SysSchemaId] IN (SELECT
[Id]
FROM [SysSchema]
WHERE [Name] = 'Activity')
AND [ColumnName] = @columnName));