Опубликован: 06.12.2011 | Уровень: для всех | Доступ: платный
Лекция 6:

Программная работа со справочниками, обработки, простые отчеты

Справочник с иерархией элементов

Добавим в нашу конфигурацию еще один справочник. Дадим ему имя Подразделения, добавим в состав подсистем БухгалтерскийУчет, УчетРаботыМастеров и РасчетЗаработнойПлаты. Увеличим длину наименования на закладке Данные до 100 символов. Сделаем справочник иерархическим – на закладке Иерархия установим флаг Иерархический справочник, параметр Вид иерархии установим в значение Иерархия элементов, рис. 5.22.

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

Настройка иерархии справочника Подразделения

Рис. 5.22. Настройка иерархии справочника Подразделения

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

Для этого перейдем на вкладку окна редактирования объекта Прочее и нажмем на вкладку Предопределенные. В окне ввода предопределенных элементов справочника введем следующие ( рис. 5.23.):

  • Администрация
  • Бухгалтерия
  • Парикмахерская
Создание предопределенных элементов справочника Подразделения

Рис. 5.23. Создание предопределенных элементов справочника Подразделения

Доработаем справочник Сотрудники. Снабдим его следующими реквизитами, рис. 5.24.:

Имя: ФизическоеЛицо, Тип: СправочникСсылка.ФизическиеЛица

Имя: Подразделение, Тип: СправочникСсылка.Подразделения

Имя: Расчетчик, Тип: Булево

Имя: Пользователь, Тип: Строка, длина 50.

Увеличим длину наименования до 50 символов.

Реквизиты справочника Сотрудники

Рис. 5.24. Реквизиты справочника Сотрудники

Мы хотели бы, чтобы наименование сотрудника в данном справочнике формировалось бы автоматически и состояло бы из ФИО физического лица и подразделения, в котором работает сотрудник. Создадим форму элемента справочника и, для элемента формы Наименование, снимем флаг Доступность, рис. 5.25.

Настройка формы элемента справочника Сотрудники

увеличить изображение
Рис. 5.25. Настройка формы элемента справочника Сотрудники

Теперь подумаем над тем, как автоматически заполнить поле Наименование на основе данных полей Физическое лицо и Подразделение. Сделать это можно различными способами, мы реализуем следующую функциональность: перехватим события изменения полей Физическое лицо и Подразделение и вызовем в обработчике каждого из этих событий процедуру, заполняющую поле Наименование. Так пользователь, заполняющий элемент справочника, сможет сразу же увидеть результаты формирования наименования.

Нашей задаче отвечает следующий код:

&НаКлиенте
Процедура ФизическоеЛицоПриИзменении(Элемент)
  СформироватьНаименование();
КонецПроцедуры

&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
  СформироватьНаименование();
КонецПроцедуры

Процедура СформироватьНаименование()
  Объект.Наименование=Объект.ФизическоеЛицо.Наименование +" ("+
  Объект.Подразделение.Наименование+") ";
КонецПроцедуры

Результаты работы созданного нами механизма показаны на рис. 5.26.

Настройка формы элемента справочника Сотрудники

Рис. 5.26. Настройка формы элемента справочника Сотрудники

Выводы

В этой лекции мы познакомились с созданием обработок и простых отчетов. Так же мы подробно рассмотрели объектную модель 1С:Предприятие 8.2., предназначенную для работы со справочниками и создали справочник с иерархией элементов.

Лариса Дятчина
Лариса Дятчина

Код 

&НаКлиенте

Процедура ОсновноеКонтактноеЛицоПриИзменении(Элемент)

Если НЕ ПроверитьЗаполнениеРеквизита() Тогда

 Сообщить("Выбранное контактное лицо, "+Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента.");

КонецЕсли;

КонецПроцедуры

 

&НаСервере

Функция ПроверитьЗаполнениеРеквизита()

 Возврат (Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);  

КонецФункции

&НаСервере

Процедура УстановитьНомерПредставителя()

 

 Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения;

КонецПроцедуры

При проверке выдает ошибку:

{Справочник.Контрагенты.Форма.ФормаСписка.Форма(12,11)}: Переменная не определена (Объект)
 Возврат (<<?>>Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);   (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,2)}: Переменная не определена (Объект)
 <<?>>Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,32)}: Переменная не определена (Объект)
 Объект.ТелефонКонтактногоЛица=<<?>>Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(6,41)}: Переменная не определена (Объект)
 Сообщить("Выбранное контактное лицо, "+<<?>>Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента."); (Проверка: Тонкий клиент)

 

работаю на версии 1С:Предприятие 8.3 (8.3.10.2650)

максим матасов
максим матасов
Леонид Альбрехт
Леонид Альбрехт
Россия, Екатеринбург, 10, 2004
Оксана Максимова
Оксана Максимова
Россия, Екатеринбург, Уральский государственный университет им. А. М. Горького, 2013