Код &НаКлиенте Процедура ОсновноеКонтактноеЛицоПриИзменении(Элемент) Если НЕ ПроверитьЗаполнениеРеквизита() Тогда Сообщить("Выбранное контактное лицо, "+Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента."); КонецЕсли; КонецПроцедуры
&НаСервере Функция ПроверитьЗаполнениеРеквизита() Возврат (Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает); КонецФункции &НаСервере Процедура УстановитьНомерПредставителя()
Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; КонецПроцедуры При проверке выдает ошибку: {Справочник.Контрагенты.Форма.ФормаСписка.Форма(12,11)}: Переменная не определена (Объект)
работаю на версии 1С:Предприятие 8.3 (8.3.10.2650) |
Программная работа со справочниками, обработки, простые отчеты
Теперь приступим к редактированию кода. Код команды выполняется на клиенте, нам же нужно работать с базой данных, то есть – объявить серверную процедуру или функцию. В итоге у нас получился следующий код:
&НаКлиенте Процедура ВывестиСписокСправочников(Команда) ВывестиИменаСправочников(); КонецПроцедуры Процедура ВывестиИменаСправочников() Для каждого Справочник из Метаданные.Справочники Цикл Сообщить (Справочник.Имя); КонецЦикла; КонецПроцедуры
Обратите внимание на то, что объявляя процедуру ВывестиИменаСправочников(), мы не указываем директиву компиляции – по умолчанию подставляется директива &НаСервере. В процедуре мы перебираем коллекцию Метаданные.Справочники. Коллекция Метаданные относится к глобальному контексту и дает доступ к структуре метаданных конфигурации. Эта коллекция имеет тип ОбъектМетаданныхКонфигурация. С помощью коллекции Метаданные мы получаем доступ к коллекции Справочники. Эта коллекция, в свою очередь, имеет тип КоллекцияОбъектовМетаданных – в нее входят объекты, которые описывают все справочники, входящие в систему. При обходе коллекции мы получаем ОбъектМетаданных: Справочник, посредством которого можем обращаться к метаданным этого объекта. В частности, мы получаем имена справочников и выводим их в окно сообщений, рис. 5.6.
Рассмотрим еще одну задачу. Нужно программно создать элемент справочника с заданными параметрами. На верхнем уровне типов данных, которые имеют отношение к справочникам, находится объект Справочники, имеющий тип СправочникиМенеджер. С его помощью можно обращаться к отдельным справочникам, через их объекты СправочникМенеджер. При работе с объектом типа СправочникиМенеджер используется свойство глобального контекста Справочники.
Обращение к объектам СправочникМенеджер возможно по имени справочника, заданному в конфигурации. Мы собираемся программно создать элемент с наименованием, которое задаст пользователь в форме обработки. Для этого добавим в список команд формы новую – назовем ее СоздатьЭлементСправочника, создадим ее процедуру, добавим ее на форму. Добавим новый реквизит в список реквизитов, назовем его НаименованиеЭлемента, зададим тип – Строка, длина 25, так же переместим реквизит в область Элементы – там он будет представлен в виде текстового поля, рис. 5.7.
Добавим еще один реквизит – назовем его ИмяСправочника, тип Строка, длина – 100. Сюда пользователь будет вводить имя справочника, в котором он хочет создать новый элемент. На нашей форме теперь имеются три логически связанных элемента. Удобно объединить их в одну группу, чтобы пользователь сразу мог понять, что они работают вместе. Для этого можно сгруппировать элементы. В командной панели вкладки Элементы нажмем на кнопку Добавить, появится окно – Тип элемента ( рис. 5.8.), среди списка элементов, представленных в котором, можно найти несколько видов групп.
Обычная группа позволяет визуально разделить элементы, находящиеся на форме. Добавим на форму новую группу, назовем ее СозданиеЭлементаСправочника, перетащим в нее элементы управления, относящиеся к этой группе. Результат реорганизации элементов показан на рис. 5.9.