Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦОО_ПОЭИС_Л3.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
157.7 Кб
Скачать

Приемы программирования

С помощью встроенного языка 1C:Предприятия 8 можно вы­полнять различные операции над справочниками: создавать, из­менять и удалять элементы, искать нужный элемент, перебирать элементы в цикле и т.д.

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

Ниже описываются эти объекты и взаимосвязи между ними:

  • СправочникиМенеджер

Обеспечивает доступ ко всем справочникам конфигурации. Свойства этого объекта совпадают с именами справочников и содержат объекты типа СправочникМенеджер.

  • СправочникМенеджер

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

  • СправочникСсылка

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

  • СправочникОбъект

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

  • СправочникВыборка

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

  • СправочникСписок

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

Продемонстрируем на примерах выполнение типичных операции со справочниками.

Обращение к менеджеру справочника

Обращение к менеджеру справочника производится следующим образом:

СпрСотр = Справочники.Сотрудники;

СпрТовары = Справочники["Номенклатура"];

1. Первый вариант (через точку) применяется, когда имя спра­вочника известно программисту и оно неизменно. Такая кон­струкция более простая и рекомендуется к применению в большинстве случаев.

2. Во втором варианте имя справочника задается строкой. Такая конструкция может быть использована, когда неизвестно имя справочника, с которым будут производиться действия, напри­мер, в универсальном отчете ПечатьСправочника, который выводит на печать содержимое любого заданного справочника.

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

Ниже показываются два варианта обращения к справочнику, пер­вый из которых ошибочный:

СпрСотр = Новый Справочники.Сотрудники; // так нельзя!!

СпрСотр = Справочники.Сотрудники; //а вот так правильно

Выборка элементов справочника

Перебор элементов справочника производится через объект СправочникВыборка, который возвращается при вызове методов Выбрать и ВыбратьИерархически объекта СправочникМенеджер:

СпрВыборка = Справочники.Номенклатура.Выбрать();

Пока СпрВыборка.Следующий()Цикл

Сообщить(СпрВыборка.Код + " " + СпрВыборка.Наименование);

//перебор строк табличной части

Для Каждого стр Из СпрВыборка.ЕдиницыИзмеренияТовара Цикл

Сообщить(" " + стр.ЕдиницаИзмерения);

КонецЦикла

КонецЦикла;

Отличие метода ВыбратьИерархически от метода Выбрать за­ключается в том, что выборка формируется с учетом иерархии элементов, то есть сначала в выборке располагается родительский элемент 1-го уровня, за ним следуют его дочерние элементы, за­тем следующий родительский элемент 1-го уровня и т.д. А при использовании метода Выбрать элементы в выборке следуют в обычном порядке.

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

Синтаксическая диаграмма метода Выбрать и ВыбратьИерар­хически такова (на примере метода Выбрать):

  • Выбрать(<Родитель>, <Владелец>, <0тбор>, <Порядок>) ;

Ниже поясняется назначение каждого параметра:

Родитель

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

Владелец

Ссылка на элемент справочника-владельца. В выборку по­падут только элементы, принадлежащие заданному элемен­ту-владельцу. Параметр имеет смысл только для подчинен­ных справочников.

Отбор

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

Порядок

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

Например, выберем из справочника Номенклатура только мониторы и упорядочим их по убыванию цены:

СпрНоменклатура = Справочники.Номенклатура;

ГруппаМониторы= СпрНоменклатура.НайтиПоНаименованию("Мониторы");

СпрВыборка = СпрНоменклатура.Выбрать(ГруппаМониторы,,,"Цена Убыв");

Пока СпрВыборка.Следующий() Цикл

КонецЦикла;

В следующем примере из справочника Семья, подчиненного спра­вочнику Сотрудники, выбираются все сыновья определенного сотрудника. Здесь используется одновременный отбор по вла­дельцу и по реквизиту ТипРодства:

Отбор = Новый Структура("ТипРодства");

Отбор.ТипРодства = Перечисления.ТипРодства.Сын;

СпрВыборка = Справочники.Семья.Выбрать(,ВыбСотр,Отбор,);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]