Здравствуйте, есть вот такой отчёт (скриншот 1). Нужно при двойном клике по ячейке "количество" сделать расшифровку другим отчётом, в котором будут колонки: "Номенклатура", "Количество" и т.д.
Меня больше всего интересует то, как можно в обработчике события "ОбработкаРасшифровки" при клике на ячейку количество, получить значения текущей строки отчёта? Ну то есть получить значение не только ячейки по которой кликнул пользователь, но ещё и значение "номенклатура", "количество" в текущей строке отчёта.
Меня больше всего интересует то, как можно в обработчике события "ОбработкаРасшифровки" при клике на ячейку количество, получить значения текущей строки отчёта? Ну то есть получить значение не только ячейки по которой кликнул пользователь, но ещё и значение "номенклатура", "количество" в текущей строке отчёта.
Прикрепленные файлы:

По теме из базы знаний
- Расшифровка отчета Расчет страховых взносов (с 2017г.) для ЗУП, УПП, ЗиКБУ: Раздел 1, Раздел 2, Раздел 3 (с навигацией по ФИО).
- Работа с расшифровкой отчета на СКД
- Расшифровка отчета на СКД с детализацией по выбранному полю на основе БСП
- Еще один способ нестандартной расшифровки отчета. Без использования обработчиков формы. Для ленивых
- Расшифровка отчета. Код, который я использую
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Меня больше всего интересует то, как можно в обработчике события "ОбработкаРасшифровки" при клике на ячейку количество, получить значения текущей строки отчёта?
Я делал так:
На закладке Макеты добавляем макет поля, по которому будет производиться расшифровка (их может быть несколько).
Допустим, поле называется Сумма.
Свойства ячейки: Заполнение = Параметр, Параметр = Сумма, ПараметрРасшифровки = Расшифровка
Параметры макета (2 строки):
Сумма: Сумма
Расшифровка: тут перечисляешь поля, которые необходимо получать при расшифровке: они будут доступны наравне со значением ячейки, по которому производится расшифровка.
Недавно делал отчет с расшифровкой через другой. Пришлось скопировать в него типовую форму отчета, чтобы доработать.
Вот некоторая модифицированная выжимка. Там, понятное дело, кода побольше.
&НаКлиенте
Процедура ОтчетТабличныйДокументОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтруктураРасшифровки = ПолучитьРасшифровкуНаСервере(Расшифровка);
Если СтруктураРасшифровки.Свойство("ИмяПоля") Тогда
СписокЗначений = Новый СписокЗначений();
СписокЗначений.Добавить("Регистратор");
НашаОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ЭтотОбъект.ОтчетДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(ЭтотОбъект.НастройкиОтчета.АдресСхемы));
НашаОбработкаРасшифровки.ПоказатьВыборДействия(Новый ОписаниеОповещения("ОбработатьРасшифровку", ЭтотОбъект, СтруктураРасшифровки), Расшифровка, , СписокЗначений);
СтандартнаяОбработка = Ложь;
Возврат;
КонецЕсли;
//Какой-то типовой код
КонецПроцедуры
&НаСервере
Функция ПолучитьРасшифровкуНаСервере(Расшифровка)
СтруктураРасшифровки = Новый Структура();
ДанныеРасшифровкиКомпоновкиДанных = ПолучитьИзВременногоХранилища(ЭтотОбъект.ОтчетДанныеРасшифровки);
ЭлементыРасшифровкиКомпоновкиДанных = ДанныеРасшифровкиКомпоновкиДанных.Элементы;
Элемент = ЭлементыРасшифровкиКомпоновкиДанных.Получить(Расшифровка);
Если ТипЗнч(Элемент) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
ЗначенияПолейРасшифровкиКомпоновкиДанных = Элемент.ПолучитьПоля();
Для Каждого Элем Из ЗначенияПолейРасшифровкиКомпоновкиДанных Цикл
СтруктураРасшифровки.Вставить(Элем.Поле, Элем.Значение);
КонецЦикла;
КонецЕсли;
Возврат СтруктураРасшифровки;
КонецФункции
&НаКлиенте
Процедура ОбработатьРасшифровку(ВыбранноеДействие, ПараметрВыбранногоДействия, ДополнительныеПараметры) Экспорт
Если ВыбранноеДействие = "Регистратор" Тогда
ОткрытьФормуРасшифровки(ДополнительныеПараметры);
ИначеЕсли ВыбранноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
ПоказатьЗначение(, ПараметрВыбранногоДействия);
КонецЕсли;
КонецПроцедуры
Показать
Значит, у тебя группировка такая, что в ней нет поля Номенклатура
Тут ещё от структуры зависит.
Можешь вообще не юзать макеты поля (но с ними удобней), вот дописал по-быстрому вышеупомянутую процедуру получения значений полей. Тема так-то эта широко провентилирована на ресурсе.
Тут главное матан понять, отладить вызов функции в стеке на какой-нибудь многоуровневой структуре отчета.
P.S. Если вернуться к макету поля, зачем у тебя написано КоличествоРасшифровка в табличном документе. Пусть называется так же.
Тут ещё от структуры зависит.
Можешь вообще не юзать макеты поля (но с ними удобней), вот дописал по-быстрому вышеупомянутую процедуру получения значений полей. Тема так-то эта широко провентилирована на ресурсе.
Тут главное матан понять, отладить вызов функции в стеке на какой-нибудь многоуровневой структуре отчета.
&НаСервере
Функция ПолучитьРасшифровкуНаСервере(Расшифровка)
СтруктРасшифровки = Новый Структура();
ДанныеРасшифровкиКомпоновкиДанных = ПолучитьИзВременногоХранилища(ЭтотОбъект.ДанныеРасшифровки);
ЭлементыРасшифровкиКомпоновкиДанных = ДанныеРасшифровкиКомпоновкиДанных.Элементы;
Элемент = ЭлементыРасшифровкиКомпоновкиДанных.Получить(Расшифровка);
Если ТипЗнч(Элемент) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
ЗначенияПолейРасшифровкиКомпоновкиДанных = Элемент.ПолучитьПоля();
Для Каждого Элем Из ЗначенияПолейРасшифровкиКомпоновкиДанных Цикл
СтруктРасшифровки.Вставить(Элем.Поле, Элем.Значение);
КонецЦикла;
Массив = Элемент.ПолучитьРодителей();
Если Массив <> Неопределено Тогда
Для Каждого ЭлементРасшифровкиКомпоновкиДанныхПоля Из Элемент.ПолучитьРодителей() Цикл
ТекСтруктура = ПолучитьРасшифровкуНаСервере(ЭлементРасшифровкиКомпоновкиДанныхПоля.Идентификатор);
Для Каждого КиЗ Из ТекСтруктура Цикл
Если Не СтруктРасшифровки.Свойство(КиЗ.Ключ) Тогда
СтруктРасшифровки.Вставить(КиЗ.Ключ, КиЗ.Значение);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат СтруктРасшифровки;
КонецФункции
ПоказатьP.S. Если вернуться к макету поля, зачем у тебя написано КоличествоРасшифровка в табличном документе. Пусть называется так же.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот