Устройство встроенного языка 1с. Прикладные объекты

1. Vladimir99 14.05.22 14:40 Сейчас в теме
Почему можно писать так:

Выборка = Документы.УчебныйДень.Выбрать();

А так писать нельзя:

Выборка = Документы.ДокументВыборка.УчебныйДень.Выбрать();
ИЛИ
Выборка = ДокументВыборка.УчебныйДень.Выбрать();
По теме из базы знаний
Найденные решения
4. spacecraft 14.05.22 15:18 Сейчас в теме
(3) Документы это глобальный объект типа ДокументМенеджер.
гаврюша; Vladimir99; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 14.05.22 15:14 Сейчас в теме
(1)
Выборка = Документы.УчебныйДень.Выбрать();

Документы это не просто слово, это обращение к ДокументМенеджер. У ДокументМенеджер есть свойство <Имя документа>. Этот набор свойств содержит менеджеры отдельных документов. Имена свойств совпадают с именами документов, как они заданы в Конфигураторе.
ДокументВыборка не самостоятельный объект. Он получается как результат других действий.
Vladimir99; +1 Ответить
3. Vladimir99 14.05.22 15:16 Сейчас в теме
(2) То есть Документы = ДокументМенеджер.<ИмяДокумента> ?
4. spacecraft 14.05.22 15:18 Сейчас в теме
(3) Документы это глобальный объект типа ДокументМенеджер.
гаврюша; Vladimir99; +2 Ответить
5. Vladimir99 14.05.22 15:21 Сейчас в теме
(4)
Глобальные объекты могут использовать свойства и методы типов, которые в них входят?
6. spacecraft 14.05.22 15:30 Сейчас в теме
(5) см СП:

ДокументыМенеджер (DocumentsManager)
...
Описание:
Предназначен для управления документами и предоставляет доступ к значениям типа ДокументМенеджер.<Имя документа>. Доступ к объекту осуществляется через свойство глобального контекста Документы.



(5)
Глобальные объекты могут использовать свойства и методы типов, которые в них входят?

Объекты (в том числе и глобальные) могут использовать свойства и методы самого объекта.
В данном случае можно использовать свойство <Имя документа>. Оно специально так приведено в СП, так как вместо него подставляется имя конкретного документа, как оно задано в конфигураторе. И уже у него получается доступ к менеджеру самого конкретного документа.
Vladimir99; +1 Ответить
7. Vladimir99 14.05.22 16:00 Сейчас в теме
(6)
Документы

Спасибо, теперь мне стало понятнее.
Что-то типа матрёшки получается.
Прикрепленные файлы:
8. spacecraft 14.05.22 16:02 Сейчас в теме
(5) (7) можно воспринимать Документы как коллекцию, которая содержит менеджеры документов.
На примере Структуры это будет выглядеть так:
//СписокДокументМенеджер = Документы
СписокДокументМенеджер = Новый Структура;

//Наполняем коллекцию нужными объектами, так как в Документы они уже добавлены по умолчанию.
СписокДокументМенеджер.Вставить("Документ1", Документы.Документ1);

//Выборка = Документы["Документ1"].Выбрать()
// либо же используя выше объявленную переменную:
//Выборка = СписокДокументМенеджер["Документ1"].Выбрать();
Выборка = СписокДокументМенеджер["Документ1"].Выбрать();
Показать

Итоговая строка может быть одинаковой и для Документы и для Структуры.
Сама Структура ничего не знает про свойства и типы вложенных объектов. Только через получение самих объектов можно использовать методы и свойства этих объектов.
Так и Документы.
9. Vladimir99 14.05.22 16:16 Сейчас в теме
(8)
Документы.Документ1


Менеджеры документов это то, что находится по пути Прикладные объекты → Документы?
10. Vladimir99 14.05.22 16:21 Сейчас в теме
(8)
//СписокДокументМенеджер = Документы
СписокДокументМенеджер = Новый Структура;

//Наполняем коллекцию нужными объектами, так как в Документы они уже добавлены по умолчанию.
СписокДокументМенеджер.Вставить("Документ1", Документы.Документ1);

//Выборка = Документы["Документ1"].Выбрать()
// либо же используя выше объявленную переменную:
//Выборка = СписокДокументМенеджер["Документ1"].Выбрать();
Выборка = СписокДокументМенеджер["Документ1"].Выбрать();
Прикрепленные файлы:
11. spacecraft 14.05.22 16:28 Сейчас в теме
(10) Так я как пример привел. Естественно, вместо Документ1 подставить имя существующего документа.
Да, и выполнять этот код на тонком клиенте нельзя. Документы это ДокументМенеджер. Он не доступен на тонком клиенте. Выполняйте на сервере.
12. Vladimir99 14.05.22 16:33 Сейчас в теме
(11) А чего оно пишет Переменная не определена (Документы) ?
13. spacecraft 14.05.22 16:35 Сейчас в теме
(12) МодульУправляемогоПриложение выполняется на клиенте. В Тонком клиенте Документы как глобальный контекст не доступен. Перенесите код на сервер.
14. Vladimir99 14.05.22 16:41 Сейчас в теме
(13) Да, заработало, спасибо. Какие выводы из этого можно сделать?
Мы создали структуру содержащую наши документы?

А как платформа хранит документы?
15. spacecraft 14.05.22 16:48 Сейчас в теме
(14) это не сами документы. Это менеджеры документов.

Описание:
Предназначен для управления документом, как объектом конфигурации. С помощью этого объекта осуществляется поиск документов, получение выборки документов, создание нового документа, работа с формами и макетами документа. Доступ к объекту осуществляется через свойства объекта ДокументыМенеджер. Полное имя типа объекта определяется с учетом имени документа конфигурации. Например, для документа "Расходная накладная" имя типа будет выглядеть ДокументМенеджер.РасходнаяНакладная.

Документы как объекты метаданных создаются в самом конфигураторе. И хранятся в базе, как объекты конфигурации.
(14)
Какие выводы из этого можно сделать?

То что Документы как ДокументыМенеджер это всего навсего коллекция и она ничего не знает про свойства и методы самих вложенных объектов.
Vladimir99; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот