СправочникОбъект предназначен для манипуляций с отдельным элементом справочника, в частности, для чтения, изменения, добавления, удаления элементов.
Программная работа со справочниками, обработки, простые отчеты
В данном случае происходит следующее. Посредством объекта СправочникиМенеджер (Справочники) мы получаем доступ к объекту СправочникМенеджер для справочника Номенклатура и выполняем его метод СоздатьЭлемент. Этот метод возвращает нам объект типа СправочникОбъект ( доступ к нему возможен через переменную НовыйЭлемент).
В нашем случае имя справочника задает пользователь , оно нам заранее неизвестно. В том случае, если имя справочника для вышеописанной конструкции будет, перед обращением к менеджеру справочника, записано в некую переменную, мы можем использовать такую конструкцию (в нашем случае имя справочника хранится в текстовой переменной ИмяСправочника):
Оператор[…], который используется в данной конструкции, заменяет конструкцию с точкой и жестко заданным именем справочника.
После того, как мы получили переменную типа СправочникОбъект, мы можем настроить необходимые свойства конкретного элемента справочника (в нашем случае – наименование) и записать элемент. Вот, как выглядит результирующий код:
Функция СоздатьЭлементСправочникаНаСервере создает новый элемент, заполняет его свойство Наименование, после чего записывает его и возвращает код нового элемента. Код формируется системой автоматически. Если заглянуть в справочник ЕдиницыИзмерения – там, действительно, будет создан новый элемент с заданным нами наименованием.
Продолжим наши примеры программной работы со справочниками. Нам нужно реализовать автоматическую пометку всех элементов (но не групп) справочника на удаление. Создадим новую команду ПометитьНаУдалениеВсеЭлементыСправочника. После создания процедуры , связанной с этой командой и серверной процедуры, выполняющей работу с базой. У нас получился такой код:
Промокоды на Займер на скидки
После установки пометки удаления мы увеличиваем счетчик СчетчикПомеченных и переходим к следующей итерации цикла . Когда цикл перебора элементов выборки завершается, мы выводим сообщение о количестве элементов, помеченных на удаление в справочнике, имя которого задано в реквизите ИмяСправочника.
Рассмотрим пример. В заданном справочнике нужно найти элемент с заданным наименованием (или сообщить, что элемента с таким наименованием в справочнике нет), изменить регистр символов в наименовании таким образом, чтобы все буквы были прописными, и сообщить пользователю его код с указанием старого и нового наименования.
Обычным образом добавим в форму обработки новую команду, для указания имени справочника и наименования искомого элемента используем те же реквизиты ИмяСправочника и НаименованиеЭлемента, реорганизуем элементы управления на форме, рис. 5.11.
Поиск , редактирование заданного элемента и вывод необходимых сообщений реализуется с помощью следующего кода:
Итак, мы обсудили различные типы данных, которые могут встретиться вам при работе со справочниками. Подведем краткие итоги по их основным особенностям и использованию
Отличия быстрого поиска в 1С: Предприятие версии 8.3 и 8.2 | 1С: Предприятие | Учебные статьи
Уникальность этот определенный ключ отвечающий за уникальность формы, если этот параметр указан, то при открытии формы будет произведен поиск формы открытой с этим ключом и если такая будет найдена, то будет активирована уже открытая форма.
Пример использования
Пример кода с использованием метода НайтиПоИдентификатору() :
УдалитьДанныеИзСоответствия ( ДанныеСтроки . НомерСтроки );
КонецПроцедуры
Индекс = – 1 ;
Для Каждого Строка Из Объект . ПрикрепленныеФайлы Цикл
Индекс = Макс ( Индекс , Строка . ПолучитьИдентификатор ());
КонецЦикла;
КонецПроцедуры
Для Каждого Строка Из Объект . ПрикрепленныеФайлы Цикл
ИндексТекущейСтроки = Строка . ПолучитьИдентификатор ();
Если Не Соответствие [ ИндексТекущейСтроки ] = Неопределено Тогда
// Записать файл
ТекущийОбъект . ПрикрепленныеФайлы [ Строка . НомерСтроки – 1 ]. Файл = Соответствие [ ИндексТекущейСтроки ];
// Удаление соответствия
Соответствие . Удалить ( ИндексТекущейСтроки );
КонецЕсли;
КонецЦикла;
Хранилище = Новый ХранилищеЗначения ( Соответствие );
КонецПроцедуры
Соответствие = Хранилище . Получить ();
Соответствие . Вставить ( Индекс , Новый ХранилищеЗначения ( Файл ));
Хранилище = Новый ХранилищеЗначения ( Соответствие );
ЗначениеВРеквизитФормы ( СправочникОбъект , «Объект» );
КонецПроцедуры
&НаСервере
Процедура УдалитьДанныеИзСоответствия ( ТекущаяСтрока );
ИндексТекущейСтроки = Объект . ПрикрепленныеФайлы [ ТекущаяСтрока – 1 ]. ПолучитьИдентификатор ();
Соответствие = Хранилище . Получить ();
Соответствие . Удалить ( ИндексТекущейСтроки );
Хранилище = Новый ХранилищеЗначения ( Соответствие );
КонецПроцедуры .
Имя параметра | Тип | Описание |
---|---|---|
Идентификатор | Число | Идентификатор элемента списка значений. |
Жирным шрифтом выделены обязательные параметры |
НОУ ИНТУИТ | Лекция | Программная работа со справочниками, обработки, простые отчеты
Пример использования
Пример кода с использованием метода НайтиПоИдентификатору() :
УдалитьДанныеИзСоответствия ( ДанныеСтроки . НомерСтроки );
КонецПроцедуры
Индекс = – 1 ;
Для Каждого Строка Из Объект . ПрикрепленныеФайлы Цикл
Индекс = Макс ( Индекс , Строка . ПолучитьИдентификатор ());
КонецЦикла;
КонецПроцедуры
Для Каждого Строка Из Объект . ПрикрепленныеФайлы Цикл
ИндексТекущейСтроки = Строка . ПолучитьИдентификатор ();
Если Не Соответствие [ ИндексТекущейСтроки ] = Неопределено Тогда
// Записать файл
ТекущийОбъект . ПрикрепленныеФайлы [ Строка . НомерСтроки – 1 ]. Файл = Соответствие [ ИндексТекущейСтроки ];
// Удаление соответствия
Соответствие . Удалить ( ИндексТекущейСтроки );
КонецЕсли;
КонецЦикла;
Хранилище = Новый ХранилищеЗначения ( Соответствие );
КонецПроцедуры
Соответствие = Хранилище . Получить ();
Соответствие . Вставить ( Индекс , Новый ХранилищеЗначения ( Файл ));
Хранилище = Новый ХранилищеЗначения ( Соответствие );
ЗначениеВРеквизитФормы ( СправочникОбъект , «Объект» );
КонецПроцедуры
&НаСервере
Процедура УдалитьДанныеИзСоответствия ( ТекущаяСтрока );
ИндексТекущейСтроки = Объект . ПрикрепленныеФайлы [ ТекущаяСтрока – 1 ]. ПолучитьИдентификатор ();
Соответствие = Хранилище . Получить ();
Соответствие . Удалить ( ИндексТекущейСтроки );
Хранилище = Новый ХранилищеЗначения ( Соответствие );
КонецПроцедуры .
Уникальность этот определенный ключ отвечающий за уникальность формы, если этот параметр указан, то при открытии формы будет произведен поиск формы открытой с этим ключом и если такая будет найдена, то будет активирована уже открытая форма.
Уникальность
Событие, состоящее в выпадение двух абсолютно одинаковых чисел из последовательности, максимальный член которой имеет порядок 10 в 38 степени, очевидно, является маловероятным. Именно на этом и основан принцип глобального уникального идентификатора.
Каждый идентификатор содержит 128 бит информации, записанный в виде шестнадцатиричного числа ( в 1С имеет вид a96ca0cd-b164-11e6-80c2-00155d001fe4). Простенький код (Рис.1) позволяет получить УИ любого элемента базы данных.
Конечно, полностью гарантировать уникальность отдельно взятого значения невозможно. Однако, шансы на то, что при работе приложений и сервис возникнут два разных объекта с одинаковым GUID крайне малы.
Дерево значение в 1С 8.3 на примерах
- Для текущей строки таблицы формы идентификатор хранится в свойстве ТекущаяСтрока;ТекущаяСтрока = Элементы.ТаблицаТоваров.ТекущаяСтрока;
- Идентификаторы выделенных строк таблицы формы можно получить при помощи свойства ВыделенныеСтроки. В нем содержится массив идентификаторов.ВыделенныеСтроки = Элементы.ТаблицаТоваров.ВыделенныеСтроки;
- Идентификатор можно получить непосредственно из строки источника таблицы формы. Для этого используется метод ПолучитьИдентификатор(). Его можно применять и на клиенте и на сервере.Для Каждого СтрокаИсточника Из ТаблицаТоваров Цикл Идентификатор = СтрокаИсточника.ПолучитьИдентификатор();КонецЦикла;
Синтаксис
Метод НайтиПоИдентификатору() имеет следующий синтаксис:
Многие объекты метаданных в 1С могут иметь табличную часть. У одного объекта может быть создано неограниченное количество табличных частей.
Табличная часть может быть создана только как подчиненный объект у какого-либо объекта метаданных, например у справочника или у документа.
Строка табличной части не является отдельным объектом. К строке можно обратиться только по индексу строки в табличной части.
Программно нельзя создать табличную часть через конструктор. Можно только получить к ней доступ через основной объект:
НовыйДок = Документы . РасходТовара . СоздатьДокумент ( ) ;
//через объект получаем доступ к табличной части СписокУслуг
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы