1с контекст варианта отчета
, или просто, – это набор функций, процедур, свойств, типов, объектов, методов, событий, доступный в некотором модуле, в некотором его методе. Другими словами, находясь в модуле, вы можете использовать не все то, что описано в синтакс-помощнике, а только некоторую часть синтакс-помощника. Эта часть и называется контекстом.
Наиболее крупными контекстами являются и . Причина их существования заключается в том, что в самом общем случае прикладные решения работают в клиент-серверном варианте.
В этом варианте работы пользователь взаимодействует с клиентским приложением. В клиентском приложении в определенные моменты времени (события) выполняется программный код, написанный в модулях. Этот код исполняется в клиентском контексте.
Клиентское приложение, в свою очередь, взаимодействует с кластером серверов «1С:Предприятия 8». В кластере серверов также, в определенные моменты времени (события) или в определенной ситуации (вызов серверного метода), выполняется программный код, написанный в модулях. Этот код исполняется в серверном контексте.
Так как система программ «1С:Предприятие 8» позволяет работать с прикладными решениями через Интернет, клиентское приложение и кластер серверов могут находиться и исполняться не просто на разных компьютерах, а в разных городах, странах, частях света.
Конечно, в более простых случаях клиентское приложение и кластер серверов могут находиться на одном компьютере, или кластер серверов может вообще не использоваться (в файловом варианте работы). Но это не влияет на то, как пишутся модули: они пишутся один раз и сразу для работы в самом общем, клиент-серверном варианте. А если в реальной ситуации используется более простой вариант развертывания системы, то платформа просто эмулирует нужные контексты при выполнении тех или иных модулей.
Условия, в которых исполняется код клиентских приложений, значительно отличаются от условий, в которых исполняется код кластера серверов. Например, там, где есть клиентское приложение, там есть пользователь, есть возможность интерактивного взаимодействия с ним. Для этого встроенный язык может использовать большой набор интерфейсных типов, которые входят в клиентский контекст.
С другой стороны, там, где исполняется кластер серверов, там нет пользователя. Соответственно и типы, предназначенные для взаимодействия с интерфейсом, в серверном контексте отсутствуют. В то же время кластер взаимодействует с системой управления базами данных, поэтому на сервере во встроенном языке доступны прикладные типы, позволяющие читать прикладные данные из базы и записывать их. Эти типы есть в серверном контексте, однако их нет в клиентском контексте.
Самое очевидное место, где вы можете увидеть использование клиентского и серверного контекстов – это модули форм. Эти модули могут исполняться и клиентскими приложениями и кластером серверов. Поэтому, как правило, перед каждым методом таких модулей указана директива компиляции. Она определяет, в каком контексте будет существовать этот метод в этом модуле:
Директива &НаСервере значит, что эта процедура будет существовать в модуле, когда он исполняется на сервере. Когда он исполняется на клиенте, в нем этой процедуры не будет.
Директива &НаКлиенте значит, что эта процедура будет существовать в модуле, когда он исполняется на клиенте. Когда он исполняется на сервере, в нем этой процедуры не будет.
Помимо клиентского и серверного контекстов существуют и более «узкие» контексты. Это связано с тем, что клиентских приложений существует несколько (тонкий клиент, веб-клиент, толстый клиент, мобильный клиент), а серверная часть бывает не только у «настольных» приложений, но и у мобильных. Каждое из клиентских приложений, каждая серверная часть имеют свои особенности исполнения программного кода, имеют свой контекст. Эти контексты вы можете увидеть в синтакс-помощнике, в описании всех типов, их методов, свойств и событий. Они перечисляются в разделе Доступность.
Для типа Массив указано:
Это значит, что тип Массив вы можете использовать практически во всех клиентских и серверных контекстах. В том числе и на мобильных устройствах.
Варианты отчетов следует создавать когда есть необходимость анализировать в одной схеме компоновке данных различные настройки по структуре отчета. В этом случае создается отчет с одной схемой, но с несколькими вариантами отчетов.
Варианты отчетов создаются на закладке Настройки конструктора СКД. Однако, при использовании варианты отчетов в конфигурации Библиотеки стандартных подсистем следует обязательно заполнять описание варианта отчета, иначе эти варианты не будут отражаться в в подменю Еще общей формы отчета:
Рис 1 Отображение вариантов отчетов в общей форме отчета БСП 3.0
Описание Варианта отчетов
Удалить Вариант Отчета
Вызов следующей процедуры подсистемы удаляет варианты указанного отчета или всех отчетов.
Можно также смотреть подробнее метод СтандартноеХранилищеНастроекМенеджер.Удалить в синтакс-помощнике. Для доступа к пользовательским настройкам отчетов объект этого типа должен быть получен из свойства глобального контекста ХранилищеПользовательскихНастроекОтчетов:.
Рис 2 Хранилище вариантов отчетов
Обработка обновления вспомогательнх данных
При разработке прикладных приложений на базе БСП часто потребуется воспользоваться служебной обработкой Обновление вспомогательных данных, особенно, при добавлении новых вариантов отчетов.
Рис 3 Фрагмент дерево метаданных обработок в конфигурации БСП 3.0
Только полле вволнения данной процедуры все добавленные варианты отчета в конфигурации появится в списке варинтов отчетов.
Свойство отчета "Хранилище вариантов" не заполнено.
Сохранение (выбор) вариантов отчета будет работать в ограниченном режиме.
Обратитесь к разработчику дополнительного (внешнего) отчета.
Ошибка при подключении внешнего отчета 1С
Для чего нужно хранилище вариантов отчета
Пример сохраненных вариантов отчетов 1С
1С позаботилась о разработчиках и предоставила им возможность без лишних доработок использовать данный механизм в своих внешних отчетах.
1. Открываем палитру свойств нашего внешнего отчета как показано на картинке ниже:
2. В свойстве «Хранилище вариантов» выбираем хранилище настроек с именем «ХранилищеВариантовОтчетов»
Выбираем хранилище вариантов
Сохраняем вариант отчета для других пользователей
После подключения нашего внешнего отчета в конфигурацию, открываем его. Например, вы внесли какие-то изменения в структуру отчета в пользовательском режиме и хотим поделиться этим вариантом с другими пользователями.
1. Для этого, выбираем типовую команду «Сохранить вариант отчета»:
Сохранение варианта отчета для других пользователей
3. Указываем раздел, в который хотим поместить нашу настройку отчета, например, «Кадры». Пишем описание для варианта отчета, если надо и сохраняем.
4. Теперь наш вариант отчета доступен другим пользователям как в самом отчете:
Пример выбора настройки внешнего отчета 1С
Так и в разделе «Отчеты» в ветке «Кадры»
Вариант внешнего отчета 1С в разделе Отчеты
Итоги
После нехитрых настроек наш внешний отчет теперь может работать с типовым хранилищем вариантов отчетов. Это позволит сохранять различные настройки внешнего отчета в хранилище и давать доступ к ним для других пользователей 1С.
Добрый день, коллеги! Тема библиотеки стандартных подсистем обширна и недостаточно раскрыта. Все новые конфигурации построены на основе этой библиотеки, - ЗУП 3.1, УТ 11, ERP 2.4 и другие. Поэтому Вашему вниманию предлагаю простой способ разработки контекстного отчета на основе СКД, поскольку большинство отчетов построено на СКД, и в экзамене на 1С Специалист по платформе тоже отчеты строятся на СКД, которые позволяют на своей основе построить отчеты с универсальными настройками и не создавать полностью макет вручную и программно его заполнять.
Пример построения подобного отчета можно посмотреть демо конфигурации БСП соответствующей версии на примере отчета _ДемоОтчетПоСчетамНаОплатуКонтекстный.
Для программы ЗУП 3.1.12 используется версия библиотеки стандартных подсистем 3.1.2. В отчете используется макет ОсновнаяСхемаКомпоновкиДанных.
В данной схеме компоновки отчета отсутствуют параметры, но в полях выборки есть поле ссылка, именно по нему происходит отбор, при открытии отчета.
В модуле отчета, имеются процедуры:
- СведенияОВнешнейОбработке() Экспорт - для регистрации отчета в системе
2.И две процедуры, с помощью которых происходит передача параметров из вызывающего объекта в отчет:
Таким образом в нашем случае отбор по ссылке происходит в этом участке кода:
На основе этого примера, я сделал отчет "Лист ознакомления с графиком отпусков", который вызывается из формы списка, и формы документа "График отпусков", причем в этом отчете параметры присутствуют, и они корректно заполняются. Вместо "Ссылка" в вышеприведенном коде нужно вставить название вашего параметра.
После добавления внешнего отчета в Дополнительные отчеты и обработки необходимо также указать размещение, в нашем случае документ "График отпусков".
После этого в меню Еще. появляется пункт Дополнительные отчеты, откуда и вызывается отчет "Лист ознакомления".
Читайте также: