Как создать сложный справочник (аналог "Корреспонденты")
Как создать сложный справочник (аналог "Корреспонденты")
В FossDoc 5 была введена возможность создавать быстро новые типы документов и справочники. Но что если вам требуется не простой справочник с одним полем "Имя" а такой , в котором справочные записи будут сами состоять из нескольких полей? Пример такого справочника - справочник "Корреспонденты". В такой записи кроме имени есть и где есть адрес организации, ФИО руководителя и т.п.
Скажу сразу - в ближайшем новом релизе эти "страшные" действия делать не потребуется (будет проще!), но по просьбам наших клиентов мы публикуем "мастер-класс" по созданию собственного СЛОЖНОГО справочного поля уже сейчас.
Итак, по порядку - считаем, что вы уже создали библиотеку и свой тип документа.
1) Создаем справочное поле как обычно, сохраняем 2) После этого у вас в библиотеке должна появиться категория для данного справочника: 3) Меняем типизацию категории, сделаем ее не простым справочником а «типом документа». Для этого скопируйте в буфер обмена вот этот идентификатор: 0000000458925B5007B14F9E8701BF31A503D7D9.
4) Идем на вкладку «Объект» вашей категории справочного поля 5) В поле «Категория» - вытираем то что там написано, вставляем идентификатор из буфера обмена и нажимаем Enter. У вас должно получиться как на рисунке «FossDoc.Business logic.Document type». Нажмите сохранить изменения. после вставки идентификатора и Enter:
6) В ветке «Родительские категории» у вашей справочной записи удалите ссылку на категорию «Business logic.Dictionary» 7) Скопируйте в буфер обмена идентификатор:
00000004D1E030D9CE6A4771B2B0546D78686020
8) Идем в ветку «Родительские категории» вашей справочной записи, и делаем «Вставить ссылку». 9) В итоге у вас должно получиться вот так: Вы можете добавлять любые поля как и в тип документа.
Обратите внимание на "наследование" - изначально справочные записи наследовались от "FossDoc.Business logic.Dictionary document" (Справочная запись), а мы удалили это наследование и заменили его на "Документ" (FossDoc.Business logic.Document). Это дало возможность добавлять любые поля, аналогично как в тип документа.
10) Из под клиента это будет выглядеть вот так:
Скажу сразу - в ближайшем новом релизе эти "страшные" действия делать не потребуется (будет проще!), но по просьбам наших клиентов мы публикуем "мастер-класс" по созданию собственного СЛОЖНОГО справочного поля уже сейчас.
Итак, по порядку - считаем, что вы уже создали библиотеку и свой тип документа.
1) Создаем справочное поле как обычно, сохраняем 2) После этого у вас в библиотеке должна появиться категория для данного справочника: 3) Меняем типизацию категории, сделаем ее не простым справочником а «типом документа». Для этого скопируйте в буфер обмена вот этот идентификатор: 0000000458925B5007B14F9E8701BF31A503D7D9.
4) Идем на вкладку «Объект» вашей категории справочного поля 5) В поле «Категория» - вытираем то что там написано, вставляем идентификатор из буфера обмена и нажимаем Enter. У вас должно получиться как на рисунке «FossDoc.Business logic.Document type». Нажмите сохранить изменения. после вставки идентификатора и Enter:
6) В ветке «Родительские категории» у вашей справочной записи удалите ссылку на категорию «Business logic.Dictionary» 7) Скопируйте в буфер обмена идентификатор:
00000004D1E030D9CE6A4771B2B0546D78686020
8) Идем в ветку «Родительские категории» вашей справочной записи, и делаем «Вставить ссылку». 9) В итоге у вас должно получиться вот так: Вы можете добавлять любые поля как и в тип документа.
Обратите внимание на "наследование" - изначально справочные записи наследовались от "FossDoc.Business logic.Dictionary document" (Справочная запись), а мы удалили это наследование и заменили его на "Документ" (FossDoc.Business logic.Document). Это дало возможность добавлять любые поля, аналогично как в тип документа.
10) Из под клиента это будет выглядеть вот так:
-
- Пользователь
- Сообщения: 26
- Зарегистрирован: 27 июл 2016, 09:45
- 2 + 2 = ?: 4
Re: Как создать сложный справочник (аналог "Корреспонденты")
Попытался создать сложный справочник с информацией о сотруднике, чтобы он содержал ФИО в разных падежах.
Все создалось. Но при заведении шаблона документа не могу найти поля, вложенные в сложный справочнике. Есть ссылки только на имя этого сложного справочника и прочие атрибуты.
То есть не удается извлечь информацию из полей, содержащихся в сложном справочнике из документа, в котором находится ссылка на сложный справочник.
Все создалось. Но при заведении шаблона документа не могу найти поля, вложенные в сложный справочнике. Есть ссылки только на имя этого сложного справочника и прочие атрибуты.
То есть не удается извлечь информацию из полей, содержащихся в сложном справочнике из документа, в котором находится ссылка на сложный справочник.
Re: Как создать сложный справочник (аналог "Корреспонденты")
Здравствуйте!
Если я правильно понял, у вас в документе есть справочное поле , в котором вы выбираете одну из записей. Это у вас, я так понимаю, работает.
Далее, в дизайнере шаблонов вы по идее должны видеть под-деревом под этим полем его подполя.
Если такого нет, сделайте вот что:
1) тип документа-сложного справочника откройте, у него скопируйте идентификатор
2) откройте поле в "рабочем" документе, и проверьте на вкладке "Объект" у него свойства "Категория хранимых объектов" и "Категория вида". Эти два свойства
должны "смотреть" на тот самый тип документа который у вас является сложным справочником.
Если вдруг там не то, а например Business logic.Dictionary, следует просто в эти свойства вставить из буфера идентификатор , нажать Enter и сохранить.
После этого - перезапуск сервера, админки, и попробовать шаблонный редактор снова.
Если не получится, приложите скриншоты свойств вашего справочного поля, подскажу подробнее.
Если я правильно понял, у вас в документе есть справочное поле , в котором вы выбираете одну из записей. Это у вас, я так понимаю, работает.
Далее, в дизайнере шаблонов вы по идее должны видеть под-деревом под этим полем его подполя.
Если такого нет, сделайте вот что:
1) тип документа-сложного справочника откройте, у него скопируйте идентификатор
2) откройте поле в "рабочем" документе, и проверьте на вкладке "Объект" у него свойства "Категория хранимых объектов" и "Категория вида". Эти два свойства
должны "смотреть" на тот самый тип документа который у вас является сложным справочником.
Если вдруг там не то, а например Business logic.Dictionary, следует просто в эти свойства вставить из буфера идентификатор , нажать Enter и сохранить.
После этого - перезапуск сервера, админки, и попробовать шаблонный редактор снова.
Если не получится, приложите скриншоты свойств вашего справочного поля, подскажу подробнее.
-
- Пользователь
- Сообщения: 26
- Зарегистрирован: 27 июл 2016, 09:45
- 2 + 2 = ?: 4
Re: Как создать сложный справочник (аналог "Корреспонденты")
Благодарю, после изменения свойства "Категория хранимых объектов" и "Категория вида" и перезапуска сервера в шаблоне документа появилась возможность выбора содержимого справочника
Re: Как создать сложный справочник (аналог "Корреспонденты")
Пытаюсь создать сложный справочник и что-то ничего не работает, всё какие-то глюки.
Скажите, пожалуйста, а нельзя нужное количество раз скопировать "Корреспондент" и сделать так, что бы связь между ними разорвалась, что бы при изменении набора полей в одной копии они не менялись в другой? Это бы легко решило потребность в нескольких сложных справочниках.
Скажите, пожалуйста, а нельзя нужное количество раз скопировать "Корреспондент" и сделать так, что бы связь между ними разорвалась, что бы при изменении набора полей в одной копии они не менялись в другой? Это бы легко решило потребность в нескольких сложных справочниках.
Re: Как создать сложный справочник (аналог "Корреспонденты")
Зависит от вашей задачи. Само по себе поле "Корреспондент" всего лишь "смотрит" на определенный справочник.
Допустим, у вас есть случай когда в карточке два разных поля - одно "Поле 1" и второе "Поле 2". И вам с одной стороны нужно, чтобы они оба "смотрели" на один справочник, но и нужны эти два поля в одной карточке. Это можно решить достаточно легко.
Если же смысл в том, что в справочнике принципиально разное наполнение (и оно не будет пересекаться), то тут придется делать отдельный справочник.
Какой у вас случай?
Допустим, у вас есть случай когда в карточке два разных поля - одно "Поле 1" и второе "Поле 2". И вам с одной стороны нужно, чтобы они оба "смотрели" на один справочник, но и нужны эти два поля в одной карточке. Это можно решить достаточно легко.
Если же смысл в том, что в справочнике принципиально разное наполнение (и оно не будет пересекаться), то тут придется делать отдельный справочник.
Какой у вас случай?
Re: Как создать сложный справочник (аналог "Корреспонденты")
Нужен справочник с двумя полями, условно, "Тип работ" и "Цена этой работы".
Есть карточка со полями "Что нужно сделать" (справочное, многозначное) и "Общая стоимость" (числовое вычисляемое).
Пользователь повыбирает нужные ему типы работ из справочника, а поле "Общая стоимость" вычислит сумму выбранных типов работ. Вот примерно такая ситуация, но уже не на сегодня, если что )).
Есть карточка со полями "Что нужно сделать" (справочное, многозначное) и "Общая стоимость" (числовое вычисляемое).
Пользователь повыбирает нужные ему типы работ из справочника, а поле "Общая стоимость" вычислит сумму выбранных типов работ. Вот примерно такая ситуация, но уже не на сегодня, если что )).
Re: Как создать сложный справочник (аналог "Корреспонденты")
1) создаем библиотеку "Товары и продажи"
2) в ней создаем документ "Выполняемая работа", у нее поле "Цена" и снять галочку "Заполнять имя автоматически",
чтобы имя вводить вручную.
Система создаст для вас сразу папку, это и будет "как справочник" работ, по сути разницы нет.
Теперь наполняем эту папку (создайте там парочку записей) с именами и ценой.
3) Создаем документ "Договор" (или счет, или как хотите назовите), но его смысл - быть "сборкой" всех работ и иметь поле "Итого"
У него создаем поле "Работы", по типу "Ссылки на документы". Указать папку "Выполняемая работа".
Создаем также поле "Итого стоимость работ", денежное. Это будет вычисляемое поле.
В формуле указать summ("Работы\Цена")
Все, в итоге получили несколько упрощенный но достаточно рабочий вариант, где тип работ фиксирован по цене, есть справочник,
и есть работающее поле "Итого".
Единственное что может быть необычного - что мы вместо создания сложного справочника создали свой простой тип документа,
и папка-справочник "живет" не в ветке справочников, но для системы и пользователя разницы практически нет.
2) в ней создаем документ "Выполняемая работа", у нее поле "Цена" и снять галочку "Заполнять имя автоматически",
чтобы имя вводить вручную.
Система создаст для вас сразу папку, это и будет "как справочник" работ, по сути разницы нет.
Теперь наполняем эту папку (создайте там парочку записей) с именами и ценой.
3) Создаем документ "Договор" (или счет, или как хотите назовите), но его смысл - быть "сборкой" всех работ и иметь поле "Итого"
У него создаем поле "Работы", по типу "Ссылки на документы". Указать папку "Выполняемая работа".
Создаем также поле "Итого стоимость работ", денежное. Это будет вычисляемое поле.
В формуле указать summ("Работы\Цена")
Все, в итоге получили несколько упрощенный но достаточно рабочий вариант, где тип работ фиксирован по цене, есть справочник,
и есть работающее поле "Итого".
Единственное что может быть необычного - что мы вместо создания сложного справочника создали свой простой тип документа,
и папка-справочник "живет" не в ветке справочников, но для системы и пользователя разницы практически нет.
Re: Как создать сложный справочник (аналог "Корреспонденты")
Понял, спасибо, так всё работает без глюков.