Двухуровневый справочник.

Коллеги, приветствую.

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

Нравится

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

Здравствуйте, Вадим!
Если Вы имеете ввиду справочник с деталью, то Вам сюда.
Если Вы хотите иерархический справочник, то в объекте нужно добавить спарвочное поле, которое ссылается на этот же объект, а в свойствах объекта найти "Родитель в иерархии" и указать там добавленноеполе.
В 7.1 XRM есть пример в разделе "Проекты", деталь "Структура":

Андрей, спасибо! Какие основные отличия справочника с деталью от иерархического справочника?
Правильно ли я понимаю, что оно сводится к тому, что справочник с деталью имеет максимум два уровня иерархии, а иерархический два и более? Или есть ещё какие-то расхождения?

Задача сводится к тому, чтобы к полю статус в карточке одного из разделов, добавить поле результат, которое предлагает результаты в зависимости от статуса.
По типу, как это реализовано в активностях.

Каким из этих двух методов это проще сделать?

Вадим, отличия справочников принципиальны.
В случае справочника с деталью, объект справочника связывается с другим объектом, тогда как в иерархическом справочнике связь есть самим этим объектом, то есть можно установить иерархию.
В таком случае Вам нужен справочник с деталью. Делайте все по аналогии с тем, как это в активностях.

Ок. Буду использовать первый вариант. Спасибо.

Андрей, а в случае первого варианта (иерархического), правильно я понимаю, что нужно помимо добавления справочного поля в объекте, добавить в карточку редактирования соответсвующее поле?

Кирилл, первый вариант - это справочник с деталью.
Но, если Вы имеете ввиду иерархический справочник, то да, нужно либо добавить это поле в карточку, либо с помощью доп. логики заполнять поле родителя автоматически на основании выделенной записи.

Пытаюсь сделать справочник по инструкции (http://www.community.terrasoft.ru/terrasoft/bpmonlinesdk/CreateMasterDe…), но при компиляции выдаёт ошибку

Никаких дополнительных сведений система не даёт.

Вадим, здравствуйте.

При компиляции чего получаете такую ошибку?

При компиляции сборки.

Вот алгоритм, который приводит к такому результату (скопировано с портала Service Desk):

1. Создал пакет на нашем общем тестовом стенде: Vadim.
2. Унаследовал его от пакета Finotdel.
3. Добавил в него замещающий объект.
4. В качестве родительского объекта выбрал "лид".
5. Сохранил в метаданных, скомпилировал.
6. Добавил объект, где в качестве родительского выбрал "базовый справочник".
7. Сохранил, скомпилировал.
8. Открыл объект, созданный на первом шаге, добавил в колонки поле с типом справочник.
9. В параметре справочник выбрал созданный на втором этапе справочник.
10. Сохранил, попытался скомпилировать, но система выдала:

Ошибка сохранения: Ссылка на объект не указывает на экземпляр объекта.

Вадим, здравствуйте.

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

Дмитрий, вы абсолютно правы.

Два вопроса:

1. Каким образом исправить, нужно вручную создавать или есть возможность сделать это из "админки"?
2. Почему таблица не создалась сразу, нужно было где-то поставить какую-то опцию?

Вадим, если после публикации объекта, установлена галочка "Требуется обновление в БД", просто нажмите действие в разделе "Конфигурация" - "Структура БД - Обновить для требующих обновление"

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