Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Предопределенные системные характеристики объекта в среде «1С:Предприятие 8» (на примере объекта «Документ»)
Программистов, приступающих к изучению системы «1С:Предприятие 8», встречает одно весьма неприятное затруднение.
Практически с самого начала курса программирования в среде «1С:Предприятие» в учебных текстах программ на встроенном языке начинают встречаться некоторые переменные, которые до этого в явном виде не были определены.
Например, в очень хорошем учебном пособии «1С:Предприятие 8.0: Практическое пособие разработчика: Примеры и типовые приемы» (М.: 1С-Паблишинг, 2006) на странице 91 мы встречаем следующее выражение:
Движение = Движения. ОстаткиМатериалов. Добавить();
С переменное «Движение» вроде бы все ясно – она определяется через присвоение значения Движения. ОстаткиМатериалов. Добавить() (встроенный язык «1С:Предприятие» это позволяет).
Однако, что же такое «Движения. ОстаткиМатериалов»? Ведь ранее это выражение нам не встречалось.
К сожалению, в учебниках по программированию в среде «1С:Предприятие», как нам представляется, об этом говорится недостаточно подробно, и нам пришлось потратить немало времени, чтобы найти ответ.
Он заключается в особенностях объектно-ориентированного программирования (ООПр), на использовании которого основана программа «1С:Предприятие» (подробнее об основах ООПр можно прочитать, например, в материале «Объектно-ориентированное программирование» (<http://www. ttgdt. *****/students/learn/class_lang/pascal/Bp70-ug/9.html>)), опубликованном на сайте Томского техникума железнодорожного транспорта, а также в книгах: Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (М.: Бином, 2001); , , Пугачев -ориентированное программирование (М.: МГТУ им. , 2001); Кьоу Дж., Объектно-ориентированное программирование: Учебный курс (СПб.: Питер, 2005); , Костерин программирования (М.: Высшая школа, 2005) и др.).
В настоящей учебной статье мы не будем подробно описывать принципы и подходы ООПр. Остановимся только на одной очень важной его особенности: в ООПр объекты могут содержать в себе определенные в них свойства и поля (переменные), методы (программы) и события (условия использования методов). В дальнейшем мы будем называть их «предопределенными системными характеристиками» объектов.
С понимаем методов и событий упомянутых выше проблем не возникает. За именованиями методов обычно следуют круглые скобки с помещенными в них параметрами или без таковых (например, Добавить()). Именования событий часто начинаются со слов «При», «Перед» и т. д. (например, «ПриКопировании», «ПередЗаписью») и также обычно сопровождаются круглыми скобками. При необходимости для уточнения особенностей использования предопределенных системных методов и событий можно воспользоваться «Синтакс-Помощником», встроенным в программу «1С:Предприятие 8».
Предопределенные системные свойства объектов выявить сложнее. Их нужно знать заранее. Поэтому перед изучением встроенного языка программирования «1С:Предприятие», как нам представляется, желательно уделить некоторое внимание изучению этих свойств.
В данной статье мы остановимся для примера только на свойствах объекта «Документ». Свойства других объектов начинающий программист может исследовать самостоятельно, используя подход, приведенный в настоящей статье.
Для изучения предопределенных системных свойств объекта «Документ» также воспользуемся услугами встроенного «Синтакс-Помощника».
Вызываем «Синтакс-Помощник» и на закладке «Индекс» в верхней строке записываем слово «Документ».
В окне под этой строкой мы видим целый ряд названий характеристик, из которых нас будут интересовать шесть: собственно «Документ», «ДокументОбъект», «ДокументМенеджер», «Документ. Ссылка», «ДокументСписок» и «ДокументВыборка».
Скажем несколько слов о значении этих характеристик.
Объект «Документ» «включает в себя» пять объектов (далее мы будем именовать их «подобъектами») - «ДокументОбъект», «ДокументМенеджер», «Документ. Ссылка», «ДокументСписок» и «ДокументВыборка».
Каждый из указанных «подобъектов» предназначен для определенных целей, приведенных в следующей таблице:
Предназначение | ДокументОбъект | ДокументМенеджер | ДокументСписок | ДокументСсылка | ДокументВыборка |
Создание нового документа | + | ||||
Модификация документов | + | ||||
Изменение и запись реквизитов | + | ||||
Управление документом как объектом конфигурации | + | ||||
Работа с формами и макетами документа | + | ||||
Поиск документов | + | ||||
Управление списком документов, отображаемым в табличном поле | + | ||||
Указание ссылки на документ в реквизитах других объектов и переменных встроенного языка | + | ||||
Получение выборки документов | + | ||||
Возвращение методом Выбрать() через объект типа ДокументМенеджер | + | ||||
Специализированный способ перебора документов | + |
Раскроем в «Синтакс-Помощнике» строки, соответствующие указанным выше шести объектам и получим следующую информацию:
Документ.<Имя документа>
(Document.<Имя документа>)
Предназначен для получения записей документов.
Пример:
ВЫБРАТЬ * ИЗ Документ. РасходнаяНакладная
Поля
<Имя реквизита>
<Имя табличной части>
Дата (Date)
МоментВремени (PointOfTime)
Номер (Number)
ПометкаУдаления (DeletionMark)
Представление (Presentation)
Проведен (Posted)
Ссылка (Ref)
ДокументОбъект.<Имя документа>
(DocumentObject.<Имя документа>)
Предназначен для модификации документов. Позволяет изменять реквизиты документа и записы-вать его.
Важно! У всех событий этого объекта назначены предопределенные процедуры-обработчики. Имена процедур соответствуют именам событий. Процедуры должны располагаться в модуле документа.
XML-сериализация.
Пример:
НовыйДок = Документы. ПеремещениеТоваров. СоздатьДокумент();
НовыйДок. Дата = ПолеВводаДаты;
НовыйДок. УстановитьВремя();
НовыйДок. УстановитьНовыйНомер();
// Формирование табличной части
Для Н=1 По N Цикл
НоваяСтрока = НовыйДок. Товары. Добавить();
НоваяСтрока. Номенклатура = СтрокаДанных. Номенклатура;
// формируются другие реквизиты табличной части
...
//
КонецЦикла;
НовыйДок. Записать();
СписокДокументов. Добавить(НовыйДок. Ссылка);
Свойства:
<Имя реквизита>
<Имя табличной части>
Дата (Date)
Движения (Movements)
Номер (Number)
ОбменДанными (DataExchange)
ПометкаУдаления (DeletionMark)
ПринадлежностьПоследовательностям (BelongingToSequences)
Проведен (Posted)
Ссылка (Ref)
ЭтотОбъект (ThisObject)
Методы:
Заблокирован (IsLocked)
Заблокировать (Lock)
Записать (Write)
Заполнить (Fill)
Метаданные (Metadata)
Модифицированность (Modified)
МоментВремени (PointOfTime)
ПолучитьМакет (GetTemplate)
ПолучитьСсылкуНового (GetNewObjectRef)
ПолучитьФорму (GetForm)
Прочитать (Read)
Разблокировать (Unlock)
Скопировать (Copy)
Удалить (Delete)
УстановитьВремя (SetTime)
УстановитьНовыйНомер (SetNewNumber)
УстановитьПометкуУдаления (SetDeletionMark)
УстановитьСсылкуНового (SetNewObjectRef)
ЭтоНовый (IsNew)
События:
ОбработкаЗаполнения (Filling)
ОбработкаПроведения (Posting)
ОбработкаУдаленияПроведения (UndoPosting)
ПередЗаписью (BeforeWrite)
ПередУдалением (BeforeDelete)
ПриЗаписи (OnWrite)
ПриКопировании (OnCopy)
ПриУстановкеНовогоНомера (OnSetNewNumber)
ДокументМенеджер.<Имя документа>
(DocumentManager.<Имя документа>)
Предназначен для управления документом, как объектом конфигурации. С помощью этого объекта осуществляется поиск документов, получение выборки документов, создание нового документа, работа с формами и макетами документа. Доступ к объекту осуществляется через свойства объекта Документы-Менеджер. Полное имя типа объекта определяется с учетом имени документа конфигурации. Например, для документа "Расходная накладная" имя типа будет выглядеть ДокументМенед-жер. РасходнаяНакладная.
Возможен обмен с сервером.
Пример:
Результат = Документы. РасходнаяНакладная. НайтиПоНомеру(НомерДок, РабочаяДата);
Если Результат. Пустая() Тогда
Предупреждение("Документ не найден!");
Иначе
Результат. ПолучитьФорму().Открыть();
КонецЕсли;
Методы:
Выбрать (Select)
НайтиПоНомеру (FindByNumber)
НайтиПоРеквизиту (FindByAttribute)
ПолучитьМакет (GetTemplate)
ПолучитьСсылку (GetRef)
ПолучитьФорму (GetForm)
ПолучитьФормуВыбора (GetChoiceForm)
ПолучитьФормуНовогоДокумента (GetNewDocumentForm)
ПолучитьФормуСписка (GetListForm)
ПустаяСсылка (EmptyRef)
СоздатьДокумент (CreateDocument)
ДокументСсылка.<Имя документа>
(DocumentRef.<Имя документа>)
Используется для указания ссылки на документ в реквизитах других объектов и переменных встроенного языка. Данный объект не содержит средств для модификации документа, однако позволяет обращаться к его реквизитам и другой информации об документе. При обращении к свойствам объекта будет выполняться считывание всех данных документа из базы данных, но оно будет оптимизировано при многократном обращении к данному документу как через этот объект, так и через другое равное ему значение.
Возможен обмен с сервером. Сериализуется. XML-сериализация.
Свойства:
<Имя реквизита>
<Имя табличной части>
Дата (Date)
Номер (Number)
ПометкаУдаления (DeletionMark)
Проведен (Posted)
Ссылка (Ref)
Методы:
Метаданные (Metadata)
МоментВремени (PointOfTime)
ПолучитьОбъект (GetObject)
ПолучитьФорму (GetForm)
Пустая (IsEmpty)
Скопировать (Copy)
УникальныйИдентификатор (UUID)
ДокументСписок.<Имя документа>
(DocumentList.<Имя документа>)
Описание: Предназначен для управления списком документов, отображаемым в табличном поле.
Свойства:
Колонки (Columns)
Отбор (Filter)
Порядок (Order)
Методы:
Обновить (Refresh)
ДокументВыборка.<Имя документа>
(DocumentSelection.<Имя документа>)
Объект этого типа возвращается методом Выбрать() у объекта типа ДокументМенеджер и пред-ставляет собой специализированный способ перебора документов.
Обход документов выполняется системой динамически. Это означает, что использование выборки не считывает все документы сразу, а выбирает их порциями из базы данных. Такой подход позволяет достаточно быстро обходить с помощью выборки большие списки документов и не загружает в память всех элементов выборки.
Важно! Данному объекту доступны все свойства объекта ДокументСсылка.
Свойства:
<Имя реквизита>
<Имя табличной части>
Дата (Date)
Номер (Number)
ПометкаУдаления (DeletionMark)
Проведен (Posted)
Ссылка (Ref)
Методы:
ПолучитьОбъект (GetObject)
Следующий (Next)
Итак, мы получили практически все предопределенные системные свойства (а также поля), методы и события, связанные с объектом "Документ".
Если внимательно посмотреть данные списки, то мы увидим, что вызвавшая у нас недоумение характеристика "Движения" встречается в списке, относящемся к "подобъекту" "ДокументОбъект". Она представляет собой предопределенное системное свойство "подобъекта" "ДокументОбъект" и, очевидно, объекта "Документ".
Полный список предопределенных системных свойств объекта "Документ" и всех его "подобъектов" (в алфавитном порядке) приведен в следующей таблице:
Свойства объекта «Документ»
Наименование предопределен. системного св-ва | Д | ДО | ДМ | ДСп | ДСс | ДВ |
<Имя реквизита> | + | + | +*) | +*) | ||
<Имя табличной части> | + | +*) | +*) | +*) | ||
Дата (Date) | + | + | +*) | +*) | ||
Движения (Movements) | + | +*) | ||||
Колонки (Columns) | + | +*) | ||||
МоментВремени (PointOfTime) | + | |||||
Номер (Number) | + | + | +*) | +*) | ||
ОбменДанными (DataExchange) | + | +*) | ||||
Отбор (Filter) | + | +*) | ||||
ПометкаУдаления (DeletionMark) | + | + | +*) | +*) | ||
Порядок (Order) | + | +*) | ||||
Представление (Presentation) | + | |||||
ПринадлежностьПоследовательностям (BelongingToSequences) | + | +*) | ||||
Проведен (Posted) | + | +*) | +*) | |||
Ссылка (Ref) | + | +*) | +*) | +*) | ||
ЭтотОбъект (ThisObject) | + | +*) |
Условные обозначения: Д – Документ, ДО – ДокументОбъект, ДМ – ДокументМенеджер, ДСп – ДокументСписок, ДСс – ДокументСсылка, ДВ – ДокументВыборка.
*) Только чтение (то есть изменение и запись не производятся).
Вообще, если какой-либо идентификатор, встречающийся в учебных примерах, ранее не был определен, то есть основание полагать, что он представляет собой предопределенное системное выражение (свойство, метод, событие и др.). В любом случае, можно порекомендовать посмотреть его в «Синтакс-Помощнике».
Так, рассмотрим программу из примера 5 на сайте Масича - 1С:Предприятие 8.0 в примерах (бухгалтерия) (<http://masich. info/articles/16/1/5-Aieoiaiou-Oidia-Oidioeu-1N-80/Nodaieoa1.html>):
Процедура ПриВыбореТМЦ(Элемент)
ЭлементыФормы. Товары. ТекущиеДанные. Цена = ЭлементыФормы. Товары. ТекущиеДанные. ТМЦ. Цена;
КонецПроцедуры
После изучения всех предопределенных системных свойств мы уже знаем, что "ЭлементыФормы" - это предопределенное системное свойство объекта "Форма".
"Товары" - это идентификатор табличной части активного документа.
А что означает имя "ТекущиеДанные"? Спросим это у «Синтакс-Помощника»? Оказывается, что это "обращение к реквизиту табличной части", в данном случае, обращение к реквизиту табличной части "Товары" активного документа. Как следует из справки «Синтакс-Помощника», "ТекущиеДанные" является предопределенное системное свойство объекта "ТабличноеПоле".
А кто может сказать нам, что означает параметр "Элемент"? К сожалению, в «Синтакс-Помощнике» слова "Элемент" найти не удастся...


