Дополнительные параметры 1с объекта
Работа с прикладными объектами средствами встроенного языка
Работа с любым прикладным объектом (объектом конфигурации) похожа на работу с другими объектами, потому что есть общий принцип. Понимая этот принцип, можно быстро освоить все прикладные объекты, будь то справочники, планы счетов, документы, регистры или любой другой прикладной объект.
Данный раздел носит скорее теоретический характер, но для успешной разработки в 1С:Предприятии 8 абсолютно необходимо понимать эту классификацию объектов. В следующей таблице перечислены виды программных объектов с конкретными примерами, их краткое описание, типичные свойства и методы (т.е. встречающиеся у разных объектов):
свойства и методы
- СправочникиМенеджер
- ДокументыМенеджер
- КонстантыМенеджер
- РегистрыНакопленияМенеджер
- ОтчетыМенеджер
- ОбработкиМенеджер
Объекты данного вида обеспечивают доступ к менеджерам конкретного прикладного объекта.
Обычно доступ к таким объектам производится через свойства глобального контекста, например, Справочники.Сотрудники, Документы.Счет, РегистрыСведений.КурсыВалют и т.д.
Эти объекты являются коллекциями значений и позволяют перебрать свои элементы с помощью цикла "Для Каждого".
Свойства соответствуют именам прикладных объектов и являются объектами типа "Менеджер прикладного объекта"
- СправочникМенеджер
- ДокументМенеджер
- КонстантаМенеджер
- РегистрНакопленияМенеджер
- ОтчетМенеджер
- ОбработкаМенеджер
Данный объект является "центральным" в объектной модели, из которого можно получить остальные объекты, например, ссылки, выборки, объекты для изменения, наборы записей и т.д. (см. ниже параграф "Взаимосвязь объектов").
Объект этого вида обеспечивает доступ к операциям над прикладным объектом как множеством элементов. Через методы этого объекта можно осуществлять поиск, получать выборку, создавать новые записи, обращаться к формам и макетам прикладного объекта.
- <предопределенный элемент>
- Выбрать()
- НайтиПоКоду()
- НайтиПоРеквизиту()
- ПустаяСсылка()
- СоздатьЭлемент()
- СоздатьНаборЗаписей()
- ПолучитьМакет()
- ПолучитьФорму()
- СправочникСсылка
- ДокументСсылка
- ПланСчетовСсылка
- ПланВидовРасчетаСсылка
Данный объект однозначно идентифицирует объект базы данных (например, элемент справочника, документ) и позволяет обращаться к нему в режиме "только чтение". Через свойства и методы этого объекта можно прочитать реквизиты элемента, обратиться к его табличным частям.
Ссылки хранятся в реквизитах, ссылающихся на элементы данного прикладного объекта, например, в реквизите "Сотрудник" документа "ПриемНаРаботу" хранится ссылка на конкретный элемент справочника "Сотрудники".
Заметьте, что у записей регистров нет ссылок.
Для изменения объекта базы данных (элемента справочника, документа) нужно получить другой объект с помощью метода ПолучитьОбъект() .
- <реквизит>
- <табличная часть>
- ПометкаУдаления
- Дата
- Предопределенный
- Ссылка
- Пустая()
- ПолучитьОбъект()
- ПолучитьФорму()
- Метаданные()
- Скопировать()
- СправочникВыборка
- ДокументВыборка
- ЖурналДокументовВыборка
- РегистрНакопленияВыборка
Этот объект предоставляет возможность обхода (перебора) объектов базы данных. Например, можно перебрать элементы справочника или перебрать документы, входящие в конкретный журнал.
Обратите внимание, что данный объект не является коллекцией значений и, следовательно, нельзя использовать цикл " Для Каждого " для перебора элементов.
Свойства аналогичны свойствам объекта типа "Ссылка".
- СправочникОбъект
- ДокументОбъект
- ПланСчетовОбъект
- ОтчетОбъект
- ОбработкаОбъект
Предоставляет доступ к элементу с возможностью записи изменений в базу данных. Этот объект содержит методы, влияющие на элемент в базе данных, например, методы Записать и Удалить.
Для отчетов и обработок через этот объект обычно осуществляется формирование отчета или выполнение обработки.
Если в модуле прикладного объекта (не путать с модулем формы) есть экспортируемые переменные модуля или процедуры/функции, то они дополняют набор свойств и методов именно этого программного объекта.
Для регистров подобного объекта не существует, а изменение данных всегда производится через набор записей (см. ниже).
Свойства аналогичны свойствам объекта типа "Ссылка".
- Записать()
- Удалить()
- Заблокировать()
- Разблокировать()
- Заблокирован()
- Скопировать()
- ПолучитьФорму()
- ПолучитьМакет()
- Метаданные()
- СправочникСписок
- ДокументСписок
- ЖурналДокументовСписок
- ПланСчетовСписок
- РегистрНакопленияСписок
- КритерийОтбораСписок
Этот программный объект предназначен для управления списком элементов в табличном поле. Позволяет управлять колонками, отбором и сортировкой в списке.
Этот объект нельзя создать программно, он создается системой автоматически при размещении на форме табличного поля. Конечно, программно можно создать табличное поле в экранной форме и тогда будет создан объект данного типа.
- Колонки
- Отбор
- Порядок
- Обновить()
- РегистрСведенийНаборЗаписей
- РегистрНакопленияНаборЗаписей
- РегистрБухгалтерииНаборЗаписей
- РегистрРасчетаНаборЗаписей
- ПоследовательностьНаборЗаписей
Набор записей позволяет оперировать сразу несколькими записями прикладного объекта (обычно регистра). Набор записей можно целиком прочитать из базы данных, добавить в него записи или изменить их, а зетем записать в базу данных (в одной транзакции).
У документов есть свойство-коллекция "Движения", которое предоставляет доступ к наборам записей по каждому регистру, отмеченному на закладке "Движения". Через это свойство обычно производится формирование движений документа при его проведении.
- Отбор
- ЭтотОбъект
- Добавить()
- Удалить()
- Очистить()
- Записать()
- Прочитать()
- Количество()
- Выгрузить()
- Загрузить()
- РегистрСведенийЗапись
- РегистрНакопленияЗапись
- РегистрБухгалтерииЗапись
- РегистрРасчетаЗапись
Обеспечивает доступ к одной записи из набора, для того чтобы установить ее измерения, ресурсы и т.д. Этот объект возвращается методами других объектов, например, методом Добавить у объекта типа РегистрНакопленияНаборЗаписей.
Объект типа "Запись" не является постоянным идентификатором конкретной записи регистра, наподобие объекта "Ссылка" для справочников и документов. У записей регистра сведений вообще нет неизменяемого во времени идентификатора и каждая запись регистра однозначно определяется значениями своих измерений (включая системные, например, Период, Регистратор, НомерСтроки)
- <измерение>
- <реквизит>
- <ресурс>
- Активность
- Период
- Регистратор
- НомерСтроки
- ВидДвижения
- МоментВремени()
- РегистрСведенийКлючЗаписи
- РегистрНакопленияКлючЗаписи
- РегистрБухгалтерииКлючЗаписи
- РегистрРасчетаКлючЗаписи
Этот объект нужен для идентификации записи регистра в табличном поле, например, набора записей документа-регистратора или списка всех записей регистра. Он используется для позиционирования в списке записей на конкретной записи регистра.
Свойства для регистра сведений:
Специфические объекты
Ниже перечислены некоторые важные объекты, которые не укладываются в приведенную выше классификацию:
прикладной объект
Менеджер записи регистра сведений
Применяется для операций над одной записью регистра сведений. Этот объект существует только у независимого регистра сведений, т.е. не подчиненного регистратору.
Следует иметь в виду, что даже если редактирование записей производится с использованием менеджера записи, то на нижнем уровне все равно применяется набор записей регистра, т.е. при сохранении/удалении записей срабатывают события модуля набора записей регистра.
Аналогичен объектам типа НаборЗаписей в том смысле, что позволяет прочитать из базы данных или записать в базу данных значения нескольких констант в одной транзакции. Его набор свойств и методов нетипичен по сравнению с наборами записей, поэтому он вынесен в специфические объекты.
Менеджер внешних обработок подобен менеджерам других прикладных объектов. Его метод Создать(<имя файла>) позволяет создать объект типа "ВнешняяОбработка". Этот объект, в свою очередь, подобен объектам ОтчетОбъект и ОбработкаОбъект и предоставляет доступ к реквизитам и табличным частям внешней обработки для передачи параметров формирования отчета или выполнения обработки.
Если в модуле внешней обработки (не путать с модулем формы) есть экспортируемые переменные модуля или процедуры/функции, то они дополняют набор свойств и методов объекта "ВнешняяОбработка".
Взаимосвязь объектов
Ниже показана взаимосвязь программных объектов, характерная для объектов, имеющих ссылки (на примере справочников):
А теперь немного другая взаимосвязь, характерная для регистров (на примере регистров накопления):
Как видите, левые части этих схем очень похожи, а правые части различаются. Не думайте, что объект "Ключ записи" аналогичен объектам "Ссылка", а объекты "НаборЗаписей" и "Запись" аналогичны объекту "Объект", хотя некоторое сходство прослеживается.
У многих обработчиков событий формы есть параметр ПараметрыЗаписи. Этот параметр является структурой и для формы документа содержит два предопределенных свойства – РежимЗаписи и РежимПроведения. В состав ПараметровЗаписи можно добавлять свои свойства для их передачи другим обработчикам формы, где также доступны ПараметрыЗаписи. На самом деле таких событий в модуле формы всего 5.
Перечислим их в порядке срабатывания:
- ПередЗаписью() – на клиенте
- ПередЗаписьюНаСервере() – на сервере
- ПриЗаписиНаСервере() – на сервере (в рамках транзакции)
- ПослеЗаписиНаСервере() – на сервере
- ПослеЗаписи() – на клиенте.
Через параметр ПараметрыЗаписи можно передавать между этими событиями дополнительную информацию. Например, перед записью/проведением необходимо задать вопрос на создание дополнительных подчиненных объектов базы данных. Задать какой-либо вопрос возможно только на клиенте, а единственное событие, где это может быть сделано, – это событие ПередЗаписью(). Что же касается создания дополнительных подчиненных объектов, то это возможно только на сервере и только после записи текущего объекта. Тогда у объекта гарантированно будет ссылка. В этом случае подходящими событиями будут ПриЗаписиНаСервере() и ПослеЗаписиНаСервере().
Выбор среди этих двух событий определяется исходной задачей. Например, если по какой-либо причине не получится создать подчиненный объект, тогда и текущий объект не должен быть записан в базу данных. В этом случае необходимо использовать событие ПриЗаписиНаСервере(), так как оно выполняется в рамках транзакции, и при отмене транзакции все изменения таблиц базы будут также отменены. Если же создание подчиненных объектов не столь критично, тогда код можно разместить в обработчике ПослеЗаписиНаСервере().
Пример передачи параметров:
Передача дополнительных параметров между событиями модуля объекта
Довольно часто возникает задача анализа режима записи документа в обработчике модуля объекта ПриЗаписи(). К сожалению, в рамках этого события нет возможности определить режим записи документа, но это можно сделать в обработчике ПередЗаписью(), у которого есть входящий параметр РежимЗаписи.
Конечно, чтобы передать значение РежимаЗаписи из обработчика ПередЗаписью() в обработчик ПриЗаписи(), можно объявить глобальную переменную модуля и через нее передавать значение, но есть более изящный способ – воспользоваться свойством объекта ДополнительныеСвойста. ДополнительныеСвойста представляют собой структуру, с помощью которой можно связать с объектом дополнительную информацию:
Передача дополнительных параметров между событиями модуля формы и модуля объекта
Также можно использовать комбинацию двух вышеописанных способов. Например, перед проведением документа задается некоторый вопрос, ответ на который необходимо проанализировать в рамках обработки проведения. Для передачи результата ответа на вопрос можно использовать следующую цепочку событий:
После того как пользователь запустил процесс проведения, в первую очередь необходимо задать вопрос пользователю, а это можно сделать только на клиенте, так как на сервере запрещены диалоги и открытие других форм. Для этого необходимо использовать клиентское событие модуля формы ПередЗаписью(), так как это единственное событие, возникающее на стороне клиента в процессе проведения документа. В этом событии необходимо проанализировать режим записи документа и задать необходимый вопрос, после чего результат поместить в ПараметрыЗаписи.
Далее результат необходимо передать в объект. Единственным подходящим событием является серверное событие модуля формы ПередЗаписьюНаСервере(), так как в нем уже доступен объект через параметр ТекущийОбъект и также доступны ПараметрыЗаписи. В этом событии необходимо проанализировать наличие ответа в структуре ПараметрыЗаписи и через параметр ТекущийОбъект перенести значение в структуру ДополнительныеСвойства.
После этого можно будет проанализировать результат ответа на вопрос в рамках обработки проведения, но при этом следует учитывать, что параметра в структуре ДополнительныеСвойства может и не быть, так как проведение документа может выполняться и программно.
1с дополнительные сведения в режиме Предприятие
Рассмотрим, как добавить в документе дополнительное сведение. Для примера возьмем конфигурацию Управление торговлей 11, документ Авансовый отчет.
- Откроем любой документ для которого необходимо дополнительное сведение;
- На форме документа нажмем кнопку Открыть дополнительные сведения;
- Откроется форма дополнительных сведений;
- Нажимаем кнопку Все действия -> Изменить состав дополнительных сведений;
- Нажимаем кнопку Добавить -> Новое;
- В открывшемся окне заполняем Наименование свойства и его Тип;
- Жмем Записать и закрыть;
- Теперь снова откроем наш документ и нажмем кнопку Открыть дополнительные сведения;
- В форме 1с дополнительные сведения появится строчка с добавленным свойством. Ему можно задать любое значение заданного типа;
- Данное свойство будет доступно во всех документах Авансовый отчет, для каждого документа можно задать свое значение.
Функция получающая в 1с дополнительные сведения
- Ссылка. Тип: Любая ссылка. Ссылка на объект имеющий дополнительные сведения;
- Свойство. Тип: План видов характеристик ДополнительныеРеквизитыИСведения. Свойство, значение которого для данного объекта мы хотим получить.
1с дополнительные сведения функция программной записи
Данная функция осуществляет программную запись значения в дополнительные сведения объекта по переданному свойству. Предназначена для конфигурации Управление торговлей 11. Возвращает значение Истина в случае успешной записи и Ложь в случае ошибки.
- Объект Тип: Любая ссылка. Ссылка на объект для которого записывается сведение;
- Свойство Тип: План видов характеристик ДополнительныеРеквизитыИСведения. Дополнительное свойство;
- Значение Тип: Произвольный(Задается при создании (редактировании) свойства в плане видов характеристик ДополнительныеРеквизитыИСведения). Значение, которое будет записано в дополнительные сведения.
Если вы еще не знаете, как правильно работать с механизмом дополнительных реквизитов в 1с 8, то прочтите об этом в статье Получить / записать дополнительные реквизиты программно.
Читайте также:
- Как открыть яндекс мессенджер в браузере
- Вредоносные программы вирусы могут поразить изменить любые файлы на жестком диске
- Как списывать спецодежду в 2021 году в 1с 8
- Что из перечисленного является браузером word paint opera media player
- Перед использованием asus 5 way optimization установите драйвер mei что это