Как создать сложный справочник (аналог "Корреспонденты")

Создание новых типов документов


Ответить
Аватара пользователя
Andrew
Разработчики FossDoc
Сообщения: 869
Зарегистрирован: 26 дек 2008, 16:03

Как создать сложный справочник (аналог "Корреспонденты")

Сообщение Andrew » 14 май 2012, 15:06

В FossDoc 5 была введена возможность создавать быстро новые типы документов и справочники. Но что если вам требуется не простой справочник с одним полем "Имя" а такой , в котором справочные записи будут сами состоять из нескольких полей? Пример такого справочника - справочник "Корреспонденты". В такой записи кроме имени есть и где есть адрес организации, ФИО руководителя и т.п.

Скажу сразу - в ближайшем новом релизе эти "страшные" действия делать не потребуется (будет проще!), но по просьбам наших клиентов мы публикуем "мастер-класс" по созданию собственного СЛОЖНОГО справочного поля уже сейчас.

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

1) Создаем справочное поле как обычно, сохраняем
Шаг1_Создаем справочное поле.jpg
Шаг1_Создаем справочное поле.jpg (37.94 КБ) 4573 просмотра
2) После этого у вас в библиотеке должна появиться категория для данного справочника:
Шаг2_Категория_справочного_поля.jpg
Шаг2_Категория_справочного_поля.jpg (46.9 КБ) 4573 просмотра
3) Меняем типизацию категории, сделаем ее не простым справочником а «типом документа». Для этого скопируйте в буфер обмена вот этот идентификатор: 0000000458925B5007B14F9E8701BF31A503D7D9.

4) Идем на вкладку «Объект» вашей категории справочного поля
Шаг3_Категория справочного поля.jpg
Шаг3_Категория справочного поля.jpg (33.4 КБ) 4573 просмотра
5) В поле «Категория» - вытираем то что там написано, вставляем идентификатор из буфера обмена и нажимаем Enter. У вас должно получиться как на рисунке «FossDoc.Business logic.Document type». Нажмите сохранить изменения.
Шаг4_Смена категории.jpg
Шаг4_Смена категории.jpg (7.59 КБ) 4573 просмотра
после вставки идентификатора и Enter:
Шаг4_Новая категория.jpg
Шаг4_Новая категория.jpg (7.32 КБ) 4572 просмотра
6) В ветке «Родительские категории» у вашей справочной записи удалите ссылку на категорию «Business logic.Dictionary»
Шаг5_Удаляем ссылку на базовую категорию справочника.jpg
Шаг5_Удаляем ссылку на базовую категорию справочника.jpg (17 КБ) 4572 просмотра
7) Скопируйте в буфер обмена идентификатор:
00000004D1E030D9CE6A4771B2B0546D78686020

8) Идем в ветку «Родительские категории» вашей справочной записи, и делаем «Вставить ссылку».
Шаг6_Наследование от документа.jpg
Шаг6_Наследование от документа.jpg (39.43 КБ) 4575 просмотров
9) В итоге у вас должно получиться вот так:
Шаг7_Финальный вид справочной записи.jpg
Шаг7_Финальный вид справочной записи.jpg (17.07 КБ) 4575 просмотров
Вы можете добавлять любые поля как и в тип документа.
Обратите внимание на "наследование" - изначально справочные записи наследовались от "FossDoc.Business logic.Dictionary document" (Справочная запись), а мы удалили это наследование и заменили его на "Документ" (FossDoc.Business logic.Document). Это дало возможность добавлять любые поля, аналогично как в тип документа.

10) Из под клиента это будет выглядеть вот так:
Шаг8_Как это выглядит у пользователя.jpg
Шаг8_Как это выглядит у пользователя.jpg (47.5 КБ) 4576 просмотров

gothundead
Пользователь
Сообщения: 26
Зарегистрирован: 27 июл 2016, 09:45
2 + 2 = ?: 4

Re: Как создать сложный справочник (аналог "Корреспонденты")

Сообщение gothundead » 27 окт 2016, 16:15

Попытался создать сложный справочник с информацией о сотруднике, чтобы он содержал ФИО в разных падежах.
Все создалось. Но при заведении шаблона документа не могу найти поля, вложенные в сложный справочнике. Есть ссылки только на имя этого сложного справочника и прочие атрибуты.

То есть не удается извлечь информацию из полей, содержащихся в сложном справочнике из документа, в котором находится ссылка на сложный справочник.

Аватара пользователя
Andrew
Разработчики FossDoc
Сообщения: 869
Зарегистрирован: 26 дек 2008, 16:03

Re: Как создать сложный справочник (аналог "Корреспонденты")

Сообщение Andrew » 28 окт 2016, 10:12

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

Если я правильно понял, у вас в документе есть справочное поле , в котором вы выбираете одну из записей. Это у вас, я так понимаю, работает.
Далее, в дизайнере шаблонов вы по идее должны видеть под-деревом под этим полем его подполя.

Если такого нет, сделайте вот что:
1) тип документа-сложного справочника откройте, у него скопируйте идентификатор
2) откройте поле в "рабочем" документе, и проверьте на вкладке "Объект" у него свойства "Категория хранимых объектов" и "Категория вида". Эти два свойства
должны "смотреть" на тот самый тип документа который у вас является сложным справочником.
Если вдруг там не то, а например Business logic.Dictionary, следует просто в эти свойства вставить из буфера идентификатор , нажать Enter и сохранить.

После этого - перезапуск сервера, админки, и попробовать шаблонный редактор снова.

Если не получится, приложите скриншоты свойств вашего справочного поля, подскажу подробнее.

gothundead
Пользователь
Сообщения: 26
Зарегистрирован: 27 июл 2016, 09:45
2 + 2 = ?: 4

Re: Как создать сложный справочник (аналог "Корреспонденты")

Сообщение gothundead » 28 окт 2016, 11:50

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

Юзер
Пользователь
Сообщения: 56
Зарегистрирован: 22 окт 2017, 20:52
2 + 2 = ?: 4

Re: Как создать сложный справочник (аналог "Корреспонденты")

Сообщение Юзер » 13 ноя 2017, 16:22

Пытаюсь создать сложный справочник и что-то ничего не работает, всё какие-то глюки.
Скажите, пожалуйста, а нельзя нужное количество раз скопировать "Корреспондент" и сделать так, что бы связь между ними разорвалась, что бы при изменении набора полей в одной копии они не менялись в другой? Это бы легко решило потребность в нескольких сложных справочниках.

Аватара пользователя
Andrew
Разработчики FossDoc
Сообщения: 869
Зарегистрирован: 26 дек 2008, 16:03

Re: Как создать сложный справочник (аналог "Корреспонденты")

Сообщение Andrew » 13 ноя 2017, 16:44

Зависит от вашей задачи. Само по себе поле "Корреспондент" всего лишь "смотрит" на определенный справочник.
Допустим, у вас есть случай когда в карточке два разных поля - одно "Поле 1" и второе "Поле 2". И вам с одной стороны нужно, чтобы они оба "смотрели" на один справочник, но и нужны эти два поля в одной карточке. Это можно решить достаточно легко.

Если же смысл в том, что в справочнике принципиально разное наполнение (и оно не будет пересекаться), то тут придется делать отдельный справочник.

Какой у вас случай?

Юзер
Пользователь
Сообщения: 56
Зарегистрирован: 22 окт 2017, 20:52
2 + 2 = ?: 4

Re: Как создать сложный справочник (аналог "Корреспонденты")

Сообщение Юзер » 13 ноя 2017, 17:03

Нужен справочник с двумя полями, условно, "Тип работ" и "Цена этой работы".
Есть карточка со полями "Что нужно сделать" (справочное, многозначное) и "Общая стоимость" (числовое вычисляемое).
Пользователь повыбирает нужные ему типы работ из справочника, а поле "Общая стоимость" вычислит сумму выбранных типов работ. Вот примерно такая ситуация, но уже не на сегодня, если что )).

Аватара пользователя
Andrew
Разработчики FossDoc
Сообщения: 869
Зарегистрирован: 26 дек 2008, 16:03

Re: Как создать сложный справочник (аналог "Корреспонденты")

Сообщение Andrew » 14 ноя 2017, 09:21

1) создаем библиотеку "Товары и продажи"

2) в ней создаем документ "Выполняемая работа", у нее поле "Цена" и снять галочку "Заполнять имя автоматически",
чтобы имя вводить вручную.
Система создаст для вас сразу папку, это и будет "как справочник" работ, по сути разницы нет.

Теперь наполняем эту папку (создайте там парочку записей) с именами и ценой.

3) Создаем документ "Договор" (или счет, или как хотите назовите), но его смысл - быть "сборкой" всех работ и иметь поле "Итого"

У него создаем поле "Работы", по типу "Ссылки на документы". Указать папку "Выполняемая работа".

Создаем также поле "Итого стоимость работ", денежное. Это будет вычисляемое поле.
В формуле указать summ("Работы\Цена")


Все, в итоге получили несколько упрощенный но достаточно рабочий вариант, где тип работ фиксирован по цене, есть справочник,
и есть работающее поле "Итого".
Единственное что может быть необычного - что мы вместо создания сложного справочника создали свой простой тип документа,
и папка-справочник "живет" не в ветке справочников, но для системы и пользователя разницы практически нет.

Юзер
Пользователь
Сообщения: 56
Зарегистрирован: 22 окт 2017, 20:52
2 + 2 = ?: 4

Re: Как создать сложный справочник (аналог "Корреспонденты")

Сообщение Юзер » 15 ноя 2017, 14:14

Понял, спасибо, так всё работает без глюков.

Ответить

Вернуться в «Конструктор типов документов»