Структура
СправочникиМенеджер – управляет всеми справочниками. Обращение: Справочники.
СправочникМенеджер.<Имя справочника> - предназначен для управления конкретным справочником. Можно искать элемент справочника, создавать элемент и группу, получать форму справочника, получить пустое значение справочника и т.д. Обращение: Справочники.<имя>, например Справочники.Номенклатура
СправочникСсылка.<Имя справочника> - позволяет прочитать значение и реквизиты справочника. Используется только для ЧТЕНИЯ.
СправочникОбъект.<Имя справочника> - позволяет модифицировать (записывать) и удалять элемент справочника.
Получить можно с помощью метода ПолучитьОбъект() от ссылки.
СправочникВыборка.<Имя справочника> - предназначен для перебора элементов справочника. Получается при вызове метода «Выбрать» объекта СправочникМенеджер (в отборе можно указывать только проиндексированные реквизиты).
Перебор элементов с помощью метода «Следующий».
Реквизиты
Если в конфигурации идет частый поиск по реквизиту, то имеет смыл у реквизита поставить индексирование. У индексирования есть свои минусы:
- объем базы увеличивается
- время записи элемента справочника увеличивается (не на много)
Если длина кода = 0, то реквизита "Код" у справочника не будет. Аналогично с Наименованием. Максимальная длина кода = 50, максимальная длина наименования = 150.
Контроль уникальности может различаться по серии кодов:
- Во всем справочнике - не будет двойных
- В пределах подчинения - коды будут уникальными только в пределах группы. В разных группах могут быть записи с одинаковыми кодами.
- В пределах подчинения владельцу - коды будут уникальными только в пределах владельца.
При автоматическом формировании номера приоритет отдается префиксу, т.е. если есть элемент с кодом 000999 и элемент с кодом А00001, то следующий элемент будет А00002.
Свойство "Значение заполнения" отвечает за данные по умолчанию.
Табличные части
Количество табличных частей не ограничено.
Есть ограничение на количество строк: 99999.
Иерархия
Если задана "Иерархия групп и элементов",то элементы могут быть подчинены только группам.
Если задана "Иерархия элементов", то элементы будут подчинены другим элементам. Если сначала была иерархия элементов, а потом решили изменить на группы, то элементы, у которых есть подчиненные автоматически станут группами.
Владельцы
Справочник может иметь несколько владельцев, но каждый элемент справочника будет иметь только одного владельца, так как у записи есть только один реквизит Владелец.
Подчинение может быть как элементам, группам, таки тому и другому. Если у справочника есть предопределенные записи то ему нельзя назначить владельца.
Ввод по строке
В поля для ввода по строке можно добавить только индексируемые поля.
Галка "Быстрый выбор" отвечает зато,будет ли запоминаться последние значения и открываться в выпадающем списке, или всегда будет открываться форма списка для выбора.
Модули
Модуль объекта
События при записи:
1. ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>) - срабатывает только в интерактивной форме и при вызове метода ПроверитьЗаполнеиние(). В параметре ПроверяемыеРеквизиты будут (массив) все реквизиты у которых стоит свойство «проверка заполнения» = «Выдавать ошибку». Элементы массива можно удалить, тем самым отменяя свойство «проверка заполнения».
Может быть вызван принудительно с помощью метода ПроверитьЗаполнение().
2. ПередЗаписью(<Отказ>) – можем дозаполнять реквизиты. Можем обращаться к старым значениям реквизита через Ссылка.<Имя реквизита>
3. ПриУстановкеНовогоКода(<СтандартнаяОбработка>, <Префикс>) – для установки префикса нового кода. Вызывается только при создании новых элементов между событиями ПередЗаписью и ПриЗаписи и если установлена Автонумерация. Программно вызывается при вызове метода «УстановитНовыйКод»
4. ПриЗаписи(<Отказ>) – вызывается непосредственно перед записью. Транзакция пока еще не завершена и поэтому есть возможность транзакцию отменить. Вызывается как при интерактивной записи, так и при программной.
События при создании:
• ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) - вызывается при создании элемента справочника. Не вызывается при копировании.
ДанныеЗаполнения - может принимать разные значения. Если элемент создан из списка, то этот параметр типа Структура и содержит данные отбора списка. Если у реквизита поставить свойство "Заполнять из данных заполнения", то этот реквизит будет заполнен автоматически из параметров ДанныеЗаполнения.
Если создается на основе другого элемента, то этот параметр будет содержать элемент, на основе которого создается.
• ПриКопировании(<ОбъектКопирования>) – вызывается при копировании. ОбъектКоприрования содержит объект элемента, который копируем.
События СправочникОбъект при удалении:
• ПередУдалением(<Отказ>) – вызывается перед физическим удалением
Модуль Менеджера
Контекст СправочникМенеджер
События:
ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) – срабатывает при выборе элементов вводом по строке.
Если надо изменить представление элемента спрвочника надо использовать 2 события: ОбработкаПолученияПолейПредставления и ОбработкаПолученияПредставления. В первом формируем набор полей из которых будем формировать представление, во втором формируем само представление.
ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) - формирует набор полей для формирования представления.
Пример:
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Наименование");
Поля.Добавить("ВидНоменклатуры");
КонецПроцедуры
ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) - формирует представление элемента справочника.
Пример:
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Данные.ВидНоменклатуры) Тогда
Представление = Данные.Наименование + " (" + НРег(Строка(Данные.ВидНоменклатуры)) + ")";
Иначе
Представление = Данные.Наименование;
КонецЕсли;
КонецПроцедуры
Разное
Получить предопределенное значение на клиенте: ПредопределенноеЗначение("Справочник.Сотрудники.Шеф");
Быстрая установки пометки удаления - СправочникОбъект.УстановитьПометкуУдаления(<ПометкаУдаления>, <ВключаяПодчиненные>). Не требует последующей записи.
Сформировать ссылку по строковому представлению:
Процедура УстановитьСсылкуИзУИД(СтрокаУИД)
УИД = Новый УникальныйИдентификатор(СтрокаУИД);
НовСсылка = Справочники.Сотрудники.ПолучитьСсылку(УИД);
УстановитьСсылкуНового(НовСсылка);
КонецПроцедуры
Шаблоны использования
//Вывести все типы, которые соответствуют справочникам
Массив = Справочники.ТипВсеСсылки().Типы();
Для Каждого ОчереднойТип из Массив Цикл
Сообщить(ОчереднойТип);
КонецЦикла;
Справочники.ТипВсеСсылки() возвращает описание типов, который содержит все ссылочные типы справочников.
// Получить пустуя ссылку для справочника
Справочники.Номенклатура.ПустаяСсылка()
// Вывести список элементов, расположенных в корне справочника.
Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка());
Пока Выборка.Следующий() Цикл
Если Не Выборка.ЭтоГруппа Тогда
Сообщить(Выборка);
КонецЕсли;
КонецЦикла;
Последовательность событий при записи элемента справочника из формы элемента (записать и закрыть)
Заливкой выделены события, выполняющиеся в транзакции записи.
|