1с как сделать расшифровку в отчете

от admin

1С 8.3 : Как сделать Расшифровку в табличном документе

Вопрос: Подскажите пожалуйста, каким образом можно сделать следующее.

У меня есть выводимый в табличный документ результат запроса, к ячейке есть расшифровка.

Я хочу чтобы при двойном клике на ячейку выполнялась процедура которая к примеру запускает отчет по расшифровке ячейки.

Ответ: Расшифровки бывают стандартные и нестандартные.

I) Стандартные:

может использоваться как непосредственно в табличном документе, так и в объекте ПолеТабличногоДокумента (т.е.табличный документ, размещенный не в отдельном окне, а непосредственно на форме).

Чтобы Расшифровка сработала, должны выполняться 3 условия:

1) Для ячейки табличного документа, из которой мы хотим вызвать Расшифровку, должно быть установлено свойство ПараметрРасшифровки. Например, мы хотим, чтобы по двойному щелчку на ячейке с названием контрагента открывалась форма элемента справочника Контрагента, чтобы можно было уточнить какие-то данные, которые в отчет не выводятся. Задаем свойству ПараметрРасшифровки какое-нибудь значение, например, РасшифровкаКонтрагента.

2)В процессе вывода областей макета в результирующий табличный документ нужно ОБЯЗАТЕЛЬНО ПРИСВОИТЬ параметру расшифровки значение нужного типа, например:

3)Должен быть обеспечен запрет редактирования ячейки с расшифровкой, т.е. нужно указать

ТабДок.ТолькоПросмотр = Истина;

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

II) Нестандартные:

по двойному щелчку на ячейке с расшифровкой можно вызвать свою процедуру. Для реализации этого следует выполнить несколько условий:

1)Вывод табличного документа должен осуществляться в объект ПолеТабличногоДокумента;

2)Должно быть присвоено значение свойству ячейки ПараметрРасшифровки, например, РасшифровкаКонтрагента.

3)Параметру расшифровки РасшифровкаКонтрагента присваивается заполненный при формировании табличного документа нужными значениями СписокЗначений или чаще Структура. В частности, может передаваться имя стандартного отчета конфигурации и параметров, которые нужно задать в форме отчета, например, период дат, номер счета и т.д. А потом этот отчет вызывается как процедура.

4)Для объекта ПолеТабличногоДокумента свойство ТолькоПросмотр нужно установить в значение Истина.

5)Код пользовательской процедуры помещается в процедуру

Приведу небольшой пример, открывающий для «щелкнутого» контрагента подчиненный справочник.

Расшифровка в 1С СКД

При разработке отчетов в 1С достаточно часто требуется такая функция как Расшифровка 1С СКД. Обычно под расшифровкой понимается формирование такого же отчета с установленными отборами с дополнительной (более подробной) группировкой.

В том числе такая возможность имеется и в отчетах, созданных с помощью 1С СКД. При этом функционал расшифровки является встроенным и позволяет выполнять пользователю различные действия, без приложения дополнительных усилий со стороны программиста. То есть при создании отчета на СКД программисту достаточно настроить только схему компоновки – без дополнительного кода в модуле отчета и без добавления форм отчета.

Стандартные возможности расшифровки 1С СКД

В пользовательском режиме расшифровку отчета можно вызвать двумя способами:

  • Левой клавишей мыши (ЛКМ) или с клавиатуры клавишей Enter на области отчета. При этом для значений ссылочного типа выполняется действие по умолчанию – открытие значения, для полей ресурсов – расшифровка по выбранному полю, для значений группировкой не ссылочного типа – открывается меню выбора действия расшифровки
  • Правой клавишей мыли (ПКМ) . При этом открывается меню выбора действия расшифровки

Какие действия доступны при выполнении расшифровки:

  • Расшифровать – новый отчет с установленными отборами по измерениям и группировкой по выбранному полю
  • Открыть – открыть форму значения ссылочного типа
  • Отфильтровать – новый отчет с дополнительно установленным отбором
  • Упорядочить – новый отчет с дополнительно установленной сортировкой
  • Сгруппировать – новый отчет с дополнительной группировкой
  • Оформить – новый отчет с дополнительно настроенным условным оформлением

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

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

Дальше мы будем рассматривать все более сложные ситуации при разработке отчета на СКД. Например, вам может понадобиться добавить свою форму в отчет – добавить какие-то дополнительные команды, настроить более сложный интерфейс для пользователя.

При добавлении новой формы отчета система производит сама настройку формы для использования совместно с СКД. В том числе добавляется реквизит «ДанныеРасшифровки» с типом «Строка». И в свойствах формы производится связь атрибута «Данные расшифровки» с созданным реквизитом.

Если вы добавляете форму отчета самостоятельно – например, как произвольную или копируете форму из какого-то другого объекта, для правильной работы расшифровки вам необходимо добавить реквизит и настроить его связь, как описано выше.

Расшифровка при программном выполнении 1С СКД

При разработке отчета на СКД вам иногда может понадобиться выполнять программного выполнения. Например, всегда – при использовании внешних наборов данных. Например, в ситуации, когда в отчете есть больше чем одна схема компоновки.

В этом случае, для правильной работы расшифровки, необходимо в модуле объекта отчета в процедуре ПриКомпоновкеРезультата передавать параметр процедуры «ДанныеРасшифровки» в два места кода программного выполнения СКД:

Макеты и расшифровка 1С СКД

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

Рассмотрим настройку простого отчета по регистру оборотов «Продажи»

В схеме добавлено два макета группировки

Если сформировать отчет и навести курсор на группировку «Контрагент», то курсор меняется на «лупу с крестиком» — расшифровка доступна. Если навести курсор на группировки «Номенклатура» или «Детали», расшифровка недоступна.

Макет для группировки «Номенклатура» выглядит следующим образом

Для ячейки макета «Номенклатура» определим свойство «ПараметрРасшифровки»

Назвать параметр расшифровки нужно отлично от свойства «Параметр», тогда в параметрах макета добавится наш параметр расшифровки:

Зайдем здесь в редактирование поля «Выражение», определим основное действие. Например, «Расшифровать»:

Теперь это действие будет выполняться по умолчанию при клике ЛКМ, при клике ПКМ доступно меню всех действий расшифровки. Для остальных ячеек (Количество, Сумма) зададим такое же название параметра расшифровки. В этом случае расшифровка будет действовать одинаково для всех ячеек в группировке.

В окне редактирования параметра расшифровки мы можем также переопределить значения полей набора, которые будут использоваться для расшифровки. Например, для поля «Номенклатуры» можно указать выражение «Контрагент» и при открытии значения будет открываться карточка контрагента:

Мы разобрали уже немало вариантов применения расшифровки в СКД, но до сих пор не написали ни одной (ну или почти ни одной) строчки кода. В следующей главе рассмотрим ситуации, когда для обработки расшифровки необходимо написать программный код.

Произвольная обработка расшифровки 1С СКД

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

Для реализации произвольной расшифровки служит событие «ОбработкаРасшифровки» у табличного документа и обработчик «ОбработкаДополнительнойРасшифровки». Первой событие вызывается по ЛКМ, второй при клике ПКМ.

Заголовок обоих обработчиков выглядит одинаково. Здесь и далее будем рассматривать работу расшифровки для управляемых форм:

Читать:
Неберущиеся интегралы как решать

Нас будут интересовать параметры: «Расшифровка» — в этом параметре указывается идентификатор расшифровки, в параметре «СтандартнаяОбработка» указываем «Истина», если нужно выполнить стандартный алгоритм расшифровки, «Ложь» если мы реализуем произвольную расшифровку.

Теперь немного подробнее про параметр «Расшифровка». Вспомним про реквизит формы «ДанныеРасшифровки» . В этом реквизите (напомню, что мы рассматриваем управляемый режим) хранится адрес временного хранилища, в котором хранится объект типа «ДанныеРасшифровкиКомпоновкиДанных». У этого объекта есть свойство «Элементы», в котором в виде списка (коллекции) хранятся все параметры расшифровки. И наш параметр «Расшифровка» является индексом в этой коллекции. То есть получить собственно сам параметр расшифровки мы можем получить следующим образом:

Здесь используется функция общего модуля «ПолучитьМассивПолейРасшифровки», которая кроме текущего значения параметра расшифровки получается значения родительский полей и значения установленных отборов:

В итоге мы получаем массив элементов с типом «ЭлементОтбораКомпоновкиДанных» или «ЗначениеПоляРасшифровкиКомпоновкиДанных», эти значения мы уже можем передать в другой отчет или в обработку.

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

В этом нам может помочь объекта с типом «ОбработкаРасшифровкиКомпоновкиДанных». В обработчике «ОбработкаРасшифровки» мы можем написать такой код:

Здесь с помощью реквизита «ДанныеРасшифровки» и источника доступных настроек, полученного из компоновщика настроек нашего отчета мы получаем объект указанного типа. Далее мы вызываем метод объекта «ПоказатьВыборДействия», в который передаем нужные нам типовые действия и список наших действие в виде дополнительных пунктов.

В обработке выбранного действия мы производится собственно действия по расшифровке:

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

Можно эти настройки получать также с помощью таких методов объекта «ОбработкаРасшифровкиКомпоновкиДанных» как: Упорядочить, Расшифровать, Сгруппировать, Отфильтровать.

Расшифровка в табличном документе в 1С 8.3

Разберем ещё один вопрос, который часто возникает у начинающих программистов при разработке печатных форм с применением табличных документов. Иногда, возникают случаи, когда в табличном документе необходимо использовать расшифровку: сделать так, чтобы при двойном клике на ячейку печатной формы выходила какая-либо информация. В этой статье я расскажу о двух простых способах применения расшифровки в табличном документе. В первом случае, мы будем просто открывать основную форму элемента справочника при двойном клике мышкой по ячейке с названием этого справочника. Во втором случае, мы будем выводить строку с номером и датой документа при двойном клике по ячейке в шапке, где эта информация отображается.

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

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

Применение расшифровки с ссылочным типом

Реализуем следующую расшифровку: при двойном клике на ячейку со складом откроется основная форма элемента склада, который указан в ячейке.

Первым делом, доработаем наш макет следующим образом: в область шапки добавим новое поле, в котором будем выводить название склада.

У этой ячейки в свойстве Заполнение укажем значение Параметр, и также заполним свойства Параметр и ПараметрРасшифровки, где укажем значения Склад и СкладСсылка.

Заполнение параметров табличного документа

Параметр отвечает за то, что будет выведено в печатную форму. А ПараметрРасшифровки отвечает за то, что будет отработано при двойном клике на эту область.

Теперь доработаем вывод нашей печатной формы. Подробная информация, как я это сделал есть в этой статье:

Первым делом нам нужно сделать так, чтобы табличный документ открывался только на просмотр (иначе при двойном клике мы будем «проваливаться» в ячейку), поэтому установим соответствующему свойству значение Истина.

Следующим шагом доработаем запрос: будем выводить наименование склада (его запишем в простой параметр), и ссылку на склад для расшифровки.

Запрос готов, теперь осталось заполнить параметры и вывести их в табличную область.

На этом наша доработка вывода печатной формы закончилась.

Теперь, если мы выведем нашу печатную форму и кликнем на склад в шапке документа, то откроется форма склада.

Работа расшифровки на печатной форме

Применение расшифровки со строкой

Реализуем еще более простой способ расшифровки: при клике на ячейку, где отображается информация о документе с номером и датой, будем выводить дублирующую строку с более расширенной информацией.

Для этого перейдем в палитру свойств нужной ячейки и заполним свойство ПараметрРасшифровки.

Заполнили свойство ПараметрРасшифровки

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

Посмотрим, как будет отрабатывать расшифровка в этом случае.

Простой вариант работы расшифровки на печатной форме

В общем виде процедура заполнения табличного документа с применением обеих расшифровок будет иметь следующий вид:

Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

One Reply to “Расшифровка в табличном документе в 1С 8.3”

Уважаемый Ильяс, сделайте пожалуйста в телеграмме возможность задавать вопросы, очень нуждаюсь в вашей помощи. Заранее спасибо.

Расшифровка ячейки в печатной форме 1с

Иногда необходимо расшифровать значение в отчете 1с , например узнать детализацию значения по контрагентам. Для этого можно настроить расшифровку значения ячейки. Оно может принимать форму простого значения(текст, число), таблицы значений, структуры, либо нестандартную форму (вывод доп отчета, открытие какой- либо формы итп)

Рассмотрим пример с таблицей значений.

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

Условия для работы расшифровки

1.Выводимый табличный документ должен находится в форме ПолеТабличногоДокумента, а не отдельным окном

Похожие статьи