Появилась необходимость добавить несколько полей с типом Перечисление в карточку "Договора". Пользовательские поля решил не использовать, потому что надо добавить поля в разные области(фреймы)на форме. В Администраторе есть два контрола EnumControl и EnumEditControl, поискал на форуме об отличиях никто не пишет, в документации то же нет описания. Прежде всего интересуют различия в хранении выбранной строки в перечислении для допустим последующего извлечения в отчет?
Насколько видно при использовании EnumControl нужно указать только ссылку на созданный сервис типа Enum, а как указать в каком поле БД будет храниться ссылка на него или значение?
С EnumEditControl более менее понятно там создается поле с типом перечисление в БД, добавляется в Датасет элемент типа Перечисление с ссылкой на сервис Перечисление, в БД храниться ссылка идентификатор элемента перечисления...

Нравится

4 комментария

Вам стоит использовать EnumDataControl, при создании этого элемента в окне Вы связываете его с полем датасета, таким образом обеспечивая связь с значением поля таблицы в базе данных (при открытии окна значение из талицы будет подтягиваться и сохраняться измененное). Если Вы захотите сохранять значение из EnumСontrol, то придется прописывать все самому.

А зачем тогда EnumEditControl нужен? Или он был исторически более ранним решением... и как прописывать? В скрипте обработки формы? И как решить задачу если мне нужно, чтоб поле для выбора перчисления было редактируемым, т.е. чтоб можно было не только выбрать конкретный элемент перечисления, но и отредактировать или вообще внести текст никак несвязанный с перечислением и сохранить как текст в БД?

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

"Черных Руслан" написал:и как прописывать? В скрипте обработки формы?

Просто используйте EnumDataControl.
"Черных Руслан" написал:И как решить задачу если мне нужно, чтоб поле для выбора перчисления было редактируемым, т.е. чтоб можно было не только выбрать конкретный элемент перечисления, но и отредактировать или вообще внести текст никак несвязанный с перечислением и сохранить как текст в БД?

В таком случае Вам лучше будет создать не поле перечисления, а поле справочника, тогда в окне будет не выпадающий список значений, как в случае с перечислением, а будет открываться дополнительное окошко с выбором возможных вариантов с возможностью добавлять и редактировать их. Перечисления обычно используются тогда, когда нужно выбрать из фиксированного набора значений, преимущество в том, что не нужно создавать сервисы таблицы, selectquery и датасета. А если Вы планируете позволить пользователю постоянно пополнять список значений, то стоит создать справочник.
EnumControl использован, например, в пользовательских настройках, где выбранное значение сохраняется не в базу данных, а в файл настроек.

Спасибо.Все понятно.

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