1с как обратиться к свойству объекта
В этой статье я разберу объекты платформы 1С 8.3, и покажу, какие виды объектов бывают в 1С.
Самое интересное, что пользователь программы 1С работает не с самим объектом, а с экземпляром объекта, который он может создать либо самостоятельно, либо с помощью программного кода, написанного разработчиком.
Всего в платформе 1С 8.3 можно выделить несколько видов объектов – это объекты конфигурации (или объекты метаданных, прикладные объекты), общие объекты и универсальные коллекции значений.
Какое общее свойство всех объектов в 1С? В платформе 1С мы не можем, как разработчики, самостоятельно изобрести тот или иной объект (или прототип объекта, если это касается объекта метаданных, об этом ниже), мы можем довольствоваться только тем, что нам предоставили разработчики платформы. Мы можем создать разные справочники, разные документы, разные таблицы значений и списки значений, но не можем придумать какой-то свой объект и с ним работать. В этом есть плюс, и есть минус. Минус в том, что мы ограничены функционалом платформы 1С, и вынуждены с ним работать. Плюс в том, что любое приложение, разработанное на платформе 1С стандартизировано, и нам не придётся разбираться в том, что придумал тот или иной разработчик.
У объектов есть свойства, методы и события.
Свойство объекта – это поле, которое может содержать какую-то информацию, связанную с этим объектом. Это поле может быть доступно для записи (можно записать какую-то информацию в это поле) и для чтения (информацию можно прочитать из этого поля), или просто для чтения. Причем, информация в свойстве объекта связана не с самим объектом, а с его экземпляром.
Метод объекта – это процедура или функция, которая выполняет или какое-то действие над экземпляром этого объекта, или возвращает информацию о состоянии экземпляра этого объекта.
У объектов метаданных разработчик может создать собственные свойства и методы, а у общих объектов и у универсальных коллекций значений можно довольствоваться только теми свойствами и методами, которые предоставляет платформа 1С.
Событие – это процедура, которая позволяет перехватить какое-то событие над этим объектом, и, или доработать это событие, или отменить его.
Объекты конфигурации 1С
В платформе 1С существуют различные прототипы объектов метаданных. Это справочники, документы и прочие метаданные.
Все прототипы объектов метаданных представлены в дереве метаданных.
Разработчик может самостоятельно создать объект того или иного прототипа. Например, мы можем создать Справочник. Для этого, достаточно выделить ветку Справочники дерева конфигурации, вызвать правой клавишей мышки контекстное меню, и выполнить команду «Добавить» этого меню.
После выполнения команды, будет создан новый объект, с заранее определенным разработчиками платформы 1С набором методов и свойств.
Например, у справочника, созданного выше, одни из свойств это Имя, Синоним и т.д., а методы, например, Записать, Заполнить и тд.
Также, у объекта могут быть события: это возможность перехватить какие-то действия с объектом, например, можно перехватить запись элемента справочника.
Набор методов, свойств и событий объекта определяется его прототипом. Например, у справочников может быть один набор свойств, а у документов совершенно другой.
Посмотреть все методы, свойства и события прототипа того или иного объекта можно в синтакс-помощнике. В ветке для соответствующего прототипа.
Для объектов метаданных разработчик может самостоятельно создать те или иные свойства – реквизиты объектов.
А также, разработчик может создать методы – описав их в модуле объекта.
У некоторых объектов пользователь может создавать экземпляры этих объектов: например, можно создать экземпляр справочника или документа, и записать этот экземпляр в базу данных. А некоторые объекты метаданных пользователь может использовать для каких-то целей. Например, отчет или обработку.
Общие объекты 1С
Общие объекты – это объекты встроенного языка программирования 1С, которыми может оперировать разработчик, необходимые для различных технических и вспомогательных нужд (например, такой общий объект, как ДиалогВыбораФайла предназначен для работы с диалогом открытия файла, сохранения файла и т.д.).
В синтакс-помощнике информация обо всех общих объектах расположена в одноименном каталоге.
Если у объектов метаданных были прототипы, и разработчик мог создать тот или иной объект какого-либо прототипа, то у общих объектов ни каких прототипов нет, и разработчик может довольствоваться только теми общими объектами, которые ему предоставляет платформа 1С.
Разработчик имеет возможность самостоятельно создать только экземпляр какого-то объекта, для своих утилитарных целей. Делается это при помощи конструктора. Какой у того или иного объекта конструктор, можно посмотреть в синтакс-помощнике в одноименном каталоге.
Как правило, большинство общих объектов создается при помощи конструктора Новый. Например, так создаётся табличный документ.
У общих объектов, также как и у объектов метаданных, могут быть свойства, методы и события. Но, в отличие от объектов метаданных, мы не можем, как разработчики, самостоятельно конструировать те или иные свойства и методы, а можем оперировать только тем, что предоставила платформа 1С. О том, какие свойства, методы и события имеются у того или иного общего объекта можно посмотреть во всё том же синтакс-помощнике.
Не у всех общих объектов есть и методы, и свойства, и события. У некоторых объектов может не быть событий, а у некоторых свойств.
Обратиться к свойствам и методам можно через оператор «.»:
Универсальные коллекции значений
Универсальные коллекции значений – это, также как и общие объекты, объекты встроенного языка программирования, которыми может оперировать разработчик. Но, в отличие от общих объектов, они предназначены для хранения наборов данных, причем эти наборы данных хранятся в оперативной памяти компьютера, во время запущенного сеанса. Таким образом, когда пользователь прекратит работу с сеансом 1С, то и вся информация этих наборов данных будет уничтожена.
Все универсальные коллекции описаны в синтакс-помощнике в разделе «Универсальные коллекции значении». Это массив, структура, соответствие, список значений, таблица значений и т.д.
Как правило, все универсальные коллекции значений создаются при помощи конструктора Новый.
Читайте продолжение темы:
Более подробно про основные универсальные коллекции значений платформы 1С можно почитать в соответствующих статьях:
Так же, как и остальные объекты, универсальные коллекции значений имеют методы и свойства. Но, у каждой универсальной коллекции будет свой состав.
Например, у массива есть только методы, а у структуры есть методы и свойства.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Модуль объекта есть почти у всех основных прикладных объектов конфигурации в 1С.
Также модуль объекта можно открыть из контекстного меню объекта:
Или из меню Действия:
Модуль объекта выполняется при создании объекта. В нем можно объявлять переменные модуля. Экспортные процедуры и функции можно вызывать у созданных программных объектов. К экспортным переменным можно обращаться как к свойствам программных объектов. В модуле есть прямой доступ к реквизитам и табличным частям объекта.
Вызов методов модуля объекта
В модуле объекта напишем следующий код:
Теперь создадим обработку с одной формой и в модуле обработки в событии ПриСозданииНаСервере напишем следующий код:
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; //заполняем экспортную переменную модуля объекта вызвав экспортную функцию ОбъектНоменклатура . ОбщийОстаток = ОбъектНоменклатура . ОбщийОстаток ( ) ;Здесь мы сначала создаем новый программный объект справочника Номенклатура вызвав встроенный метод Справочники.Номенклатура.СоздатьЭлемент(). Потом через ссылку на этот объект обращаемся к экспортным переменной и функции объекта.
Теперь поменяем код в модуле формы обработки на следующий:
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; //пытаемся заполнить переменную модуля объекта вызвав функцию модуля объекта ОбъектНоменклатура . ПолноеНаименование = ОбъектНоменклатура . ПолноеНаименованиеНоменклатуры ( ) ; Сообщить ( ОбъектНоменклатура . ПолноеНаименование ) ; //ошибкаЗдесь мы делаем все то же самое, но обращаемся к не экспортным переменной и функции.
Так как переменная ПолноеНаименование не является экспортной, то к ней нет доступа из других модулей.
Теперь попробуем обратиться к не экспортной функции модуля объекта. Вставим в модуль формы следующий код и откроем обработку:
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; Сообщить ( ОбъектНоменклатура . ПолноеНаименованиеНоменклатуры ( ) ) ; //опять ошибка
Теперь вставим в форму обработки такой код и откроем обработку:
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ;Здесь мы вызываем экспорную процедуру модуля объекта, а потом встроенным методом Записать записываем объект в базу данных.
В результате в базе данных будет создан новый элемент, у которого заполнен артикул и добавлены 2 строки в табличную часть:
В методе ЗаполнитьРеквизиты() мы обращались напрямую к реквизитам объекта, после чего записали его методом Записать(). Значения реквизитов сохранились в базе данных.
Обработчики событий
В результате откроется список возможных событий:
Рассмотрим основные события модуля объекта:
Для примера создадим в модуле объекта 3 обработчика события и вставим в них следующий код:
Работа с прикладными объектами средствами встроенного языка
Работа с любым прикладным объектом (объектом конфигурации) похожа на работу с другими объектами, потому что есть общий принцип. Понимая этот принцип, можно быстро освоить все прикладные объекты, будь то справочники, планы счетов, документы, регистры или любой другой прикладной объект.
Данный раздел носит скорее теоретический характер, но для успешной разработки в 1С:Предприятии 8 абсолютно необходимо понимать эту классификацию объектов. В следующей таблице перечислены виды программных объектов с конкретными примерами, их краткое описание, типичные свойства и методы (т.е. встречающиеся у разных объектов):
свойства и методы
- СправочникиМенеджер
- ДокументыМенеджер
- КонстантыМенеджер
- РегистрыНакопленияМенеджер
- ОтчетыМенеджер
- ОбработкиМенеджер
Объекты данного вида обеспечивают доступ к менеджерам конкретного прикладного объекта.
Обычно доступ к таким объектам производится через свойства глобального контекста, например, Справочники.Сотрудники, Документы.Счет, РегистрыСведений.КурсыВалют и т.д.
Эти объекты являются коллекциями значений и позволяют перебрать свои элементы с помощью цикла "Для Каждого".
Свойства соответствуют именам прикладных объектов и являются объектами типа "Менеджер прикладного объекта"
- СправочникМенеджер
- ДокументМенеджер
- КонстантаМенеджер
- РегистрНакопленияМенеджер
- ОтчетМенеджер
- ОбработкаМенеджер
Данный объект является "центральным" в объектной модели, из которого можно получить остальные объекты, например, ссылки, выборки, объекты для изменения, наборы записей и т.д. (см. ниже параграф "Взаимосвязь объектов").
Объект этого вида обеспечивает доступ к операциям над прикладным объектом как множеством элементов. Через методы этого объекта можно осуществлять поиск, получать выборку, создавать новые записи, обращаться к формам и макетам прикладного объекта.
- <предопределенный элемент>
- Выбрать()
- НайтиПоКоду()
- НайтиПоРеквизиту()
- ПустаяСсылка()
- СоздатьЭлемент()
- СоздатьНаборЗаписей()
- ПолучитьМакет()
- ПолучитьФорму()
- СправочникСсылка
- ДокументСсылка
- ПланСчетовСсылка
- ПланВидовРасчетаСсылка
Данный объект однозначно идентифицирует объект базы данных (например, элемент справочника, документ) и позволяет обращаться к нему в режиме "только чтение". Через свойства и методы этого объекта можно прочитать реквизиты элемента, обратиться к его табличным частям.
Ссылки хранятся в реквизитах, ссылающихся на элементы данного прикладного объекта, например, в реквизите "Сотрудник" документа "ПриемНаРаботу" хранится ссылка на конкретный элемент справочника "Сотрудники".
Заметьте, что у записей регистров нет ссылок.
Для изменения объекта базы данных (элемента справочника, документа) нужно получить другой объект с помощью метода ПолучитьОбъект() .
- <реквизит>
- <табличная часть>
- ПометкаУдаления
- Дата
- Предопределенный
- Ссылка
- Пустая()
- ПолучитьОбъект()
- ПолучитьФорму()
- Метаданные()
- Скопировать()
- СправочникВыборка
- ДокументВыборка
- ЖурналДокументовВыборка
- РегистрНакопленияВыборка
Этот объект предоставляет возможность обхода (перебора) объектов базы данных. Например, можно перебрать элементы справочника или перебрать документы, входящие в конкретный журнал.
Обратите внимание, что данный объект не является коллекцией значений и, следовательно, нельзя использовать цикл " Для Каждого " для перебора элементов.
Свойства аналогичны свойствам объекта типа "Ссылка".
- СправочникОбъект
- ДокументОбъект
- ПланСчетовОбъект
- ОтчетОбъект
- ОбработкаОбъект
Предоставляет доступ к элементу с возможностью записи изменений в базу данных. Этот объект содержит методы, влияющие на элемент в базе данных, например, методы Записать и Удалить.
Для отчетов и обработок через этот объект обычно осуществляется формирование отчета или выполнение обработки.
Если в модуле прикладного объекта (не путать с модулем формы) есть экспортируемые переменные модуля или процедуры/функции, то они дополняют набор свойств и методов именно этого программного объекта.
Для регистров подобного объекта не существует, а изменение данных всегда производится через набор записей (см. ниже).
Свойства аналогичны свойствам объекта типа "Ссылка".
- Записать()
- Удалить()
- Заблокировать()
- Разблокировать()
- Заблокирован()
- Скопировать()
- ПолучитьФорму()
- ПолучитьМакет()
- Метаданные()
- СправочникСписок
- ДокументСписок
- ЖурналДокументовСписок
- ПланСчетовСписок
- РегистрНакопленияСписок
- КритерийОтбораСписок
Этот программный объект предназначен для управления списком элементов в табличном поле. Позволяет управлять колонками, отбором и сортировкой в списке.
Этот объект нельзя создать программно, он создается системой автоматически при размещении на форме табличного поля. Конечно, программно можно создать табличное поле в экранной форме и тогда будет создан объект данного типа.
- Колонки
- Отбор
- Порядок
- Обновить()
- РегистрСведенийНаборЗаписей
- РегистрНакопленияНаборЗаписей
- РегистрБухгалтерииНаборЗаписей
- РегистрРасчетаНаборЗаписей
- ПоследовательностьНаборЗаписей
Набор записей позволяет оперировать сразу несколькими записями прикладного объекта (обычно регистра). Набор записей можно целиком прочитать из базы данных, добавить в него записи или изменить их, а зетем записать в базу данных (в одной транзакции).
У документов есть свойство-коллекция "Движения", которое предоставляет доступ к наборам записей по каждому регистру, отмеченному на закладке "Движения". Через это свойство обычно производится формирование движений документа при его проведении.
- Отбор
- ЭтотОбъект
- Добавить()
- Удалить()
- Очистить()
- Записать()
- Прочитать()
- Количество()
- Выгрузить()
- Загрузить()
- РегистрСведенийЗапись
- РегистрНакопленияЗапись
- РегистрБухгалтерииЗапись
- РегистрРасчетаЗапись
Обеспечивает доступ к одной записи из набора, для того чтобы установить ее измерения, ресурсы и т.д. Этот объект возвращается методами других объектов, например, методом Добавить у объекта типа РегистрНакопленияНаборЗаписей.
Объект типа "Запись" не является постоянным идентификатором конкретной записи регистра, наподобие объекта "Ссылка" для справочников и документов. У записей регистра сведений вообще нет неизменяемого во времени идентификатора и каждая запись регистра однозначно определяется значениями своих измерений (включая системные, например, Период, Регистратор, НомерСтроки)
- <измерение>
- <реквизит>
- <ресурс>
- Активность
- Период
- Регистратор
- НомерСтроки
- ВидДвижения
- МоментВремени()
- РегистрСведенийКлючЗаписи
- РегистрНакопленияКлючЗаписи
- РегистрБухгалтерииКлючЗаписи
- РегистрРасчетаКлючЗаписи
Этот объект нужен для идентификации записи регистра в табличном поле, например, набора записей документа-регистратора или списка всех записей регистра. Он используется для позиционирования в списке записей на конкретной записи регистра.
Свойства для регистра сведений:
Специфические объекты
Ниже перечислены некоторые важные объекты, которые не укладываются в приведенную выше классификацию:
прикладной объект
Менеджер записи регистра сведений
Применяется для операций над одной записью регистра сведений. Этот объект существует только у независимого регистра сведений, т.е. не подчиненного регистратору.
Следует иметь в виду, что даже если редактирование записей производится с использованием менеджера записи, то на нижнем уровне все равно применяется набор записей регистра, т.е. при сохранении/удалении записей срабатывают события модуля набора записей регистра.
Аналогичен объектам типа НаборЗаписей в том смысле, что позволяет прочитать из базы данных или записать в базу данных значения нескольких констант в одной транзакции. Его набор свойств и методов нетипичен по сравнению с наборами записей, поэтому он вынесен в специфические объекты.
Менеджер внешних обработок подобен менеджерам других прикладных объектов. Его метод Создать(<имя файла>) позволяет создать объект типа "ВнешняяОбработка". Этот объект, в свою очередь, подобен объектам ОтчетОбъект и ОбработкаОбъект и предоставляет доступ к реквизитам и табличным частям внешней обработки для передачи параметров формирования отчета или выполнения обработки.
Если в модуле внешней обработки (не путать с модулем формы) есть экспортируемые переменные модуля или процедуры/функции, то они дополняют набор свойств и методов объекта "ВнешняяОбработка".
Взаимосвязь объектов
Ниже показана взаимосвязь программных объектов, характерная для объектов, имеющих ссылки (на примере справочников):
А теперь немного другая взаимосвязь, характерная для регистров (на примере регистров накопления):
Как видите, левые части этих схем очень похожи, а правые части различаются. Не думайте, что объект "Ключ записи" аналогичен объектам "Ссылка", а объекты "НаборЗаписей" и "Запись" аналогичны объекту "Объект", хотя некоторое сходство прослеживается.
Работа во встроенном языке с объектами метаданных
Во встроенном языке "1С:Предприятия" предоставляется доступ к структуре метаданных конфигурации. Эта возможность предназначена в основном для создания универсальных алгоритмов, которые могли бы единообразно работать с различными объектами конфигурации. В этом разделе приводится информация об особенностях работы с метаданными во встроенном языке.
Доступ к метаданным предоставляется только на чтение. Программное изменение метаданных не поддерживается.
В документации по встроенному языку не приводится перечень свойств объектов метаданных и коллекций подчиненных объектов. Для ознакомления со структурой объектов и составом свойств необходимо использовать отчет по конфигурации (в режиме Конфигуратор меню Конфигурация – Отчет по конфигурации). Имена, отображаемые в этом отчете, соответствуют именам свойств и коллекций подчиненных объектов.
Структура метаданных в отчете и в программной модели не содержит ветки "Общие". Эта ветка используется только в дереве метаданных для удобства редактирования. В отчете по конфигурации и в программной модели все объекты, входящие в ветку "Общие", подчинены непосредственно корневому объекту.
Доступ к структуре метаданных осуществляется через свойство Метаданные глобального контекста. Это свойство предоставляет доступ к корневому объекту конфигурации и коллекциям объектов верхнего уровня. Каждый объект предоставляет соответственно доступ к своим свойствам и подчиненным объектам. Таким образом, можно получить доступ к любому объекту.
Например:
Кроме того, у некоторых типов предназначенных для работы с прикладными объектами, имеется метод Метаданные() , предназначенный для получения объекта метаданных, отвечающего за конкретный тип.
Например:
Однако такие методы есть не у всех типов, используемых для работы с прикладными объектами. Если необходимо получить объект метаданных, отвечающий за некоторый тип прикладного объекта, то можно использовать метод НайтиПоТипу() .
Например:
Объекты метаданных можно сравнивать на равенство. При этом проверяется идентичность объектов, а не совпадение значений свойств. То есть проверяется то, что сравнивается именно один и тот же объект конфигурации.
Например:
С помощью метода Родитель() можно получить вышестоящий объект метаданных.
Например:
Для представления объекта метаданных пользователю нужно использовать преобразование значения к строке или метод Представление() .
Например:
Объекты метаданных не могут быть сериализованы. Для получения строкового значения, соответствующего объекту метаданных, независимого от языка интерфейса пользователя нужно использовать метод ПолноеИмя() .
Например:
Для поиска объекта метаданных, соответствующего значению перечисления, можно использовать методику, описанную в разделе "Как получить имя значения перечисления, заданное в метаданных?".
Метаданные можно использовать, чтобы проверить, относится ли, например, значение к справочникам. Методика такой проверки описана в разделе "Как проверить, что тип значения относится к справочникам, документам и т. д.?".
Некоторые свойства объектов метаданных имеют перечислимый тип. Это специальные перечисления. Доступ к ним в языке выполняется через коллекцию СвойстваОбъектов , предоставляемую корневым объектом метаданных. Состав этих перечислений описан в документации, в разделе, описывающем работу с объектами метаданных.
Например:
Некоторые свойства объектов метаданных являются коллекциями значений и представляются типом КоллекцияЗначенийСвойстваОбъектаМетаданных .
Например:
В разделе документации, описывающем работу с объектами метаданных, приводятся также описания специфических типов свойств метаданных, например, таких как ПараметрыВводаПоСтроке .
Следует учитывать, что не все значения свойств метаданных могут быть получены из встроенного языка. Программный доступ к объектам метаданных не позволяет получать, например, значения свойств, хранящих формы, модули, макеты, разделы справочной информации, картинки, интерфейсы, стили, наборы предопределенных объектов, права.
Для получения форм и макетов используются специализированные методы.
Для получения значений, идентифицирующих стили и элементы стилей, а также картинок, используются специализированные коллекции.
Например:
Для проверки прав текущего пользователя используются специализированные методы глобального контекста ПравоДоступа() и ПараметрыДоступа() .
Читайте также:
- Joys s10 как зайти в браузер
- Patch tool в фотошопе где находится
- 1с не печатает 2 экземпляра
- Нфнф в 1с что
- Программы для тренировки программирования