- •Документы
- •6.1. Документы и журналы документов
- •6.2. Структура документа
- •6.3. Экранные формы документа
- •6.4. Макеты документа
- •6.5. Проведение документов
- •Оперативная отметка времени
- •6.6. Модуль документа
- •Обращение к менеджеру документа
- •Выборка документов
- •6.7. Приемы программирования
- •Создание и проведение документа
- •Поиск документа
- •Удаление документа
- •Открытие форм документа
- •Работа с табличным частями
- •Движения документа
- •6.8. Нумерация документов
- •Нумераторы
- •Префиксы номеров
- •6.9. Журналы документов
- •Графы журнала
- •6.10. Последовательности
6.7. Приемы программирования
С помощью встроенного языка 1С:Предприятия 8 можно выполнять различные операции над документами: создавать, изменять и удалять их, искать документ по номеру, перебирать их в цикле и т.д.
Работа с документами производится с помощью нескольких программных объектов (аналогичные объекты мы уже рассматривали для справочников):
ДокументыМенеджер
Обеспечивает доступ к менеджерам всех документов конфигурации. Свойства этого объекта совпадают по имени с именами документов и содержат объекты типа ДокументМенеджер.
ДокументМенеджер
Обеспечивает доступ к действиям над документами определенного вида как множеством объектов. Через методы этого объекта можно осуществлять поиск, получать выборку, создавать новый документ, обращаться к формам и макетам документа.
ДокументСсылка
Это специальный объект, однозначно идентифицирующий документ в базе данных и позволяющий обращаться к нему в режиме «только чтение». Значение данного типа хранится, например, в реквизитах других объектов, ссылающихся на документы данного вида. Через свойства и методы этого объекта можно прочитать реквизиты документа, обратиться к его табличным частям.
ДокументОбъект
Предоставляет доступ к документу с возможностью записи и проведения. Данный объект содержит методы, изменяющие документ в базе данных, например, метод Записать.
ДокументВыборка
Предоставляет возможность обхода (перебора) документов определенного вида. Объект этого типа возвращается методом Выбрать объекта ДокументМенеджер.
ДокументСписок
Объект для управления списком документов, отображаемым в форме. Позволяет управлять колонками, отбором и сортировкой в списке. Этот объект не может быть создан программно, он создается системой автоматически при размещении в форме табличного поля, отображающего список документов.
Рассмотрим на примерах выполнение типичных операций с документами.
Обращение к менеджеру документа
Обращение к менеджеру документа производится следующим образом:
ДокСчет = Документы.Счет;
ДокСчет = Документы["Счет"];
При обращении к менеджеру документа ошибкой будет применение ключевого слова Новый. Оно предназначено для создания новых объектов, например, списков значений. Следует помнить, что при работе с прикладными объектами всегда используется обращение через менеджер.
Замечание. С помощью ключевого слова Новый нельзя создавать новые документы. Для этого предназначен метод СоздатьДокумент объекта ДокументМенеджер, который возвращает объект типа ДокументОбъект.<ИмяДокумента>.
Следующий фрагмент показывает пример создания нового документа:
ДокМенеджер = Документы.Счет;
НовыйДок = ДокМенеджер.СоздатьДокумент();
//при создании документа программным способом
//дата документа не заполняется системой,
//это должен сделать разработчик
НовыйДок.Дата = Дата;
НовыйДок.Записать();
Выборка документов
Перебор документов производится через объект ДокументВыборка, который возвращается при вызове метода Выбрать объекта ДокументМенеджер:
ДокВыборка = Документы.Счет.Выбрать();
Пока ДокВыборка.Следующий() Цикл
Сообщить("№ " + ДокВыборка.Номер + " от " + ДокВыборка.Дата);
//перебор строк табличной части
Для Каждого стр Из ДокВыборка.Состав Цикл
Сообщить(" " + стр.Номенклатура);
КонецЦикла;
КонецЦикла;
Синтаксическая диаграмма метода Выбрать такова:
Выбрать (<Дата начала>, <Дата окончания>, <0тбор>, <Порядок>)
Метод Выбрать позволяет ограничить выборку только нужными документами с помощью параметров вызова. Ниже описаны параметры метода Выбрать и их назначение:
Дата начала: Дата и время начала периода выборки документов.
Дата окончания: Дата и время конца периода выборки документов.
Отбор: структура, которая задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры - значение отбора по этому полю. В качестве полей для отбора могут задаваться только поле Дата и индексированные реквизиты документа. Обратите внимание, что структура может содержать только один элемент.
Порядок: Строка, задающая реквизит и направление сортировки выборки документов, например, «Контрагент Возр» или «Оклад убыв». Может быть указано поле Дата или имя индексированного реквизита документа. Если порядок не задан, то выборка упорядочивается по хронологии документов.
Следующий пример выбирает документы Счет по определенному контрагенту за заданный период и сортирует их по убыванию суммы документа (для реквизитов Контрагент и СуммаДокумента в Конфигураторе установлен флажок «Индексировать»).
Отбор = Новый Структура("Контрагент", ВыбКонтрагент);
ДокВыборка = Документы.Счет.Выбрать(НачДата, КонДата,
Отбор,"СуммаДокумента Убыв")
Пока ДокВыборка.Следующий() Цикл
…
КонецЦикла;
