1с скд расшифровка

Сегодня ковырялся с одним отчетом на ‘скд’ (система компоновки данных), где нужно было программно по алгоритму заказчика обработать расшифровку одного ресурса, так как типовая расшифровка его не устраивала. Так вот, потратив немного времени, я открыл для себя новые возможности по работе с расшифровкой в ‘скд’ программно. Ну конечно решил добавить себе это в заметку! Ссылка на обработку в конце статьи – палец вверх там же!

Итак, у меня есть отчет на ‘скд’ (запрос написан в самом макете!), в котором данные выводится в виде таблицы. Это иерархия договоров, с суммами документов за период (месяц):

Данные отчета на скд.
Данные отчета на скд.
Структура отчета на скд.
Структура отчета на скд.

Теперь самое важное: что бы мы могли обрабатывать расшифровку ‘скд’ у нас должны быть добавлена форма отчета с использованием системы компоновки данных (в случае если еще нет формы отчета):

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

В этом случае у нас будет полностью подготовленная форма со всеми данными: в данном случае нас интересуют реквизиты ‘ДанныеРасшифровки’ и ‘Результат’:

Реквизиты: 'ДанныеРасшифровки' и  'Результат'.
Реквизиты: ‘ДанныеРасшифровки’ и ‘Результат’.

Важно: Если систему компоновки данных мы формируем программным способом, то обязательно нужно определить ‘ДанныеРасшифровкиКомпоновкиДанных‘ и передать их в компоновщик макета:

Супер! Теперь у нас все есть, что бы полностью читать расшифровка отчета на ‘скд’. Задача: Убрать стандартную расшифровку ресурса ‘Сумма’ и получить все возможные связанные с ней значения: контрагента, договор и период и т.д.

Создаем событие ‘ОбработкаРасшифровки’ у нашего табличного поля ‘Результат’:

Событие 'ОбработкаРасшифровки'.
Событие ‘ОбработкаРасшифровки’.

Прежде чем писать процедуру ‘ПолучитьРасшифровкуНаСервере‘ отметим несколько моментов:

  • Параметр ‘Расшифровка’ – это у нас число;
  • Сама расшифровка хранится у нас во временном хранилище по адресу, которое хранится в реквизите формы ‘ДанныеРасшифровки’.

Зная это, мы легко сможем понять какое поле мы обрабатываем по данным параметрам расшифровки. В нашем случае нам интересно только нажатие по ресурсу ‘сумма(но обратите внимание, что значение ресурса ‘сумма’ в отладке у нас будет NULL) и все связанные с ним значения по всем группировкам:

С помощью метода ‘ПолучитьРодителей()’ – мы можем получить массив расшифровок как по горизонтали, так и по вертикале (группировки, колонки). В итоге имеем структуру со всеми необходимыми данными (ну почти!):

Расшифровка ресурса пустая!
Расшифровка ресурса пустая!

То есть получается, что мы смогли определить все связанные значения расшифровки для ячейки ‘сумма’, но само значение ресурса у нас пустое! Хотя оно мне так же было нужно!

И спустя некоторое время я все-таки откопал почему же оно не доступно! А все просто! Необходимо задать макет поля для нашего ресурса ‘Сумма’ и указать в нем параметр расшифровки:

Макет поля ‘Сумма’.

О том как это можно сделать, есть статья: ‘Макет СКД расшифровка’.

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

Программная расшифровка скд.
Программная расшифровка скд.

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

А да, кстати, не забывайте что если вы в дальнейшем хотите расшифровывать свои значения, после обработки расшифровки, то ставьте параметр ‘СтандартнаяОбработка’ = Ложь:

Надеюсь всем все было понятно – уж мне то точно. Я не говорю что процедура получения расшифровки данных идеальная. Скорее всего её можно дорабатывать и улучшать! Но она рабочая и имеет право на жизнь!

Ребят, нашел еще один вариант получения данных расшифровки – более универсальный (он так же есть в обработке). Внимание! Значение своего ресурса обрабатывайте отдельно, так в нижеуказанной процедуре в итоге он может сброситься в NULL:

Как обычно, обработка с готовым решением для вас и для меня! Всем удачи!

Скачать файлы craft1c_RasshifrovkaSKD.erf

9+

2 комментария

  1. Admin (Автор записи)

    Внимание, добавил еще один вариант получения данных расшифровки!

    1+
  2. Admin (Автор записи)

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

    1+

Оставить комментарий

Ваш адрес email не будет опубликован.