Тема 8 Перечисления
Цель:
познакомится с понятием и назначением Перечисления;
приобрести и закрепить навыки создания, редактирования перечислений и применения методов работы с перечислениями.
Пояснения к работе
Перечисление – средство работы с элементами данных, список возможных значений которых жестко задан в конфигурации. Перечисление представляет собой служебный тип данных, который не используется самостоятельно, а применяется, в основном, в совокупности с другими типами данных. Определить перечисление можно как «список возможных значений реквизита».
Перечисления используются при вводе значений реквизитов документов, справочников, при вводе значений констант и тех случаях, когда необходимо исключить неоднозначный ввод информации.
Рассмотрим в качестве примера перечисления тип работника (справочник Сотрудники реквизит ТипРаботника). В простейшем случае работники бывают основные и совместители. С типом работника связано налогообложение физического лица.
По своим свойствам перечисление похоже на справочник, однако имеет ряд существенных отличий.
Прежде всего, Перечисление не может изменяться в процессе работы с ним: список его значений задается при настройке Перечисления в Конфигураторе.
Перечисление не имеет вложенности – все его значения находятся на одном уровне.
Список значений Перечисления известен и доступен в Конфигураторе – сама конфигурация использует конкретные значения перечисления.
С функциональной точки зрения, перечисление проще в настройке и в использовании.
Использование перечисления позволяет ограничить число возможных вариантов, например, при вводе реквизита документа. Так как список значений перечисления создается в Конфигураторе, то тут же, в Конфигураторе, можно организовать проверку выбранного значения и описать действия, которые должны за этим выбором последовать.
Вся работа с объектами метаданных типа Перечисление ведется в окне Конфигурация – Метаданные. Найдите в дереве метаданных тип Перечисление и создайте новое перечисление. В появившемся окне (рисунок 8.1) введите следующие значения:
Рисунок 8.1
В окне Перечисление задаются значения перечисления в группе Значения. В окне Свойства Значения задаются имя значения (идентификатор), комментарий и экранное представление (значение), которое можно будет отображаться в списке возможных значений перечисления, когда перечисление выдается на экран для выбора значения перечисления. Если поле Представление не заполнено, для выдачи в списке будет использоваться идентификатор значения перечисления.
Средства языка предоставляют возможность непосредственного доступа к заданным в конфигураторе значениям перечислений в любом программном модуле (перечисления принадлежат глобальному контексту задачи). В терминах языка перечисления аналогичны системным константам, т. е. идентификаторы перечислений могут размещаться только в правой части оператора присваивания, в выражениях, быть параметрами процедур, функций или методов в любом программном модуле.
В качестве имени перечисления обязательно должно выступать полное имя конкретного вида и значения перечисления, как оно объявлено в конфигураторе. Вид и значение перечисления записывается через точку после ключевого слова Перечисление, т. е. полное имя вида перечисления записывается следующим образом:
Перечисление.<Имя_Переч>.<Значение_Переч>,
где <Имя_Переч> – имя вида перечисления, <Значение_Переч> – конкретное значение данного вида перечисления.
Пример:
Если Док.Сотрудник.Тип = Перечисление.ТипРаботника.Основной Тогда
Льготы = 1;
Иначе
Льготы = 0;
КонецЕсли;
Методы перечислений
КоличествоЗначений() – позволяет определить общее количество значений в данном виде перечисления.
Возвращаемое значение: число общего количества значений в данном виде перечисления.
ЗначениеПоНомеру(<Номер>) – позволяет определить значение перечисления, соответствующее номеру позиции в конфигураторе.
Параметры:
<Номер> – номер позиции значения перечисления, заданный в конфигураторе.
Возвращаемое значение: значение перечисления, соответствующее номеру заданной позиции.
Пример:
// отобразим все значения перечисления
Всего = Перечисление.ВидыТоваров.КоличествоЗначений();
Для Ном = 1 По Всего Цикл
Сообщить(Перечисление.ВидыТоваров.ЗначениеПоНомеру(Ном));
КонецЦикла;
Пример:
// в окне сообщений отобразится Основной работник
Сообщить(Перечисление.ТипРаботника.ЗначениеПоНомеру(1));
ЗначениеПоИдентификатору(<Идентификатор>) – позволяет определить значение перечисления, соответствующее идентификатору в конфигураторе.
Параметры:
<Идeнтификaтop> – строковое выражение. Идентификатор перечисления, заданный в конфигураторе.
Возвращаемое значение: значение перечисления, соответствующее идентификатору в конфигураторе. Если не найдено – то пустое значение.
Пример:
// в окне сообщений отобразится Основной работник
Сообщить(Перечисление.ТипРаботника.ЗначениеПоИдентификатору("Основной"));
Вид() – позволяет определить название вида перечисления, как оно задано в конфигураторе.
Возвращаемое значение: строковое значение, содержащее название вида перечисления.
Описание:
Пример:
// в окне сообщений отобразится ТипРаботника
Сообщить(Перечисление.ТипРаботника.Основной.Вид());
ПредставлениеВида() – позволяет получить пользовательское представление вида перечисления, как оно задано в конфигураторе
Возвращаемое значение: строковое значение, содержащее пользовательское представление вида перечисления (синоним перечисления или, если он пустой, то идентификатор).
Пример:
// в окне сообщений отобразится Тип работника
Сообщить(Перечисление.ТипРаботника.Основной.ПредставлениеВида());
Выбран() – возвращает признак выбора элемента.
Возвращаемое значение: 1 – если элемент перечисления выбран (спозиционирован); 0 – если не выбран.
Пример:
// В диалоге формирования некоторого отчета
// ВыбЕдИзмер – реквизит диалога типа «Перечисление.Единицы»
Если ВыбЕдИзмер.Выбран() = 0 Тогда
// Если единица измерений в диалоге не выбрана, то формируем отчет без условий
Заг1 = "По всем единицам измерения";
Иначе
// Если в диалоге выбрана единица измерений
// то формируем отчет только по выбранным единицам
Заг1 = "Отчет по товарам с единицей измерения " + ВыбЕдИзмер;
КонецЕсли;
ПорядковыйНомер() – определяет порядковый номер значения в перечислении, как он задан в конфигураторе. Значения перечисления нумеруются с 1.
Возвращаемое значение: число.
Пример:
// отобразим порядковый номер значения перечисления
Сообщить(Перечисление.ТипРаботника.Совместитель.ПорядковыйНомер());
Идентификатор() – возвращает строку – идентификатор значения перечисления как он задан в метаданных.
Возвращаемое значение: идентификатор значения перечисления как он задан в метаданных.
Пример:
// отобразим все идентификаторы перечисления
- Всего = Перечисление.ТипРаботника.КоличествоЗначений();
- Для Ном = 1 По Всего Цикл
- ВидРаб=Перечисление.ТипРаботника.ЗначениеПоНомеру(Ном);
- Сообщить(ВидРаб.Идентификатор());
- КонецЦикла;
- Для того чтобы созданное нами перечисление ТипРаботника «заработало», поменяем тип реквизита справочника Тип на созданное перечисление и сделайте соответствующие изменения в документах и отчетах, в частности в документе ПриказОПриеме в программном модуле реквизит Тип заполняется из списка значений – уберите это заполнение. Сохраните конфигурацию и запустите 1С в режиме Предприятие. Проверьте правильность работы всех объектов метаданных.
- Задания:
- В конфигурациях, созданных на прошлых занятиях, создать следующие перечисления:
- Вариант 1
- Создать перечисление ХудСтиль с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ХудожественныйСтиль на перечисление ХудСтиль и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 2
Создать перечисление ТипТов с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ТипТовара на перечисление ТипТов и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 3
Создать перечисление ТипНом с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ТипНомера на перечисление ТипНом и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 4
Создать перечисление ТипКн с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ТипКниги на перечисление ТипКн и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 5
Создать перечисление ТипыЛьгот с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ТипЛьготы на перечисление ТипыЛьгот и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 6
Создать перечисление ТипОбр с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ТипОбразования на перечисление ТипОбр и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 7
Создать перечисление ТипКварт с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ТипКвартиры на перечисление ТипКварт и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 8
Создать перечисление НомЭтажа с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита Этаж на перечисление НомЭтажа и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 9
Создать перечисление ТипПериода с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита Периодичность на перечисление ТипПериода и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 10
Создать перечисление ТипКварт с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ТипКвартиры на перечисление ТипКварт и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 11
Создать перечисление ТипыВагонов с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ТипВагона на перечисление ТипыВагонов и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 12
Создать перечисление ТипРазмещ с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ТипРазмещения на перечисление ТипРазмещ и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 13
Создать перечисление ТипСезона с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита Сезон на перечисление ТипСезона и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 14
Создать перечисление ТипМатериала с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита Материал на перечисление ТипМатериала и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Вариант 15
Создать перечисление ТипыОплат с несколькими значениями, в имеющихся справочниках, документах, отчетах и обработках поменяйте тип реквизита ТипОплаты на перечисление ТипыОплат и внесите изменения в соответствующие программные модули. Протестируйте работу всех созданных объектов метаданных, чтобы убедится в правильности внесения изменений.
Контрольные вопросы:
Что такое перечисление?
Каково отличие между списком значений и перечислением?
Как создать перечисление?
Как отредактировать перечисление?
Как получить доступ к значению перечисления?