документобъект 1с что это
Объекты 1С «Документы»
Объект 1С «Документы» — объект метаданных, с помощью которого в прикладном решении хранится информация о совершенных хозяйственных операциях или о событиях, произошедших в «жизни» предприятия вообще. Это могут быть, например, приходные накладные, приказы о приеме на работу, счета, платежные поручения и т.д.
Каждый созданный документ в конфигурации создается для отражения своего типа операции (например, поступление товаров, списание товаров и т.д.).
Состояния документа 1С:
Значения свойств «Дата» и «Ссылка» реальных полей таблицы документа определяют его хронологическую позицию среди других документов.
Структура документа в 1С
Каждый документ 1С содержит:
Рекомендуется устанавливать строковый тип номера, так как в дальнейшем возможно потребуется указывать в номере и префикс организации.
Таким образом, документы могут отличаться друг от друга не только номером, но и своим положением на временной оси (моментом времени). В результате всегда можно сказать, какая из двух операций была совершена раньше.
Пример программного получения момента времени:
Возможные значения свойства «Периодичность»:
Реквизиты и табличные части документа 1С
Система 1С поддерживает:
Иногда возникают ситуации, когда для нескольких видов документов необходима сквозная нумерация. Для этих случаем в системе предусмотрен такой объект как нумератор.
Проведение документа 1С
Важным свойством документа является возможность его проведения:
Если флаг «Проведен» у документа установлен в «Истина», то для системы это означает, что документ проведен (в общем списке такие документы выделены соответствующей пиктограммой). С точки зрения логики программы проведенный документ может влиять на отчетность (финансовый результат компании).
Когда происходит интерактивное или программное проведение срабатывает процедура » ОбработкаПроведения ()», которая находится в модуле объекта документа.
Проведение расходного документа, журналы документов, программная работа с документами
Программная работа с документами
С документами в пользовательском режиме можно работать не только интерактивно – так, как мы это делали до сих пор, но и программно. Рассмотрим объекты 1С:Предприятие, которые используются для программной работы с документами.
ДокументыМенеджер – этот объект доступен через свойство глобального контекста Документы. Он позволяет управлять документами, давая доступ к объекту ДокументМенеджер для конкретного документа
ДокументМенеджер – позволяет управлять документом, в частности, создавать новые документы, производить поиск документов, помечать документы на удаление, получать выборки.
ДокументСсылка – идентификатор документа. Используется обычно в реквизитах других объектов для указания ссылки на определенный документ.
ДокументОбъект – позволяет работать с отдельным документом – читать и редактировать его данные.
ДокументВыборка – предназначен для работы с выборкой документов, произведенной по определенным условиям.
Для доступа к метаданным документа можно воспользоваться свойством Документы свойства глобального контекста Метаданные.
Создадим новую обработку, назовем ее РаботаСДокументами. Включим в подсистему Администрирование.
Добавим в обработку команду с именем ВывестиСписокВидовДокументов, зададим обработчик для этой команды, выведем ее на форму обработки.
Сейчас мы воспользуемся свойством глобального контекста Метаданные для того, чтобы вывести пользователю список синонимов существующих в конфигурации документов. Для подобных действий нам понадобится серверная процедура, которую мы вызовем из клиентской процедуры обработчика ранее созданной команды. Выполнить запланированное можно с помощью следующего кода:
Результат выполнения показан на рис. 7.11.
Теперь рассмотрим следующую задачу. Нужно программно создать новый документ заданного вида, заполнить его некоторыми данными, сохранить в базе данных, приняв решение о том, проводить его или не проводить на основе анализа флага ПроводитьДокумент, который имеется на форме обработки, после чего открыть его форму для проверки пользователем.
Здесь нам понадобится начинать «поиски» нужного объекта от объекта ДокументыМенеджер. С его помощью мы можем получить объект ДокументМенеджер для нужного вида документов, и уже с помощью этого объекта мы сможем создать новый документ.
Добавим в нашу обработку новую команду – СоздатьДокументПоступлениеМатериалов. Так же добавим новый реквизит – ПроводитьДокумент, поместим его на форму, рис. 7.12.
Мы зададим все данные, в том числе – и тип документа для создания – в коде.
Решить поставленную задачу можно с помощью следующего кода:
При вызове функции СоздатьДокумент(), мы планируем воспользоваться возвращенной ей ссылкой на созданный документ для открытия его формы с помощью метода ОткрытьЗначение().
Функция СоздатьДокумент принимает один параметр – РежимЗаписи, который мы используем после создания документа для задания режима его записи.
В переменной Документ, после работы метода СоздатьДокумент(), мы имеем объект типа ДокументОбъект, новый чистый документ, с которым можем работать. Мы заполняем дату с помощью функции ТекущаяДата(). Заполняя реквизиты мы пользуемся различными методами поиска данных в справочнике. Метод НайтиПоКоду() позволяет найти элемент справочника по заданному коду, НайтиПоРеквизиту() ищет по значению заданного реквизита. Оба эти метода возвращают нам ссылку на элемент справочника.
В реквизит Комментарий мы записываем строку.
Следующим этапом работы с документом становится заполнение его табличной части. Мы выполняем заполнение построчно, добавляя в табличную часть строку – она представлена в коде переменной НоваяСтрокаТЧ с типом Строка табличной части. Когда строка добавлена, мы обращаемся к ее реквизитам, заполняя их данными.
После того, как документ сформирован, мы записываем его (или – и записываем и проводим – в зависимости от значения параметра РежимЗаписи) и возвращаем ссылку на него в точку вызова функции СоздатьДокумент.
Вот, как выглядит документ, созданный программно с помощью нашего кода, рис. 7.13.
Решим теперь следующую задачу. Нужно пометить на удаление все документы типа ПоступлениемМатериалов, которые созданы автоматически – их реквизит Комментарий содержит текст «Документ создан автоматически«.
Добавим в форму обработки новую команду, назовем ее ПометитьНаУдаление. Поставленную задачу можно реализовать с помощью следующего кода:
Здесь мы, в серверной процедуре ПометитьДокументыНаУдаление(), получаем с помощью запроса список ссылок на документы, реквизит Комментарий которых равен нужному нам значению. После этого в цикле обхода выборки запроса переходим от ссылки на объект к объекту (тип ДокументОбъект) и устанавливаем у объектов пометки удаления.
При завершении серверной процедуры, мы, на клиенте, показываем пользователю окно сообщения, рис. 7.14.
Нашей следующей задачей будет вывод пользователю списка документов за заданный пользователем период. Добавим в форму обработки команду ВыводСпискаДокументовЗаПериод и два реквизита – ДатаНачала и ДатаОкончания – тип Дата, состав даты – Дата и время. Дата документа содержит сведения о дате и времени создания документа, поэтому для выбора периода, в который должны попасть искомые документы, нам понадобятся значения даты с датой и временем.
Решение задачи может выглядеть так:
Здесь мы пользуемся методом Выбрать с параметрами, устанавливающими дату начала и дату окончания для выборки документов. Полученную выборку перебираем в цикле и сообщаем пользователю о найденных документах, рис. 7.15.
Выводы
Работа с прикладными объектами средствами встроенного языка
Работа с любым прикладным объектом (объектом конфигурации) похожа на работу с другими объектами, потому что есть общий принцип. Понимая этот принцип, можно быстро освоить все прикладные объекты, будь то справочники, планы счетов, документы, регистры или любой другой прикладной объект.
Данный раздел носит скорее теоретический характер, но для успешной разработки в 1С:Предприятии 8 абсолютно необходимо понимать эту классификацию объектов. В следующей таблице перечислены виды программных объектов с конкретными примерами, их краткое описание, типичные свойства и методы (т.е. встречающиеся у разных объектов):
Вид объекта | Описание | Типичные свойства и методы | |||||
---|---|---|---|---|---|---|---|
Менеджер прикладных объектов данного типа Объекты данного вида обеспечивают доступ к менеджерам конкретного прикладного объекта. Обычно доступ к таким объектам производится через свойства глобального контекста, например, Справочники.Сотрудники, Документы.Счет, РегистрыСведений.КурсыВалют и т.д. Эти объекты являются коллекциями значений и позволяют перебрать свои элементы с помощью цикла «Для Каждого». Свойства соответствуют именам прикладных объектов и являются объектами типа «Менеджер прикладного объекта» | |||||||
Менеджер прикладного объекта Данный объект является «центральным» в объектной модели, из которого можно получить остальные объекты, например, ссылки, выборки, объекты для изменения, наборы записей и т.д. (см. ниже параграф «Взаимосвязь объектов»). Объект этого вида обеспечивает доступ к операциям над прикладным объектом как множеством элементов. Через методы этого объекта можно осуществлять поиск, получать выборку, создавать новые записи, обращаться к формам и макетам прикладного объекта. Данный объект однозначно идентифицирует объект базы данных (например, элемент справочника, документ) и позволяет обращаться к нему в режиме «только чтение». Через свойства и методы этого объекта можно прочитать реквизиты элемента, обратиться к его табличным частям. Ссылки хранятся в реквизитах, ссылающихся на элементы данного прикладного объекта, например, в реквизите «Сотрудник» документа «ПриемНаРаботу» хранится ссылка на конкретный элемент справочника «Сотрудники». Заметьте, что у записей регистров нет ссылок. Этот объект предоставляет возможность обхода (перебора) объектов базы данных. Например, можно перебрать элементы справочника или перебрать документы, входящие в конкретный журнал. Обратите внимание, что данный объект не является коллекцией значений и, следовательно, нельзя использовать цикл » Для Каждого » для перебора элементов. Свойства аналогичны свойствам объекта типа «Ссылка». Предоставляет доступ к элементу с возможностью записи изменений в базу данных. Этот объект содержит методы, влияющие на элемент в базе данных, например, методы Записать и Удалить. Для отчетов и обработок через этот объект обычно осуществляется формирование отчета или выполнение обработки. Если в модуле прикладного объекта (не путать с модулем формы) есть экспортируемые переменные модуля или процедуры/функции, то они дополняют набор свойств и методов именно этого программного объекта. Для регистров подобного объекта не существует, а изменение данных всегда производится через набор записей (см. ниже). Свойства аналогичны свойствам объекта типа «Ссылка». Этот программный объект предназначен для управления списком элементов в табличном поле. Позволяет управлять колонками, отбором и сортировкой в списке. Этот объект нельзя создать программно, он создается системой автоматически при размещении на форме табличного поля. Конечно, программно можно создать табличное поле в экранной форме и тогда будет создан объект данного типа. Набор записей позволяет оперировать сразу несколькими записями прикладного объекта (обычно регистра). Набор записей можно целиком прочитать из базы данных, добавить в него записи или изменить их, а зетем записать в базу данных (в одной транзакции). У документов есть свойство-коллекция «Движения», которое предоставляет доступ к наборам записей по каждому регистру, отмеченному на закладке «Движения». Через это свойство обычно производится формирование движений документа при его проведении. Обеспечивает доступ к одной записи из набора, для того чтобы установить ее измерения, ресурсы и т.д. Этот объект возвращается методами других объектов, например, методом Добавить у объекта типа РегистрНакопленияНаборЗаписей. Объект типа «Запись» не является постоянным идентификатором конкретной записи регистра, наподобие объекта «Ссылка» для справочников и документов. У записей регистра сведений вообще нет неизменяемого во времени идентификатора и каждая запись регистра однозначно определяется значениями своих измерений (включая системные, например, Период, Регистратор, НомерСтроки) Этот объект нужен для идентификации записи регистра в табличном поле, например, набора записей документа-регистратора или списка всех записей регистра. Он используется для позиционирования в списке записей на конкретной записи регистра. Свойства для регистра сведений: Специфические объектыНиже перечислены некоторые важные объекты, которые не укладываются в приведенную выше классификацию:
|