Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование на платформе 1С Предприятие 8.3. Учебное пособие
.pdf
4.3. Реквизиты справочников
61
Подчиненный справочник задается свойством Владелец в окне его
свойств. Справочник, которому подчинен данный справочник, называется
владельцем. Одному элементу владельца может соответствовать несколько
элементов подчиненного справочника.
Один элемент подчиненного справочника имеет только одного вла-
дельца из справочника-владельца или не имеет его, если он не назначен.
У справочника может быть несколько справочников-владельцев.
Использование подчиненных справочников позволяет реализовать
иерархию при помощи нескольких одноуровневых справочников.
Рассмотрим иерархию сотрудников таганрогского кампуса ЮФУ,
изображенную на рис. 4.2. На ее первом уровне находятся институты, на
втором – кафедры, на третьем – сотрудники.
Такую же иерархию можно реализовать тремя справочниками: Ин-
ституты, Кафедры, Сотрудники. При этом справочник Кафедры будет
подчинен справочнику Институты, а справочник Сотрудники – подчинен
справочнику Кафедры. Структура подчинения справочников изображена
на рис. 4.7.
Рис. 4.7. Структура подчинения справочников
4.3. Реквизиты справочников
Справочники имеют два обязательных реквизита.
1. Код – используется системой для доступа к элементу справочника
(может быть числовым или текстовым, длина кода ограничивает количество элементов справочника).
2. Наименование – используется для отображения элементов спра-
вочника системой, имеет текстовый тип.
Институты
ИКТИБ
ИРТСУ
ИУЭС
ИНЭП
Кафедры
МОП ЭВМ
САиТ
САПР
ВТ
Преподаватели
Преподаватель 1
Преподаватель 2
Преподаватель 3
Преподаватель 4

4. Справочники
62
Параметры Кода и Наименования могут быть настроены в окне
свойств справочника.
Помимо обязательных реквизитов, существует ряд предопределенных реквизитов, которые используются средствами встроенного языка:
ЭтоГруппа – Истина или Ложь, в зависимости от того, является ли
текущий элемент группой или нет.
Родитель – ссылка на группу справочника, к которой принадлежит
текущий элемент.
Владелец – ссылка на элемент справочника-владельца, которому
подчинен текущий элемент.
ПометкаУдаления – Истина, если текущий элемент помечен на
удаление и Ложь в противном случае.
Предопределенный – Истина, если текущий элемент предопреде-
лен в конфигураторе, Ложь в противном случае.
Разработчик может создавать произвольное количество реквизитов,
предназначенных для хранения данных. После создания в конфигураторе,
реквизит справочника становится доступен средствами встроенного языка.
При этом для доступа к реквизиту используется его идентификатор, заданный в конфигураторе.
4.4. Примеры работы со справочниками
Ссылка на справочник
Для работы со справочником в каком-либо программном модуле
требуется сначала создать ссылку на этот справочник. Это делается при помощи типового присваивания:
СпрСотрудники= Справочники.Сотрудники;
Теперь переменная СпрСотрудники имеет тип СотрудникиСсылка,
т.е. ссылка на элемент справочника Сотрудники. Однако пока эта ссылка
является пустой и не указывает ни на какой элемент справочника.
Создание и запись нового элемента справочника
НовЭл= Справочники.Сотрудники.СоздатьЭлемент();
// Заполняем реквизиты нового элемена справочника
НовЭл.Наименование= "Петров Петр Петрович";

4.4. Примеры работы со справочниками
63
НовЭл.Оклад= 25000;
НовЭл.Записать(); // именно в этот момент происходит запись в базу
данных
Создание и запись новой группы справочника (для иерархиче-
ского справочника)
Нов = Справочники.Сотрудники.СоздатьГруппу();
Нов.Наименование= "Работающие";
Нов.Записать();
Поиск элемента справочника
СпрСотр = Справочники.Сотрудники;
НайденныйСотр= СпрСотр.НайтиПоКоду(123); //ищем по коду
НайденныйСотр= СпрСотр.НайтиПоНаименованию("Иванов Иван
Иванович");//по наименованию
НайденныйСотр= СпрСотр.НайтиПоРеквизиту("Оклад",
5000); //по реквизиту
//далее нужно проверить найденное значение
ЕслиНайденныйСотр= Неопределено Тогда
//элемент не найден
КонецЕсли;
Удаление элемента справочника
СпрСотр = Справочники.Сотрудники;
СпрСотр.Удалить(); //непосредственное удаление текущего эле-
мента
СпрСотр.УстановитьПометкуУдаления(Истина); //пометка на уда-
ление
СпрСотр.УстановитьПометкуУдаления(Ложь);//снять пометку на
удаление
//можно проверить, помечен ли элемент на удаление
Пометка = СпрСотр.ПометкаУдаления;
Если Пометка = Истина Тогда
//элемент помечен на удаление
КонецЕсли;
Перебор элементов справочника
Выборка = Справочники.Сотрудники.Выбрать();

4. Справочники
64
Пока Выборка.Следующий() = 1 Цикл // начало перебора элементов
справочника в цикле
//действия с очередным элементом ...
Сообщить("Сотрудник " + Выборка.Наименование);
КонецЦикла;
Перебор элементов внутри группы
// Группа в терминах 1С – это "родитель".
СпрСотр = Справочники.Сотрудники;
ГруппаРаботающие= СпрСотр.НайтиПоНаименованию("Работаю-
щие");
Выборка = СпрСотр.Выбрать(ГруппаРаботающие);
Пока Выборка.Следующий() = 1 Цикл
//действия с очередным элементом
Сообщить("Сотрудник " + Выборка.Наименование);
КонецЦикла;
Перебор элементов справочника, подчиненных владельцу из
другого справочника
// Пусть справочник НалоговыеЛьготы подчинен справочнику Со-
трудники.
Выборка = Справочники.НалоговыеЛьготы.Выбрать(,Сотруд-
ник);//тут //Сотрудник - ссылка на элемент справочника сотрудники
Пока Выборка.Следующий() = 1 Цикл
//действия с очередным элементом
Сообщить("льгота " +Выборка.Наименование);
КонецЦикла;
Общий вид метода Выбрать
Спр.Выбрать(Родитель, Владелец, Отбор, Порядок).
Родитель – отбор по родителю, т.е. в выборку будут включены эле-
менты только заданной группы.
Владелец – отбор по владельцу, т.е. в выборку будут включены только
элементы, подчиненные заданному элементу справочника-владельца.
Отбор – структура, задающая правила отбора по значениям реквизи-
тов справочника. В качестве реквизитов отбора можно использовать Код,
Наименование и любой реквизит, для которого задано индексирование.

Контрольные вопросы
65
Порядок – текстовая строка, задающая порядок выборки элементов.
Транзакция
При создании множества элементов справочника для ускорения ра-
боты можно заключить цикл в транзакцию. При этом реальное создание всех
элементов произойдет только по команде ЗафиксироватьТранзакцию().
При использовании транзакций действие будет либо выполнено це-
ликом (созданы все элементы справочника), либо не выполнено совсем
(в случае какого-либо сбоя не будет создано ни одного нового элемента,
все останется так же, как и до запуска транзакции).
Транзакции широко применяются в банковской сфере. Ведь никто
не хочет, чтобы при отправке денег, они благополучно списались с вашего
счета, но из-за какого-либо сбоя не дошли до адресата.
СпрСотр = Справочники.Сотрудники;
НачатьТранзакцию();
Для Ном = 1 По 100 Цикл
Нов = СпрСотр.СоздатьЭлемент();
Нов.Наименование= "Новый " + Строка(Ном);
Нов.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Контрольные вопросы
1. Что такое справочник и для чего он предназначен?
2. Приведите примеры справочников.
3. Какую роль выполняют справочники при организации оконного
интерфейса?
4. Для каких целей предназначены и используются справочники на
платформе 1С:Предприятие?
5. Как при помощи справочников можно избежать неоднозначного
ввода данных пользователем?
6. Как при помощи справочников можно реализовать базу данных об
объектах операционной деятельности предприятия?
7. Какие виды справочников реализованы на платформе 1С:Предпри-
ятие?

4. Справочники
66
8. Что такое одноуровневый справочник?
9. Что такое реквизиты справочника и для чего они предназначены?
10. Что такое элементы справочника и для чего они предназначены?
11. Какие обязательные реквизиты присутствуют в любом справоч-
нике на платформе 1С:Предприятие?
12. Какие виды многоуровневых справочников реализованы на плат-
форме 1С:Предприятие?
13. Что такое иерархия групп и элементов?
14. Для чего предназначены группы и элементы в иерархическом спра-
вочнике?
15. Какие виды реквизитов существуют в иерархическом справоч-
нике?
16. Приведите пример иерархии групп и элементов на примере спра-
вочника сотрудников таганрогского кампуса ЮФУ?
17. В чем достоинства и недостатки иерархии групп и элементов?
18. Каковы способы отображения иерархического справочника в ин-
терфейсе?
19. В чем особенность иерархического справочника в виде иерархии
элементов?
20. Приведите пример иерархии элементов на примере справочника
сотрудников таганрогского кампуса ЮФУ?
21. Что такое подчиненные справочники?
22. Как создать подчиненные справочники?
23. Приведите пример подчиненных справочников на примере спра-
вочника сотрудников таганрогского кампуса ЮФУ?
24. Для чего предназначен реквизит справочника ЭтоГруппа?
25. Для чего предназначен реквизит справочника Родитель?
26. Для чего предназначен реквизит справочника Владелец?
27. Для чего предназначен реквизит справочника ПометкаУдаления?
28. Для чего предназначен реквизит справочника Предопределенный?
29. Как создать ссылку на справочник средствами встроенного языка?
30. Как создать и записать новый элемент справочника средствами
встроенного языка?
31. Как создать и записать новую группу справочника средствами
встроенного языка?

Контрольные вопросы
67
32. Как выполнить поиск элемента справочника средствами встроен-
ного языка?
33. Как выполнить удаление элемента справочника средствами встро-
енного языка?
34. Как выполнить перебор элементов справочника средствами встро-
енного языка?
35. Как выполнить перебор элементов справочника внутри группы
средствами встроенного языка?
36. Как выполнить перебор элементов справочника, подчиненных за-
данному владельцу, средствами встроенного языка?
37. Общий вид метода Выбрать для перебора элементов справочника.
38. Как использовать транзакцию для обеспечения совместной записи
элементов справочника?

5. Документы
68
5. ДОКУМЕНТЫ
5.1. Назначение и реквизиты документа
Документ – объект конфигурации, предназначенный для ввода в информационную базу данных о выполнении предприятием хозяйственных,
организационных и других операций, результатом которых является изменение объема учитываемых ресурсов и средств предприятия. В большинстве случаев документы конфигурации имеют некоторый бумажный аналог, но могут существовать и документы без бумажной копии.
В качестве средств и ресурсов выступают оборудование, товароматериальные ценности, денежные средства, состояние взаиморасчетов с поставщиками, потребителями, контрагентами, сотрудниками и т.п.
Рассмотрим пример. Предположим, что предприятие покупает у поставщиков по предоплате комплектующие для производства персональных
компьютеров. Первым действием является перечисление предоплаты поставщику за комплектующие. При этом изменяется объем средств на расчетном счете предприятия и появляется задолженность поставщика по комплектующим, что должно быть отражено в информационной базе после
проведения соответствующего документа. Вторым действием является поступление комплектующих на склад предприятия. При этом задолженность
поставщика уменьшается на стоимость полученных комплектующих и увеличивается остаток комплектующих на складах предприятия.
Оба описанных действия должны быть зафиксированы документами
разных видов. Первый документ можно назвать Оплата за комплектующие.
Второй документ – Поступление комплектующих. Поскольку между оплатой и поступлением комплектующих может пройти достаточно большой
промежуток времени, на временной шкале эти документы будут распределены и размещены именно в тот момент, когда произошло соответствующее действие.
Если при этом учесть, что покупка комплектующих может производиться у различных поставщиков, то в конечном итоге на шкале времени
документы этих видов могут быть разбросаны хаотично, но каждому документу оплаты, в конечном счете, должен соответствовать свой документ
поступления.

5.1. Назначение и реквизиты документа
69
Все действия предприятия должны фиксироваться в виде докумен-
тов и накапливаться в базе данных документов. В качестве такой базы
данных выступают журналы документов. Документ может регистрироваться в одном или нескольких журналов. При этом один и тот же журнал
может использоваться для регистрации одного или нескольких видов документов.
По умолчанию для каждого вида документов создается отдельный
журнал. Это неудобно для конечного пользователя. Практика показывает,
что пользователю удобно собрать несколько различных видов документов
в одном журнале, если эти виды логически связаны между собой. Например, работнику, ведущему товароматериальный учет, хотелось бы видеть в
одном журнале как документы прихода, так и документы расхода. Такая
возможность предоставляется платформой 1С:Предприятие, но требует
настройки соответствующего журнала.
Для использования документа требуется следующее:
1. Разработчику создать соответствующий вид документа в конфигу-
раторе и наполнить его функциональностью.
2. Пользователю создать экземпляр документа в процессе работы при-
кладной системы, заполнить поля документа и выполнить его проведение.
Один единственный вид документа, созданный в конфигураторе, по-
рождает множество документов в информационной базе, каждый из которых отражает факт свершения соответствующего события. При этом дата
документа определяет момент времени, когда это событие произошло.
Все данные, которые вводятся в документ, образуют его реквизиты.
Документ может содержать реквизиты двух видов.
1. Реквизит – присутствует в форме документа в единичном экзем-
пляре и создает одиночное поле для ввода или отображения данных.
2. Реквизит табличной части – задает столбец таблицы документа.
Документ может содержать несколько табличных частей со своим набором
реквизитов.
На рис. 5.1 изображена форма документа, содержащего табличную
часть.
У этого документа имеется 3 реквизита: Номер, Дата, Склад. Таб-
личная часть содержит 6 реквизитов табличной части: N, Материал, Набор
свойств, Количество, Цена, Сумма.

5. Документы
70
Рис. 5.1. Пример формы документа с табличной частью
У каждого документа есть набор предопределенных реквизитов. Их
можно разделить на интерфейсные и не интерфейсные.
Интерфейсные реквизиты отображаются в форме документа. К ним
относятся Номер и Дата. Номер содержит номер документа, а Дата –дату
документа. Номер и Дата являются обязательными реквизитами и
должны присутствовать даже в документе, не содержащем никаких других реквизитов.
Порядок формирования номеров документов устанавливается в окне
свойств на вкладке Нумерация, которая изображена на рис. 5.2.
Автонумерация позволяет автоматически присваивать номера новым документам. Для того чтобы несколько документов разных видов
имели сквозную нумерацию, используются нумераторы, которые создаются в конфигураторе на ветви «Документы-Нумераторы». Длина номера
устанавливает количество символов или цифр в номере документа. Контроль уникальности не допускает повторения номеров документов данного
вида. Тип номера позволяет использовать числовые или строковые номера.
Периодичность устанавливает период автоматической нумерации. По истечении заданного периода нумерация сбрасывается к начальному значению. Периодами нумерации могут быть день, месяц, квартал, год. Период
может отсутствовать и нумерация никогда не сбрасывается до начального
значения.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
