Предназначен для чтения, изменения, добавления и удаления элементов справочника. Важно! У всех событий этого объекта назначены предопределенные процедуры-обработчики. Имена процедур соответствует именам событий. Процедуры должны располагаться в модуле справочника.
Полное описание, параметры и ограничения
СправочникОбъект.<Имя справочника> (CatalogObject.<Catalog name>)
СправочникОбъект.<Имя справочника> (CatalogObject.<Catalog name>)
Доступен, начиная с версии 8.0.
Свойства:
<Имя общего реквизита> (<Common attribute name>)
<Имя реквизита> (<Attribute name>)
<Имя табличной части> (<Tabular section name>)
ВерсияДанных (DataVersion)
Владелец (Owner)
ДополнительныеСвойства (AdditionalProperties)
ЗаписьИсторииДанных (WriteDataHistory)
ИмяПредопределенныхДанных (PredefinedDataName)
Код (Code)
Наименование (Description)
ОбменДанными (DataExchange)
ПометкаУдаления (DeletionMark)
Предопределенный (Predefined)
Родитель (Parent)
Ссылка (Ref)
ЭтоГруппа (IsFolder)
ЭтотОбъект (ThisObject)
Методы:
Заблокирован (IsLocked)
Заблокировать (Lock)
Записать (Write)
Заполнить (Fill)
Метаданные (Metadata)
Модифицированность (Modified)
ПолноеНаименование (FullDescr)
ПолныйКод (FullCode)
ПолучитьМакет (GetTemplate)
ПолучитьСсылкуНового (GetNewObjectRef)
ПолучитьФорму (GetForm)
ПринадлежитЭлементу (BelongsToItem)
ПроверитьЗаполнение (CheckFilling)
Прочитать (Read)
Разблокировать (Unlock)
Скопировать (Copy)
Удалить (Delete)
Уровень (Level)
УстановитьКомментарийВерсииИсторииДанных (SetDataHistoryVersionComment)
УстановитьНовыйКод (SetNewCode)
УстановитьПометкуУдаления (SetDeletionMark)
УстановитьСсылкуНового (SetNewObjectRef)
ЭтоНовый (IsNew)
События:
ОбработкаЗаполнения (Filling)
ОбработкаПроверкиЗаполнения (FillCheckProcessing)
ОбработкаФормированияПоВерсииИсторииДанных (GenerateFromDataHistoryVersionProcessing)
ПередЗаписью (BeforeWrite)
ПередУдалением (BeforeDelete)
ПриЗаписи (OnWrite)
ПриКопировании (OnCopy)
ПриУстановкеНовогоКода (OnSetNewCode)
Описание:
Предназначен для чтения, изменения, добавления и удаления элементов справочника.
Важно! У всех событий этого объекта назначены предопределенные процедуры-обработчики. Имена процедур соответствует именам событий. Процедуры должны располагаться в модуле справочника.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Данный объект может быть сериализован в/из XML. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/enterprise/current-config}. Имя типа XDTO: CatalogObject.<Имя справочника>.
См. также:
СправочникСсылка.<Имя справочника>, метод ПолучитьОбъект
СправочникВыборка.<Имя справочника>, метод ПолучитьОбъект
СправочникСсылка.<Имя справочника>, метод Скопировать
СправочникМенеджер.<Имя справочника>, метод СоздатьГруппу
СправочникМенеджер.<Имя справочника>, метод СоздатьЭлемент
СправочникОбъект.<Имя справочника>, свойство ЭтотОбъект
СправочникОбъект.<Имя справочника>, метод Скопировать
СправочникОбъект.<Имя справочника>, событие ПриКопировании
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Создать товар в памяти и убедиться, что записи ещё нет
Новый объект справочника можно заполнить до записи. Различаем объект, ссылку и дополнительную служебную структуру.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.
Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.
Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.
Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.
Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.
Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
КонецЕсли;
Товар = Справочники.УчебныеТовары.СоздатьЭлемент();
Товар.Наименование = "Учебная книга";
Товар.Артикул = "A-01";
Товар.Цена = 250;
Товар.ДополнительныеСвойства.Вставить("ИсточникУчебныхДанных", "Пример в памяти");
Сообщить(Товар.ЭтоНовый());
Сообщить(Товар.Ссылка.Пустая());
Сообщить(Не Товар.ЭтоГруппа);
Сообщить(Не Товар.ПометкаУдаления);
Сообщить(Товар.Метаданные().Имя = "УчебныеТовары");
Сообщить(Товар.Наименование);
Сообщить(Товар.ДополнительныеСвойства.ИсточникУчебныхДанных);
Сообщить(Товар.Модифицированность());
Сообщить("Записать не вызывался: товар существует только как объект в памяти");Разбор по шагам
СоздатьЭлемент создаёт объект, но не выполняет запись. Наименование, Артикул и Цена присваиваются его реквизитам в памяти.
До записи у этого нового объекта ссылка пустая. ЭтоНовый проверяет состояние объекта, Пустая — состояние ссылки.
ДополнительныеСвойства — служебная Структура, не новый реквизит справочника и не автоматическое сохранение в базе.
Модифицированность показывает изменения этого экземпляра, не проверяет параллельные действия других пользователей.
Как проверить результат
ЭтоНовый, Пустая ссылки, проверки группы/пометки и имени метаданных дают Истина.
В сообщениях Учебная книга и Пример в памяти; экземпляр заполнен.
Откройте список УчебныеТовары: новая строка не появилась, поскольку Записать отсутствует.
Ожидаемый результат
Заполнен один новый объект справочника без изменения данных базы.
На что обратить внимание
Создание экземпляра не выполняет бизнес-проверки записи и не гарантирует, что объект можно сохранить.
Нельзя вызывать Прочитать у нового объекта: в базе пока нет строки для чтения.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Назначить новому товару ссылку, не создавая запись в базе
ПолучитьСсылку строит ссылку из UUID. Такая ссылка ещё не означает существование товара. Назначаем её новому объекту и проверяем это различие.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.
Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.
Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.
Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.
Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.
Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
КонецЕсли;
Идентификатор = Новый УникальныйИдентификатор;
ПлановаяСсылка = Справочники.УчебныеТовары.ПолучитьСсылку(Идентификатор);
Товар = Справочники.УчебныеТовары.СоздатьЭлемент();
Товар.Наименование = "Учебная книга со ссылкой";
Товар.УстановитьСсылкуНового(ПлановаяСсылка);
Сообщить(Товар.ПолучитьСсылкуНового() = ПлановаяСсылка);
Сообщить(ПлановаяСсылка.УникальныйИдентификатор() = Идентификатор);
Сообщить(Не ПлановаяСсылка.Пустая());
Сообщить(Товар.ЭтоНовый());
Сообщить(ПлановаяСсылка.ПолучитьОбъект() = Неопределено);
Сообщить(ПлановаяСсылка.Метаданные().Имя = "УчебныеТовары");Разбор по шагам
Новый UUID задаёт идентичность предполагаемой ссылки; ПолучитьСсылку не читает и не создаёт объект в базе.
УстановитьСсылкуНового применим к новому незаписанному объекту. Проверка уникальности выполняется при будущей записи.
ПолучитьСсылкуНового возвращает назначенное значение, которое сравниваем с плановой ссылкой.
Непустая ссылка может вести к отсутствующей записи. Поэтому отдельно проверяем ПолучитьОбъект на Неопределено.
Как проверить результат
Все шесть сравнений дают Истина для нового случайного UUID в пустой учебной базе.
Товар остаётся новым, список справочника не изменяется.
ПолучитьОбъект для плановой ссылки возвращает Неопределено, а не новый автоматически записанный товар.
Ожидаемый результат
Показано различие между непустой ссылкой, назначением идентичности и существованием записи.
На что обратить внимание
Не назначайте ссылку существующего товара новому объекту: это не способ обновления данных.
Случайный UUID не является кодом товара, артикулом или универсальным ID внешнего API. Контракт обмена проектируют отдельно.
Не вызывайте свойства данных у ссылки на отсутствующий объект в расчёте на автоматическое создание записи.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.