Необрабатываемый тип параметр расшифровки доп реквизиты

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

Я
   kavonline

09.02.11 — 16:45

При программном формировании отчета:

СхемаКомпоновкиДанных = Отчеты.АналитикаДвиженийНоменклатуры.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);

Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();

ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки);

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;

ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);

Результат = Элементы.Результат;

Результат.Очистить();

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

ПроцессорВывода.УстановитьДокумент(Результат);

выдает ошибку ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);

по причине:

Несоответствие типов (параметр номер ‘3’)

не пойму в чем мой косяк, помогите плз.

иначе расшифровка в отчете не работает

  

Партнерская программа EFSOL Oblako

   kavonline

1 — 09.02.11 — 17:36

Если перед ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки) вывести
ТипЗнч(ДанныеРасшифровки) то получим Строка. Помогите плз, в чем косяк может быть? Уже весь инет облазил.

   kavonline

2 — 10.02.11 — 13:22

У реквизита формы отчета ДанныеРасшифровки стоит тип Строка, видимо дело в этом. Подскажите плз какой должен быть тип?

   Megas

3 — 10.02.11 — 13:29

ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
Закоменть строчку

   kavonline

4 — 10.02.11 — 13:38

Ну если закоментить то тим Строка (это же реквизит формы) и ошибка ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки) т.к. ДанныеРасшифровки неправильный тип. Если например сделать
ДанныеРасшифровки1=Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки1);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки1);
то ошибки нет но при клике по ячейке отчета выскакивает окошко с цифрой, видимо какой то идентификатор.

   Megas

5 — 10.02.11 — 13:54

(4) У реквизита формы?
Удали его нафиг.. тыж создаёшь новый !

   Megas

6 — 10.02.11 — 13:54

(5) к (2)

   kavonline

7 — 10.02.11 — 14:11

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

   Megas

8 — 10.02.11 — 14:26

Это и есть расшифровка.

    Если Расшифровка <> Неопределено  тогда
       ИндексРасшифровки = Число(Расшифровка);
       ОбработкаРасшифорки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));

       ЭлементРасшифровкиДанных = ДанныеРасшифровки.Элементы[ИндексРасшифровки];
       ЭлементРасшифровкиДанныхПоля = ЭлементРасшифровкиДанных.ПолучитьПоля()[0];
       Если ЭлементРасшифровкиДанныхПоля.Поле = «Контрагент» тогда
           ОбработкаРасшифорки.ОткрытьЗначение(ЭлементРасшифровкиДанных.Идентификатор,Новый ПолеКомпоновкиДанных(ЭлементРасшифровкиДанныхПоля.Поле));
       КонецЕсли;
   иначеЕсли Область.Текст = «Контрагент» или  Область.Текст = «Город» или Область.Текст = «Тип цен» тогда
       Если  Область.Текст = «Контрагент» тогда
           ПолеПорядка = «Контрагент»;
       ИначеЕсли Область.Текст = «Город» тогда
           ПолеПорядка = «Город»;
       ИначеЕсли Область.Текст = «Тип цен» тогда
           ПолеПорядка = «ТипЦен»;
       КонецЕсли;
       ПолеПорядка = Новый ПолеКомпоновкиДанных(ПолеПорядка);

               КомпоновщикНастроек.Настройки.Порядок.Элементы.Очистить();

               ЭлементПорядка                     =  КомпоновщикНастроек.Настройки.Порядок.Элементы.Добавить(Тип(«ЭлементПорядкаКомпоновкиДанных»));
       ЭлементПорядка.Использование     = истина;
       ЭлементПорядка.Поле             = ПолеПорядка;
       ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;

                                                                                                   Сформировать();
   КонецЕсли;

    Как простенький пример, а так почитай в книжке Про СКД

   Megas

9 — 10.02.11 — 14:27

ИндексРасшифровки = Число(Расшифровка);
       ОбработкаРасшифорки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));

       ЭлементРасшифровкиДанных = ДанныеРасшифровки.Элементы[ИндексРасшифровки];
       ЭлементРасшифровкиДанныхПоля = ЭлементРасшифровкиДанных.ПолучитьПоля()[0];
       Если ЭлементРасшифровкиДанныхПоля.Поле = «Контрагент» тогда
           ОбработкаРасшифорки.ОткрытьЗначение(ЭлементРасшифровкиДанных.Идентификатор,Новый ПолеКомпоновкиДанных(ЭлементРасшифровкиДанныхПоля.Поле));
       КонецЕсли;

Ещё можно не ЭлементРасшифровкиДанных.ПолучитьПоля()[0];
а ЭлементРасшифровкиДанных.ПолучитьРодителя() //так вроде

В общем смотри в отладчике

   Megas

10 — 10.02.11 — 14:29

Пишется это в Событии «Выбор» или «ОбработкаРасшифровку» у Табличного дркумента

   Megas

11 — 10.02.11 — 14:33

в (8) я просто сморю куда кликнул , и если в шапку то сортировку делаю, а если по контрагенту то открываю справочник.

Это тупо и топорно, а так по клеточке используя
ЭлементРасшифровкиДанных.ПолучитьПоля() и Получая родителей можно получить любые данные ячейки (строка , колонка.)

   kavonline

12 — 10.02.11 — 14:36

Да, спс за пример, но ДанныеРасшифровки недоступно т.к. реквизит формы я грохнул, как теперь его предеть в процедуру РезультатОбработкаРасшифровки()

   Megas

13 — 10.02.11 — 14:44

(12) мм.. а попробуй ещё не писать

ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

или объяви его вне процедур

тоесть
перем ДанныеРасшифровки

..
всякие функции
и в конце

ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

   kavonline

14 — 10.02.11 — 14:52

Ну так не будет работать, а вот в ПриСозданииНаСервере() проходит. Я пытаюсь сделать так
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
РезультатОбработкаРасшифровкиНаСервере(Расшифровка);
КонецПроцедуры

&НаСервере
Процедура РезультатОбработкаРасшифровкиНаСервере(Расшифровка)
ТипЗнч(ДанныеРасшифровки) // выдает Неопределено
КонецПроцедуры    
Может надо через ВременноеХранилище перекидывать?

Кстати, все это реализуется в модуле формы

   Megas

15 — 10.02.11 — 14:55

Чёто то мутиш =)
Кстати я 8.2 не знаю…

   kavonline

16 — 10.02.11 — 15:00

да уж, приколол :)

  

kavonline

17 — 10.02.11 — 16:48

Я домучал вопрос, если кому интересно то описываю свое решение:
1. Реализуется все в модуле формы отчета
2. Реквизит формы ДанныеРасшифровки (Строка) переименовал в АдресДанныхРасшифровки.
3. Процедура СформироватьОтчетНаСервере()
СхемаКомпоновкиДанных = Отчеты.АналитикаДвиженийНоменклатуры.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
АдресДанныхРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, УникальныйИдентификатор);
Результат = Элементы.Результат;
Результат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
4. Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(ПолучитьАдресСКД());
ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(АдресДанныхРасшифровки,ИсточникДоступныхНастроек);
Результ = Неопределено;
Параметр = Неопределено;
ДоступныеДействия = Новый Массив;
ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
ОбработкаРасшифровки.ВыбратьДействие(Расшифровка,Результ,Параметр,ДоступныеДействия);
ОткрытьЗначение(Параметр);
5. Функция ПолучитьАдресСКД() (на сервере)
СхемаКомпДанных = Отчеты.АналитикаДвиженийНоменклатуры.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
АдресСКД = ПоместитьВоВременноеХранилище(СхемаКомпДанных);
Возврат АдресСКД;
Если кто то порекомендует лучший вариант буду благодарен

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

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

Contents

  • 1 Стандартные возможности расшифровки 1С СКД
  • 2 Расшифровка при программном выполнении 1С СКД
  • 3 Макеты и расшифровка 1С СКД
  • 4 Произвольная обработка расшифровки 1С СКД
  • 5 Материалы для изучения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере

Функция ПолучитьНастройкиРасшифровки(ИдентификаторРасшифровки)

    // В тонком клиенте ДанныеРасшифровки это адрес временного хранилища

    ДанныеРасшифровкиОбъект = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);

    МассивПолей = СКД.ПолучитьМассивПолейРасшифровки(ИдентификаторРасшифровки, ДанныеРасшифровкиОбъект, Ложь);

    Возврат МассивПолей;

КонецФункции// УстановитьНастройки()

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

#Область Расшифровка

// Возвращает доступное поле по полю компоновки

Функция ПолучитьДоступноеПолеПоПолюКомпоновкиДанных(ПолеКомпоновкиДанных, ОбластьПоиска) Экспорт

    Если ТипЗнч(ПолеКомпоновкиДанных) = Тип("Строка") Тогда

        ПолеПоиска = Новый ПолеКомпоновкиДанных(ПолеКомпоновкиДанных);

    Иначе

        ПолеПоиска = ПолеКомпоновкиДанных;

    КонецЕсли;

    Если ТипЗнч(ОбластьПоиска) = Тип("КомпоновщикНастроекКомпоновкиДанных")

        ИЛИ ТипЗнч(ОбластьПоиска) = Тип("ДанныеРасшифровкиКомпоновкиДанных")

        ИЛИ ТипЗнч(ОбластьПоиска) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда

        Возврат ОбластьПоиска.Настройки.ДоступныеПоляВыбора.НайтиПоле(ПолеПоиска);

    Иначе

        Возврат ОбластьПоиска.НайтиПоле(ПолеПоиска);

    КонецЕсли;

КонецФункции

Функция ДобавитьРодителей(ЭлементРасшифровки, ТекущийОтчет, МассивПолейРасшифровки, ВключатьРесурсы = Ложь) Экспорт

    Если ТипЗнч(ЭлементРасшифровки) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда

        Для каждого Поле Из ЭлементРасшифровки.ПолучитьПоля() Цикл

            ДоступноеПоле = ПолучитьДоступноеПолеПоПолюКомпоновкиДанных(Новый ПолеКомпоновкиДанных(Поле.Поле), ТекущийОтчет);

            Если ДоступноеПоле = Неопределено Тогда

                Продолжить;

            КонецЕсли;

            Если Не ВключатьРесурсы И ДоступноеПоле.Ресурс Тогда

                Продолжить;

            КонецЕсли;

            МассивПолейРасшифровки.Добавить(Поле);

        КонецЦикла;

    КонецЕсли;

    Для каждого Родитель Из ЭлементРасшифровки.ПолучитьРодителей() Цикл

        ДобавитьРодителей(Родитель, ТекущийОтчет, МассивПолейРасшифровки, ВключатьРесурсы);

    КонецЦикла;

КонецФункции

// Возвращает массив, по которому следует расшифровать отчет

Функция ПолучитьМассивПолейРасшифровки(Расшифровка, ДанныеРасшифровки, ВключатьРесурсы = Ложь) Экспорт

    МассивПолейРасшифровки = Новый Массив;

    Если ТипЗнч(Расшифровка) <> Тип("ИдентификаторРасшифровкиКомпоновкиДанных")

        И ТипЗнч(Расшифровка) <> Тип("ДанныеРасшифровкиКомпоновкиДанных") Тогда

        Возврат МассивПолейРасшифровки;

    КонецЕсли;

    // Добавим поля родительских группировок

    ДобавитьРодителей(ДанныеРасшифровки.Элементы[Расшифровка], ДанныеРасшифровки, МассивПолейРасшифровки, ВключатьРесурсы);

    Количество = МассивПолейРасшифровки.Количество();

    Для Индекс = 1 По Количество Цикл

        ОбратныйИндекс = Количество - Индекс;

        Для ИндексВнутри = 0 По ОбратныйИндекс - 1 Цикл

            Если МассивПолейРасшифровки[ОбратныйИндекс].Поле = МассивПолейРасшифровки[ИндексВнутри].Поле Тогда

                МассивПолейРасшифровки.Удалить(ОбратныйИндекс);

                Прервать;

            КонецЕсли;

        КонецЦикла;

    КонецЦикла;

    // Добавим отбор, установленный в отчете

    Для каждого ЭлементОтбора Из ДанныеРасшифровки.Настройки.Отбор.Элементы Цикл

        Если Не ЭлементОтбора.Использование Тогда

            Продолжить;

        КонецЕсли;

        МассивПолейРасшифровки.Добавить(ЭлементОтбора);

    КонецЦикла;

    Возврат МассивПолейРасшифровки;

КонецФункции

#КонецОбласти

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

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

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

&НаКлиенте

Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Отчет.КомпоновщикНастроек.ПолучитьИсточникДоступныхНастроек());

    ДоступныеДействия = Новый Массив;

    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Отфильтровать);

    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить);

    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);

    ДополнительныеПункты = Новый СписокЗначений;

    ДополнительныеПункты.Добавить("Наше действие");

    ОбработкаРасшифровки.ПоказатьВыборДействия(Новый ОписаниеОповещения("ОбработкаВыбораРасшифровки", ЭтаФорма, Расшифровка)

    , Расшифровка

    , ДоступныеДействия

    , ДополнительныеПункты

    ,

    , Элемент);

КонецПроцедуры

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

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

&НаКлиенте

Процедура ОбработкаВыбораРасшифровки(ВыполненноеДействие, ПараметрДействия, ИдентификаторРасшифровки) Экспорт

    Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда

        ПоказатьЗначение(,ПараметрДействия);

    ИначеЕсли ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Отфильтровать

        ИЛИ ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить    Тогда

        ПараметрыФормы = Новый Структура;

        ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);

        Расшифровка = Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, ИдентификаторРасшифровки,ПараметрДействия);

        ПараметрыФормы.Вставить("Расшифровка", Расшифровка);

        ОткрытьФорму("Здесь форма вашего (текущего) отчета", ПараметрыФормы, , Новый УникальныйИдентификатор);

    ИначеЕсли ВыполненноеДействие = "Наше действие" Тогда

        // здесь мы можем открыть другой отчет, выполнить какую-то обработку

    КонецЕсли;

КонецПроцедуры // ОбработкаВыбораРасшифровки()

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

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

Материалы для изучения

Работа с расшифровкой в управляемом приложении

Расшифровка одного отчета другим

Продвинутый курс по СКД

Расшифровка отчета с применением БСП

СКД и расшифровка на мобильной платформе

Не работает расшифровка в макете 1С

Расшифровка  в концепции 1С — это событие возникающее в момент клика по ячейке табличного поля (элемента формы с табличным документом) в 1С. 

Для чего это используется

  • для развертывания значения по составляющим или по документам, сформировавшим данное значение
  • для открытия объекта: справочника или документа
  • для старта других действий

Причин отсутствия реакции на событие расшифровки может быть несколько:

  • табличный документ находится в режиме редактирования
  • отсутствует значение расшифровки

  • отсутствует обработка события расшифровки и отключена стандартная обработка

А теперь подробнее по каждому из выделенных вариантов.

Только просмотр табличного документа

Как выглядит ячейка, где, есть значение расшифровки?

  • в режиме предприятия при наведении на ячейку меняется курсор — появляется «лупа»
  • в конфигураторе должно быть заполнено свойство «ПараметрРасшифровки»rasshifrovka

Если обработчик не задан система используется свои обработчики.

  • Примитивные типы просто отображает.
  • Сложные — сообщает их тип.
  • СКД  вызывает выбор обработчика sobytie-rasshifrovki-v-otchete

Обработчик события с отключенной стандартной обработкой

&НаКлиенте
Процедура ТабПолеОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры

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

В новых редакциях программ 1С была существенно усовершенствована подсистема дополнительных реквизитов Дополнительные реквизиты и сведения. Эта подсистема дает возможность пользователю самим добавлять реквизиты и сведения к объектам программы не прибегая к помощи программиста.

Содержание

  • Дополнительные реквизиты и сведения в 1С
  • Настройка подсистемы Дополнительные реквизиты и дополнительные сведения на примере 1С 8.3 Бухгалтерия 3.0
    • Добавление дополнительных реквизитов
    • Добавление дополнительных сведений к форме

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

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

Настройка подсистемы Дополнительные реквизиты и дополнительные сведения на примере 1С 8.3 Бухгалтерия 3.0

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

Добавление дополнительных реквизитов

Для добавления и настройки дополнительных реквизитов в 1С 8.3 перейдем по ссылке Дополнительные реквизиты. В окне перечислены объекты, к которым можем добавить реквизиты.

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

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

На вкладке Значения можем перечислить значения нашего реквизита, при этом значения можно объединять в группы. Например, Значение доп. реквизита 1, значение доп. реквизита 2, значение доп. реквизита 3.

Нажимаем Записать и закрыть и также сохраняем наш созданный реквизит.

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

Сохраняем реквизит, нажав кнопку Записать и закрыть.

Введем для примера еще один реквизит с Типом значения Строка (назовем его для примера Доп. реквизит — 3 (текст)).

Все настройки интуитивно понятны.

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

Итак, мы создали три дополнительных реквизита к справочнику Номенклатура.

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

Мы видим, три наших добавленных реквизита. В первом реквизите — поле с кнопкой выбора значений, во втором — возможность установить галочку, в третьем — обычное текстовое поле и наши всплывающие подсказки, которые прописали в настройках.

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

Добавление дополнительных сведений к форме

Рассмотрим пример добавления дополнительных сведений в 1С 8.3. Для этого перейдем по ссылке Дополнительные сведения, в разделе Администрирование — Общие настройки — Дополнительные реквизиты и сведения. Выберем элемент для добавления сведений и нажимаем кнопку Создать — Новое.

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

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

Для примера создадим одно дополнительное сведение для справочника Сотрудники, где выбор будет производится из справочника Физические лица, для указания лица, которому подчиняется данный сотрудник (назовем его просто Дополнительные сведения).

Откроем справочник Сотрудники и проверим добавление сведений. Эта информация скрыта из формы элемента и открывается нажатием кнопки Еще — Дополнительные сведения.

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

Аналогично можно добавить Дополнительные сведения и к документам. Окно ввода дополнительных сведений также будет доступно в кнопке Еще — Дополнительные сведения документа.

Данная команда доступна как из самого документа, так и из журнала документов.

См. также:

  • Печать ценников в 1С
  • Очистка кэш 1С 8.3
  • Журнал регистрации в 1С 8.3
  • Как сделать копию базы 1С 8.3
  • Загрузка из Excel в 1С 8.3
  • Как выгрузить документ, отчет из 1С 8.3 в Excel

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

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

Для чего используется расшифровка и как ей пользоваться

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

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

Заполнение расшифровки

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

1. Непосредственно присвоив данному свойству значение.

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

Пример:

В данном примере расшифровка устанавливается первой ячейке первой строки поля табличного документа.

2. Использовать параметр расшифровки и метод «Вывести».

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

Пример:

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

Отметим, что с параметром расшифровки работа ведется также как и с обычными параметрами, размещенными в ячейках макета.

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

Пример того, как это можно сделать, воспользовавшись объектом Структура:

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

Обратите внимание на свойство «ИспользованиеРасшифровки» ячейки табличного документа. Это свойство указывает, для какой области будет возможно вызвать расшифровку. Если данное свойство имеет значение «Ячейка», обработка расшифровки будет выполняться только для этой ячейки. Если «Строка», то расшифровка будет обрабатываться для всей строки, в которой расположена данная ячейка. Если же данное свойство имеет значение «Без обработки», то расшифровка для данной ячейке не будет обрабатываться вовсе, даже если ячейка будет содержать значение расшифровки.

Обработка расшифровки

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

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

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

Пример:

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

Источник

Использование параметра расшифровки в макете

Доброго времени суток!

По двойному щелчку на ячейке с расшифровкой можно вызвать свою процедуру. Для реализации этого следует выполнить несколько условий:
1)Вывод табличного документа должен осуществляться в объект ПолеТабличногоДокумента;
2)Должно быть присвоено значение свойству ячейки ПараметрРасшифровки, например, РасшифровкаКонтрагента.
3)Параметру расшифровки РасшифровкаКонтрагента присваивается заполненный при формировании табличного документа нужными значениями СписокЗначений или чаще Структура. В частности, может передаваться имя стандартного отчета конфигурации и параметров, которые нужно задать в форме отчета, например, период дат, номер счета и т.д. А потом этот отчет вызывается как процедура.
4)Для объекта ПолеТабличногоДокумента свойство ТолькоПросмотр нужно установить в значение Истина.
5)Код пользовательской процедуры помещается в процедуру
ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка), и первой строкой в ней должна быть такая:
СтандартнаяОбработка = Ложь;

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

Процедура КнопкаСформироватьНажатие(Кнопка)
Контрагенты = Справочники.Контрагенты;
Выборка = Контрагенты.Выбрать();
Таб = ЭлементыФормы.ПолеТабличногоДокумента1;
Макет = ПолучитьМакет(«Макет»);
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа = Ложь Тогда
Область = Макет.ПолучитьОбласть(«Строка»);
Область.Параметры.Контрагент = Выборка.Наименование;
.
СтруктураРасшифровки = Новый Структура;
СтруктураРасшифровки.Вставить(«Контрагент»,Выборка.Ссылка);
СтруктураРасшифровки.Вставить(«. «. );
.
Область.Параметры.РасшифровкаКонтрагента = СтруктураРасшифровки;
ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(Область);
Иначе
Продолжить;
КонецЕсли;
КонецЦикла;
ЭлементыФормы.ПолеТабличногоДокумента1.ТолькоПросмотр = Истина;
КонецПроцедуры

Процедура ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Договоры = Справочники.Договоры.ПолучитьФормуСписка();
Договоры.ПараметрОтборПоВладельцу = Расшифровка.Контрагент;
Договоры.Открыть();
КонецПроцедуры

Источник

Программирование в 1С для всех

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

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

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

Источник

Добавление расшифровки в стандартные и добавленные внешние отчеты со стандартной формой отчета на СКД

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

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

Ниже предоставлен код который можно добавить в расширение либо в сам общий модуль «ОтчетыКлиентПереопределяемый», Он снабжен комментариями поэтому понять сто к чему можно будет из кода.

Все тестировалось на 1С ERP 2.2.4

Специальные предложения

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

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

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

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

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

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

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

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

(3)Ну собственно там, идет обработка того что в коде приведено, они ищет в отчете поля, сравнивает с тем что прописали вы, в случае удачного сосоставления он добавляет пункт меню в расшифровку стандартную и обраьотчик

Обновление 27.09.18 18:20

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

См. также

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016 84516 Serginio 113

Взаимодействие с api Честный знак (Молочная продукция)

Обзор основных примеров взаимодействия с Честным знаком по api для нетиповых конфигураций.

30.08.2021 1006 user5300 32

Изменение расшифровки макета СКД до компоновки

Это не про работу с данными расшифровки. Это про изменение расшифровок полей ДО того, как СКД выполнилась. Быстрый способ сделать нужные расшифровки.

12.07.2021 2231 Yashazz 6

В данной публикации предлагаю рассмотреть основные типовые возможности библиотеки стандартных подсистем (БСП), касаемые префиксации объектов конфигураций.

21.06.2021 4103 quazare 4

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

28.12.2020 8276 comol 31

Чтение CSV (быстрое)

Почему то из гугла до сих пор нет ссылки на код процедуры быстро читающей csv. Загрузка из файла CSV c помощью ADODB.Connection провайдера Microsoft.Jet.OLEDB.

31.03.2021 1434 kuzyara 4

Последний раз про срез последних (на каждую дату в запросе)

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

15.02.2021 9631 randomus 47

Ускоряем медленный/долгий и тормозной стандартный поиск по динамическому списку, настраиваем его под себя

14.12.2020 19984 SizovE 2

Универсальные функции с примерами использования Промо

26.02.2016 42995 unichkin 47

11.12.2020 975 SizovE 6

Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)

30.11.2020 5569 SizovE 4

Выгрузка HTML описаний с картинками (Base64) товаров на сайт/интернет-магазин/B2B, разберем регулярное выражение получения тега body, ПолучитьHTML, ФорматированныйДокумент

Источник

Расшифровки при программном формировании отчета на СКД

Сабж. Надо программно сформировать отчет на СКД.

Ок, лезем на любой ресурс, коих полно, копируем код, правим под свои нужды и вуаля! Отчет работает, только при попытке расшифровать выскакивает какое то окошко с цифрами 🙁 Что делать?

Решение

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

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

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

Скачать файлы

Специальные предложения

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

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

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

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

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

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

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

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

На УФ надо положить «Данные расшифровки» во временное хранилище. Далее:

Если ТипЗнч(Структура.Расшифровка) = Тип(«ИдентификаторРасшифровкиКомпоновкиДанных») тогда
ЭлементРасшифровки = Данные.Элементы[Структура.Расшифровка];
Если ТипЗнч(ЭлементРасшифровки) = Тип(«ЭлементРасшифровкиКомпоновкиДанныхПоля») Тогда
Для каждого Поле Из ЭлементРасшифровки.ПолучитьПоля() Цикл
Возврат Поле.Значение;
КонецЦикла;
КонецЕсли;
КонецЕсли;

На форму добавить реквизит «ДанныеРасшифровки» с типом «Строка»

&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)

&НаСервере
Процедура КонтрагентПриИзмененииНаСервере()

Если Контрагент.Ссылка.Пустая() Тогда
Возврат;
КонецЕсли;

// Создаем СКД. Устанавливаем параметры
СхемаКД = РеквизитФормыВЗначение(«Объект»).ПолучитьМакет(«Макет»);

ПараметрКД = Настройки.ПараметрыДанных.Элементы.Найти(«Контрагент»);
ПараметрКД.Значение = Контрагент;

// Создаем Макет КД
КомпоновщикМакетаКД = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровкиКомпоновкиДанных = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКД = КомпоновщикМакетаКД.Выполнить(СхемаКД, Настройки, ДанныеРасшифровкиКомпоновкиДанных);

// Создаем Процесор КД
ПроцессорКД = Новый ПроцессорКомпоновкиДанных;
ПроцессорКД.Инициализировать(МакетКД,, ДанныеРасшифровкиКомпоновкиДанных);

// Выводим
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабДок);
ПроцессорВывода.НачатьВывод();
ПроцессорВывода.Вывести(ПроцессорКД);
ДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиКомпоновкиДанных);

&НаКлиенте
Процедура ТабДокОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
Данные = Сервер(Расшифровка);
ОткрытьЗначение(Данные);

&НаСервере
Функция Сервер(Расшифровка)

Если ТипЗнч(Расшифровка) = Тип(«ИдентификаторРасшифровкиКомпоновкиДанных») тогда
ЭлементРасшифровки = Данные.Элементы[Расшифровка];
Если ТипЗнч(ЭлементРасшифровки) = Тип(«ЭлементРасшифровкиКомпоновкиДанныхПоля») Тогда
Для каждого Поле Из ЭлементРасшифровки.ПолучитьПоля() Цикл
Возврат Поле.Значение;
КонецЦикла;
КонецЕсли;
КонецЕсли;

Источник

Методические рекомендации

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

Для чего используется расшифровка и как ей пользоваться

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

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

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

Заполнение расшифровки

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

1. Непосредственно присвоив данному свойству значение.

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

Пример:

ЭлементыФормы.ПолеТабличногоДокумента1.Область(1,1).Расшифровка = "Текст расшифровки";

В данном примере расшифровка устанавливается первой ячейке первой строки поля табличного документа.

2. Использовать параметр расшифровки и метод “Вывести”.

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

Пример:

Отчет выводится при помощи макета. В некоторой ячейке области “Запись” табличного документа содержится параметр расшифровки “Номенклатура”. Результатом выполнения следующего кода будет помещение в данную ячейку значения переменной Номенклатура.

Макет = ПолучитьМакет("Макет");
ОбластьЗапись = Макет.ПолучитьОбласть("Запись");
ОбластьЗапись.Параметры.Номенклатура = Номенклатура;
ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьЗапись);

Отметим, что с параметром расшифровки работа ведется также как и с обычными параметрами, размещенными в ячейках макета.

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

Пример того, как это можно сделать, воспользовавшись объектом Структура:

Макет = ПолучитьМакет("Макет");
ОбластьЗапись = Макет.ПолучитьОбласть("Запись");

Структура = Новый Структура;

Структура.Вставить("Номенклатура", Номенклатура);

Структура.Вставить("Контрагент", Контрагент);
ОбластьЗапись.Параметры.Расшифровка = Структура;
ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьЗапись);

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

Обратите внимание на свойство “ИспользованиеРасшифровки” ячейки табличного документа. Это свойство указывает, для какой области будет возможно вызвать расшифровку. Если данное свойство имеет значение “Ячейка”, обработка расшифровки будет выполняться только для этой ячейки. Если “Строка”, то расшифровка будет обрабатываться для всей строки, в которой расположена данная ячейка. Если же данное свойство имеет значение “Без обработки”, то расшифровка для данной ячейке не будет обрабатываться вовсе, даже если ячейка будет содержать значение расшифровки.

Обработка расшифровки

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

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

Если табличный документ отображается в поле табличного документа, возможно переопределение поведения расшифровки. Для этого нужно создать обработчик события ОбработкаРасшифровки поля табличного документа. Это событие будет вызываться при каждой попытке пользователя вызвать расшифровку. В обработчик события будет передано поле табличного документа, для которого вызвана расшифровка, значение расшифровки и флаг стандартной обработки расшифровки. Если стандартная обработка расшифровки не нужна, следует присвоить флагу СтандартнаяОбработка значение “Ложь”.

Пример:

Процедура ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
КонецПроцедуры

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

См также:

  • Обработка Расшифровки
  • Работа с расшифровкой в управляемом приложении

Понравилась статья? Поделить с друзьями:
  • Наказание в виде обязательных работ сроком на 160 часов
  • Несколько наименований реквизита наименование документа
  • Нет расчетного счета в реквизитах банка только кор счет
  • Нижегородская областная коммунальная компания реквизиты
  • Нижегородская ярмарка музей истории россии время работы