1с контекст варианта отчета

Обновлено: 08.07.2024

, или просто, – это набор функций, процедур, свойств, типов, объектов, методов, событий, доступный в некотором модуле, в некотором его методе. Другими словами, находясь в модуле, вы можете использовать не все то, что описано в синтакс-помощнике, а только некоторую часть синтакс-помощника. Эта часть и называется контекстом.

Наиболее крупными контекстами являются и . Причина их существования заключается в том, что в самом общем случае прикладные решения работают в клиент-серверном варианте.

В этом варианте работы пользователь взаимодействует с клиентским приложением. В клиентском приложении в определенные моменты времени (события) выполняется программный код, написанный в модулях. Этот код исполняется в клиентском контексте.

Клиентское приложение, в свою очередь, взаимодействует с кластером серверов «1С:Предприятия 8». В кластере серверов также, в определенные моменты времени (события) или в определенной ситуации (вызов серверного метода), выполняется программный код, написанный в модулях. Этот код исполняется в серверном контексте.

Так как система программ «1С:Предприятие 8» позволяет работать с прикладными решениями через Интернет, клиентское приложение и кластер серверов могут находиться и исполняться не просто на разных компьютерах, а в разных городах, странах, частях света.

Конечно, в более простых случаях клиентское приложение и кластер серверов могут находиться на одном компьютере, или кластер серверов может вообще не использоваться (в файловом варианте работы). Но это не влияет на то, как пишутся модули: они пишутся один раз и сразу для работы в самом общем, клиент-серверном варианте. А если в реальной ситуации используется более простой вариант развертывания системы, то платформа просто эмулирует нужные контексты при выполнении тех или иных модулей.

Условия, в которых исполняется код клиентских приложений, значительно отличаются от условий, в которых исполняется код кластера серверов. Например, там, где есть клиентское приложение, там есть пользователь, есть возможность интерактивного взаимодействия с ним. Для этого встроенный язык может использовать большой набор интерфейсных типов, которые входят в клиентский контекст.

С другой стороны, там, где исполняется кластер серверов, там нет пользователя. Соответственно и типы, предназначенные для взаимодействия с интерфейсом, в серверном контексте отсутствуют. В то же время кластер взаимодействует с системой управления базами данных, поэтому на сервере во встроенном языке доступны прикладные типы, позволяющие читать прикладные данные из базы и записывать их. Эти типы есть в серверном контексте, однако их нет в клиентском контексте.

Самое очевидное место, где вы можете увидеть использование клиентского и серверного контекстов – это модули форм. Эти модули могут исполняться и клиентскими приложениями и кластером серверов. Поэтому, как правило, перед каждым методом таких модулей указана директива компиляции. Она определяет, в каком контексте будет существовать этот метод в этом модуле:

Директива &НаСервере значит, что эта процедура будет существовать в модуле, когда он исполняется на сервере. Когда он исполняется на клиенте, в нем этой процедуры не будет.

Директива &НаКлиенте значит, что эта процедура будет существовать в модуле, когда он исполняется на клиенте. Когда он исполняется на сервере, в нем этой процедуры не будет.

Помимо клиентского и серверного контекстов существуют и более «узкие» контексты. Это связано с тем, что клиентских приложений существует несколько (тонкий клиент, веб-клиент, толстый клиент, мобильный клиент), а серверная часть бывает не только у «настольных» приложений, но и у мобильных. Каждое из клиентских приложений, каждая серверная часть имеют свои особенности исполнения программного кода, имеют свой контекст. Эти контексты вы можете увидеть в синтакс-помощнике, в описании всех типов, их методов, свойств и событий. Они перечисляются в разделе Доступность.

Для типа Массив указано:

Это значит, что тип Массив вы можете использовать практически во всех клиентских и серверных контекстах. В том числе и на мобильных устройствах.

Варианты отчетов следует создавать когда есть необходимость анализировать в одной схеме компоновке данных различные настройки по структуре отчета. В этом случае создается отчет с одной схемой, но с несколькими вариантами отчетов.

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


Рис 1 Отображение вариантов отчетов в общей форме отчета БСП 3.0

Описание Варианта отчетов

Удалить Вариант Отчета

Вызов следующей процедуры подсистемы удаляет варианты указанного отчета или всех отчетов.

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


Рис 2 Хранилище вариантов отчетов

Обработка обновления вспомогательнх данных

При разработке прикладных приложений на базе БСП часто потребуется воспользоваться служебной обработкой Обновление вспомогательных данных, особенно, при добавлении новых вариантов отчетов.


Рис 3 Фрагмент дерево метаданных обработок в конфигурации БСП 3.0

Только полле вволнения данной процедуры все добавленные варианты отчета в конфигурации появится в списке варинтов отчетов.

Хранилище вариантов отчета 1С

Свойство отчета "Хранилище вариантов" не заполнено.
Сохранение (выбор) вариантов отчета будет работать в ограниченном режиме.
Обратитесь к разработчику дополнительного (внешнего) отчета.

Ошибка Свойство отчета "Хранилище вариантов" не заполнено 1С

Ошибка при подключении внешнего отчета 1С

Для чего нужно хранилище вариантов отчета

Пример настроек вариантов отчета из типового хранилища настроек 1С

Пример сохраненных вариантов отчетов 1С

1С позаботилась о разработчиках и предоставила им возможность без лишних доработок использовать данный механизм в своих внешних отчетах.

1. Открываем палитру свойств нашего внешнего отчета как показано на картинке ниже:

Свойства внешнего отчета

2. В свойстве «Хранилище вариантов» выбираем хранилище настроек с именем «ХранилищеВариантовОтчетов»

Заполнение свойства внешнего отчета "Хранилище вариантов"

Выбираем хранилище вариантов

Сохраняем вариант отчета для других пользователей

После подключения нашего внешнего отчета в конфигурацию, открываем его. Например, вы внесли какие-то изменения в структуру отчета в пользовательском режиме и хотим поделиться этим вариантом с другими пользователями.

1. Для этого, выбираем типовую команду «Сохранить вариант отчета»:

Сохранение варианта внешнего отчета в 1С

Сохранение варианта отчета для других пользователей

Настройки варианта отчета 1С

3. Указываем раздел, в который хотим поместить нашу настройку отчета, например, «Кадры». Пишем описание для варианта отчета, если надо и сохраняем.

Раздел для варианта отчета 1С

4. Теперь наш вариант отчета доступен другим пользователям как в самом отчете:

Выбр варианта отчета 1С из хранилища

Пример выбора настройки внешнего отчета 1С

Так и в разделе «Отчеты» в ветке «Кадры»

Расположение настройки внешнего отчета из хранилища вариантов в разделе отчеты

Вариант внешнего отчета 1С в разделе Отчеты

Итоги

После нехитрых настроек наш внешний отчет теперь может работать с типовым хранилищем вариантов отчетов. Это позволит сохранять различные настройки внешнего отчета в хранилище и давать доступ к ним для других пользователей 1С.

Добрый день, коллеги! Тема библиотеки стандартных подсистем обширна и недостаточно раскрыта. Все новые конфигурации построены на основе этой библиотеки, - ЗУП 3.1, УТ 11, ERP 2.4 и другие. Поэтому Вашему вниманию предлагаю простой способ разработки контекстного отчета на основе СКД, поскольку большинство отчетов построено на СКД, и в экзамене на 1С Специалист по платформе тоже отчеты строятся на СКД, которые позволяют на своей основе построить отчеты с универсальными настройками и не создавать полностью макет вручную и программно его заполнять.

Пример построения подобного отчета можно посмотреть демо конфигурации БСП соответствующей версии на примере отчета _ДемоОтчетПоСчетамНаОплатуКонтекстный.

Для программы ЗУП 3.1.12 используется версия библиотеки стандартных подсистем 3.1.2. В отчете используется макет ОсновнаяСхемаКомпоновкиДанных.

Схема компоновки данных

В данной схеме компоновки отчета отсутствуют параметры, но в полях выборки есть поле ссылка, именно по нему происходит отбор, при открытии отчета.

В модуле отчета, имеются процедуры:

  1. СведенияОВнешнейОбработке() Экспорт - для регистрации отчета в системе

2.И две процедуры, с помощью которых происходит передача параметров из вызывающего объекта в отчет:

Таким образом в нашем случае отбор по ссылке происходит в этом участке кода:

На основе этого примера, я сделал отчет "Лист ознакомления с графиком отпусков", который вызывается из формы списка, и формы документа "График отпусков", причем в этом отчете параметры присутствуют, и они корректно заполняются. Вместо "Ссылка" в вышеприведенном коде нужно вставить название вашего параметра.

После добавления внешнего отчета в Дополнительные отчеты и обработки необходимо также указать размещение, в нашем случае документ "График отпусков".


После этого в меню Еще. появляется пункт Дополнительные отчеты, откуда и вызывается отчет "Лист ознакомления".

Читайте также: