с помощью объекта какого типа можно перебирать элементы справочника

Особенности использования типов данных, предназначенных для манипулирования объектами базы данных

Рассмотрим состав типов, используемых для манипулирования этими сущностями в конфигурации. Мы будем рассматривать состав типов и их использование на примере справочника. Для других перечисленных объектов метаданных имеется аналогичный состав типов.

Тип СправочникМенеджер предоставляют доступ к общим действиям, относящимся к конкретному справочнику. С помощью его методов выполняются действия, относящиеся к справочнику, а не к его конкретным объектам. Например, его методы позволяют создать новый объект или найти объект по коду. Менеджер является своего рода «точкой входа» в конкретный справочник в объектной модели встроенного языка.

Заметим, что объекты типа СправочникиМенеджер и СправочникМенеджер имеются в системе в единственном экземпляре.

с помощью объекта какого типа можно перебирать элементы справочника

Справочник хранится в таблице. Запись таблицы определяет объект базы данных – элемент справочника. Объект базы данных включает не только запись в основной таблице справочника, но и все записи всех табличных частей справочника, относящиеся к данному объекту. Таким образом, объект базы данных представляет собой запись основной таблицы и строки табличных частей.

Назначение типов СправочникСсылка и СправочникОбъект существенно различается. Значение типа СправочникСсылка – хранит ссылку, идентифицирующую объект в базе данных, а значение типа СправочникОбъект позволяет считывать и записывать данные объекта.

Значение типа СправочникСсылка используется везде, где нужно хранить ссылку на элемент. Фактически значение СправочникСсылка хранит только внутренний идентификатор, хранящийся в поле Ссылка таблицы справочника. Это значение хранится в полях других таблиц базы данных, выбирается в поле ввода, указывается в параметрах запроса при поиске по ссылке и т.д. Важно, что значение типа СправочникСсылка можно сравнивать с другим значением типа СправочникСсылка и они буду всегда равны, если это ссылка на один и тот же объект в базе данных (независимо от способа получения и от того откуда получено значение).

Объект может быть создан с помощью менеджера справочника. В этом случае создается новый объект, которого еще нет в базе данных. Если его записать, то появится новый объект в базе данных. Объект может быть получен из ссылки. В этом случае из базы данных считывается существующий объект, на который указывает ссылка. Объект также может быть получен из выборки ( СправочникВыборка ). В этом случае данные объекта заполняются данными, считанными в процессе считывания выборки.

с помощью объекта какого типа можно перебирать элементы справочника

СправочникОбъект оптимизирует запись изменений в базу данных. Например, Если не менялись реквизиты самого объекта, то будет записываться только минимальная информация об изменении. Если не менялись строки табличной части, то табличная часть не будет записываться. Если менялись только отдельные строки или добавлялись строки, то будут записываться только измененные и добавленные строки. Однако если строки удалялись или изменялся порядок строк, то будут записываться все строки табличной части.

Для объектов обеспечивается оптимистическая блокировка. То есть объект не может быть записан, если он был изменен в базе данных после считывания. Этот механизм обеспечивает логическую целостность изменения объектов. Каждый, кто меняет объект, может быть уверен, что его изменения не «затрут» изменений сделанных другими пользователями (сессиями) или другими объектами в этой же сессии. Такая блокировка не препятствует изменению объекта другими сессиями или этой сессией. Однако если с момента считывания объекта и до попытки его записи объект был изменен в базе данных, то запись не будет выполнена.

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

Кроме указанных типов значений справочник определяет несколько расширений элементов управления и форм, предназначенных для интерактивного ввода и просмотра, данных справочника. Расширения не являются типами данных, а добавляют специфические свойства, методы и события к соответствующим объектам. Кроме того, расширения определяют некоторое специфическое поведение форм и элементов управления при конфигурировании и работе пользователя с системой.

Источник

Работа с прикладными объектами средствами встроенного языка

Работа с любым прикладным объектом (объектом конфигурации) похожа на работу с другими объектами, потому что есть общий принцип. Понимая этот принцип, можно быстро освоить все прикладные объекты, будь то справочники, планы счетов, документы, регистры или любой другой прикладной объект.

Данный раздел носит скорее теоретический характер, но для успешной разработки в 1С:Предприятии 8 абсолютно необходимо понимать эту классификацию объектов. В следующей таблице перечислены виды программных объектов с конкретными примерами, их краткое описание, типичные свойства и методы (т.е. встречающиеся у разных объектов):

Вид объектаОписаниеТипичные
свойства и методы
Менеджер прикладных объектов данного типа

Объекты данного вида обеспечивают доступ к менеджерам конкретного прикладного объекта.

Обычно доступ к таким объектам производится через свойства глобального контекста, например, Справочники.Сотрудники, Документы.Счет, РегистрыСведений.КурсыВалют и т.д.

Эти объекты являются коллекциями значений и позволяют перебрать свои элементы с помощью цикла «Для Каждого».

Свойства соответствуют именам прикладных объектов и являются объектами типа «Менеджер прикладного объекта»

Менеджер прикладного объекта

Данный объект является «центральным» в объектной модели, из которого можно получить остальные объекты, например, ссылки, выборки, объекты для изменения, наборы записей и т.д. (см. ниже параграф «Взаимосвязь объектов»).

Объект этого вида обеспечивает доступ к операциям над прикладным объектом как множеством элементов. Через методы этого объекта можно осуществлять поиск, получать выборку, создавать новые записи, обращаться к формам и макетам прикладного объекта.

Данный объект однозначно идентифицирует объект базы данных (например, элемент справочника, документ) и позволяет обращаться к нему в режиме «только чтение». Через свойства и методы этого объекта можно прочитать реквизиты элемента, обратиться к его табличным частям.

Ссылки хранятся в реквизитах, ссылающихся на элементы данного прикладного объекта, например, в реквизите «Сотрудник» документа «ПриемНаРаботу» хранится ссылка на конкретный элемент справочника «Сотрудники».

Заметьте, что у записей регистров нет ссылок.

Этот объект предоставляет возможность обхода (перебора) объектов базы данных. Например, можно перебрать элементы справочника или перебрать документы, входящие в конкретный журнал.

Обратите внимание, что данный объект не является коллекцией значений и, следовательно, нельзя использовать цикл » Для Каждого » для перебора элементов.

Свойства аналогичны свойствам объекта типа «Ссылка».

Предоставляет доступ к элементу с возможностью записи изменений в базу данных. Этот объект содержит методы, влияющие на элемент в базе данных, например, методы Записать и Удалить.

Для отчетов и обработок через этот объект обычно осуществляется формирование отчета или выполнение обработки.

Если в модуле прикладного объекта (не путать с модулем формы) есть экспортируемые переменные модуля или процедуры/функции, то они дополняют набор свойств и методов именно этого программного объекта.

Для регистров подобного объекта не существует, а изменение данных всегда производится через набор записей (см. ниже).

Свойства аналогичны свойствам объекта типа «Ссылка».

Этот программный объект предназначен для управления списком элементов в табличном поле. Позволяет управлять колонками, отбором и сортировкой в списке.

Этот объект нельзя создать программно, он создается системой автоматически при размещении на форме табличного поля. Конечно, программно можно создать табличное поле в экранной форме и тогда будет создан объект данного типа.

Набор записей позволяет оперировать сразу несколькими записями прикладного объекта (обычно регистра). Набор записей можно целиком прочитать из базы данных, добавить в него записи или изменить их, а зетем записать в базу данных (в одной транзакции).

У документов есть свойство-коллекция «Движения», которое предоставляет доступ к наборам записей по каждому регистру, отмеченному на закладке «Движения». Через это свойство обычно производится формирование движений документа при его проведении.

Обеспечивает доступ к одной записи из набора, для того чтобы установить ее измерения, ресурсы и т.д. Этот объект возвращается методами других объектов, например, методом Добавить у объекта типа РегистрНакопленияНаборЗаписей.

Объект типа «Запись» не является постоянным идентификатором конкретной записи регистра, наподобие объекта «Ссылка» для справочников и документов. У записей регистра сведений вообще нет неизменяемого во времени идентификатора и каждая запись регистра однозначно определяется значениями своих измерений (включая системные, например, Период, Регистратор, НомерСтроки)

Этот объект нужен для идентификации записи регистра в табличном поле, например, набора записей документа-регистратора или списка всех записей регистра. Он используется для позиционирования в списке записей на конкретной записи регистра.

Свойства для регистра сведений:

Специфические объекты

Ниже перечислены некоторые важные объекты, которые не укладываются в приведенную выше классификацию:

Менеджер записи регистра сведений

Применяется для операций над одной записью регистра сведений. Этот объект существует только у независимого регистра сведений, т.е. не подчиненного регистратору.

Следует иметь в виду, что даже если редактирование записей производится с использованием менеджера записи, то на нижнем уровне все равно применяется набор записей регистра, т.е. при сохранении/удалении записей срабатывают события модуля набора записей регистра.


Аналогичен объектам типа НаборЗаписей в том смысле, что позволяет прочитать из базы данных или записать в базу данных значения нескольких констант в одной транзакции. Его набор свойств и методов нетипичен по сравнению с наборами записей, поэтому он вынесен в специфические объекты.

Менеджер внешних обработок подобен менеджерам других прикладных объектов. Его метод Создать( ) позволяет создать объект типа «ВнешняяОбработка». Этот объект, в свою очередь, подобен объектам ОтчетОбъект и ОбработкаОбъект и предоставляет доступ к реквизитам и табличным частям внешней обработки для передачи параметров формирования отчета или выполнения обработки.

Если в модуле внешней обработки (не путать с модулем формы) есть экспортируемые переменные модуля или процедуры/функции, то они дополняют набор свойств и методов объекта «ВнешняяОбработка».

Взаимосвязь объектов

Ниже показана взаимосвязь программных объектов, характерная для объектов, имеющих ссылки (на примере справочников):

с помощью объекта какого типа можно перебирать элементы справочника

А теперь немного другая взаимосвязь, характерная для регистров (на примере регистров накопления):

с помощью объекта какого типа можно перебирать элементы справочника

Как видите, левые части этих схем очень похожи, а правые части различаются. Не думайте, что объект «Ключ записи» аналогичен объектам «Ссылка», а объекты «НаборЗаписей» и «Запись» аналогичны объекту «Объект», хотя некоторое сходство прослеживается.

Источник

Программирование в 1С для всех

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

Для создания выборки справочника следует использовать методы менеджера справочника Выбрать и ВыбратьИерархически (только для справочников с иерархией), а для создания выборки документов – Выбрать.

Для простой выборки.

Для иерархической выборки.

Поскольку выборка это объект, предназначенный для перебора элементов, то для выполнения перебора элементов следует делать обход выборки. Обход выборки осуществляется при помощи цикла. Обход выборки осуществляется динамически, это значит, что при создании выборки не все элементы выбираются сразу из базы данных, а получение элементов происходит порциями, частями. Для обхода используется метод выборки Следующий. Этот метод возвращает Истина, когда следующий элемент выбран, и Ложь, когда достигнут конец выборки.

Обойти выборку документов можно так:

А справочников, соответственно так:

В процессе обхода выборки, мы можем обращаться напрямую ко всем реквизитам того объекта, который выбран на текущей итерации.

В результате, выведется информация обо всех контрагентах.

с помощью объекта какого типа можно перебирать элементы справочника

Поскольку, Контрагенты иерархический справочник, то в выборке присутствуют и группы, и элементы.

Мы не можем получить выборку только элементов или групп, поэтому, чтобы вывелись только элементы, необходимо воспользоваться стандартным реквизитом справочника ЭтоГруппа, этот реквизит имеет значение Истина, когда элемент является группой, и Ложь – когда просто элемент.

Можно код выше исправить следующим образом:

Тогда выведутся только элементы.

с помощью объекта какого типа можно перебирать элементы справочника

У метода менеджера справочника Выбрать существует четыре необязательных параметра.

Первый параметр позволяют формировать выборку элементов с указанным родителем, а второй с указанным владельцем. Третий параметр имеет тип Структура и позволяет отбирать элементы по определённому условию.

Например, у справочника Контрагенты имеется реквизит ТипКонтрагента, который имеет тип ссылка на перечисление ТипыКонтрагентов.

с помощью объекта какого типа можно перебирать элементы справочника

У этого перечисления два значения Покупатель и Поставщик. Если требуется, чтобы выборка выше выводила только покупателей, то следует создать структуру с единственным ключом, название которого должно совпадать с названием реквизит справочника, а в значение структуры указать нужное значение перечисления.

В этом случае будут отобраны только контрагенты-покупатели.

с помощью объекта какого типа можно перебирать элементы справочника

Обратите внимание, что в случае установки отбора нет смысла отсекать группы. Они не попадут в выборку, поскольку этот реквизит у них не заполнен.

Также, имейте в виду, что отбор можно производить только по стандартным реквизитам Наименование, Код, а также по тем реквизитам, у которых в свойстве Индексировать установлено значение Индексировать или Индексировать с доп. Упорядочиванием.

Иерархическая выборка справочников 1С

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

с помощью объекта какого типа можно перебирать элементы справочника

Для обычной выборки будет следующий код:

И следующий результат:

с помощью объекта какого типа можно перебирать элементы справочника

Все элементы и группы вывелись как попало, при следующей структуре справочника:

с помощью объекта какого типа можно перебирать элементы справочника

А теперь посмотрим, как будут выведены группы и элементы при иерархической выборке.

Получится следующий результат:

с помощью объекта какого типа можно перебирать элементы справочника

Элементы вывелись в иерархическом порядке. Иерархическая выборка перебирает элементы следующем образом: сначала выбирается элемент самого верхнего уровня, потом если это группа, то отбирается элемент, который входит в эту группу и т.д.

А если мы воспользуемся методом выборки справочников УровеньВВыборке, то сможем увидеть порядок вложенности.

Будет следующий результат:

с помощью объекта какого типа можно перебирать элементы справочника

Где 0 – самый высший уровень (элемент или группа не входят ни в какие группы), 1 – следующий уровень (элемент или группа входят в группу высшего уровня) и т.д.

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

Метод ПолучитьОбъект выборки

Выборка возвращает только ссылку на объект, сам объект мы изменять не можем. Мы можем обратиться к экземпляру объекта отобранной выборкой ссылкой, если воспользуемся методом ПолучитьОбъект().

Например, в этом коде пытаемся всем элементам справочника Номенклатура с видом Товары, обнулить этот вид, присвоив пустую ссылку перечисления.

Для записи элемента использовалась попытка.

Читайте также по теме:

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

с помощью объекта какого типа можно перебирать элементы справочника

Книга написана понятным и простым языком — для новичка.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

с помощью объекта какого типа можно перебирать элементы справочника

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

Источник

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

В данном случае происходит следующее. Посредством объекта СправочникиМенеджер (Справочники) мы получаем доступ к объекту СправочникМенеджер для справочника Номенклатура и выполняем его метод СоздатьЭлемент. Этот метод возвращает нам объект типа СправочникОбъект ( доступ к нему возможен через переменную НовыйЭлемент).

Оператор[…], который используется в данной конструкции, заменяет конструкцию с точкой и жестко заданным именем справочника.

После того, как мы получили переменную типа СправочникОбъект, мы можем настроить необходимые свойства конкретного элемента справочника (в нашем случае – наименование) и записать элемент. Вот, как выглядит результирующий код:

Вот, каковы результаты работы этого кода, рис. 5.10.

с помощью объекта какого типа можно перебирать элементы справочника

Функция СоздатьЭлементСправочникаНаСервере создает новый элемент, заполняет его свойство Наименование, после чего записывает его и возвращает код нового элемента. Код формируется системой автоматически. Если заглянуть в справочник ЕдиницыИзмерения – там, действительно, будет создан новый элемент с заданным нами наименованием.

В процедуре ПометитьНаУдаление() мы сначала присваиваем 0 переменной СчетчикПомеченых – с ее помощью мы будем подсчитывать количество помеченных на удаление элементов справочника. В качестве имени справочника мы используем уже знакомый по прошлой процедуре реквизит ИмяСправочника. Конструкция Справочники[ИмяСправочника] позволяет нам обратиться к объекту типа СправочникМенеджер для заданного справочника. Этот объект имеет метод Выбрать(). Метод Выбрать() позволяет сформировать выборку элементов справочника по заданным условиям. Мы, в данном случае, условий не задаем, то есть в выборку попадают все элементы и группы справочника – метод возвращает значение типа СправочникВыборка. СправочникВыборка не содержит элементов справочника, объект этого типа можно считать способом доступа к элементам, способом их перебора. При обращении к выборке обход элементов осуществляется динамически, данные считываются из базы порциями, что позволяет эффективно использовать данный механизм даже для работы с большими справочниками, так как все элементы, входящие в выборку (соответствующие условиям выборки) в память не загружаются.

Рассмотрим пример. В заданном справочнике нужно найти элемент с заданным наименованием (или сообщить, что элемента с таким наименованием в справочнике нет), изменить регистр символов в наименовании таким образом, чтобы все буквы были прописными, и сообщить пользователю его код с указанием старого и нового наименования.

Обычным образом добавим в форму обработки новую команду, для указания имени справочника и наименования искомого элемента используем те же реквизиты ИмяСправочника и НаименованиеЭлемента, реорганизуем элементы управления на форме, рис. 5.11.

с помощью объекта какого типа можно перебирать элементы справочника

с помощью объекта какого типа можно перебирать элементы справочника

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

СправочникиМенеджер – доступен через свойство глобального контекста Справочники. Предназначен для управления справочниками, позволяет получить доступ к объекту СправочникМенеджер конкретного справочника.

СправочникМенеджер – нужен для управления справочником как объектом конфигурации. С его помощью можно создавать элементы и группы справочника, искать элементы в справочнике, помечать их на удаление, получать выборки элементов справочника.

СправочникВыборка – объект этого типа предназначен для работы с выборкой элементов справочника, полученной по заданным условиям. Для получения выборки используется метод Выбрать() объекта СправочникМенеджер

СправочникСсылка – основная область применения – использование в реквизитах других объектов для указания ссылки на определенный элемент справочника. Ссылка – это идентификатор элемента. Если имеется объект СправочникСсылка, а элемент справочника нужно редактировать или выполнять с ним другие подобные действия ( копирование элемента, например), от ссылки осуществляется переход к объекту типа СправочникОбъект.

СправочникОбъект – предназначен для манипуляций с отдельным элементом справочника, в частности, для чтения, изменения, добавления, удаления элементов.

Для работы с метаданными справочника можно использовать свойство глобального контекста Метаданные, или, например, метод Метаданные() объекта типа СправочникСсылка. Для работы с метаданными справочника применяется тип данных ОбъектМетаданных: Справочник.

Обсудив программную работу со справочниками, перейдем к разговору об отчетах

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вид объектаСоответствующий
прикладной объект
Описание
Планы счетовПрименяется для работы со списком видов субконто, прикрепленных к данному счету.
Регистры бухгалтерииСвойство Субконто объекта РегистрБухгалтерииЗапись является объектом именно этого типа. Данный объект является коллекцией значений и позволяет управлять значениями субконто для конкретной записи регистра бухгалтерии.