Есть отчет СКД:
Как определить в какой колонке и в какой строке пользователь нажал два раза. Мне в другой ответ нужно передать параметры отбора, а взять их из названия колонок "Груженый,Мечел" и т.п. и название груза из строки.
Вот мой код, но он не удовлетворяет моим потребностям:
СтандартнаяОбработка = Ложь;
ПериодБезНомернойУчетВагонов = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.Дата;
ПринадлежностьВагонаБезНомернойУчет = ДанныеРасшифровки.Элементы.Получить(Расшифровка - 4).ПолучитьПоля()[0].Значение;
СостояниеВагонаБезномернойУчет = ДанныеРасшифровки.Элементы.Получить(1).ПолучитьПоля()[0].Значение;
РодГрузаБезНомернойУчет = ДанныеРасшифровки.Элементы.Получить(37).ПолучитьПоля()[0].Значение;
ОтчетРасшифровка = Отчеты.КФЗНомернойУчетВагонов.Создать();
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период",ПериодБезНомернойУчетВагонов);
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].ПравоеЗначение = ПринадлежностьВагонаБезНомернойУчет;
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].Использование = Истина;
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].ПравоеЗначение = СостояниеВагонаБезномернойУчет;
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].Использование = Истина;
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[3].ПравоеЗначение = РодГрузаБезНомернойУчет;
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[3].Использование = Истина;
ФормаРасшифровки = ОтчетРасшифровка.ПолучитьФорму("ФормаОтчета");
ФормаРасшифровки.Открыть();
ФормаРасшифровки.СформироватьОтчет();
Практически рабочий код)) Но есть одно НО, не получается получить состояние вагона...((ПОМОГИТЕ
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПериодБезНомернойУчетВагонов = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.Дата;
ПринадлежностьВагонаБезНомернойУчет = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля()[1].Значение;
СостояниеВагонаБезномернойУчет = ДанныеРасшифровки.Элементы[1].ПолучитьПоля()[0].Значение; //Как получить состояние ????
РодГрузаБезНомернойУчет = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля()[0].Значение;
ОтчетРасшифровка = Отчеты.КФЗНомернойУчетВагонов.Создать();
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период",ПериодБезНомернойУчетВагонов);
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].ПравоеЗначение = ПринадлежностьВагонаБезНомернойУчет;
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].Использование = Истина;
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].ПравоеЗначение = СостояниеВагонаБезномернойУчет;
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].Использование = Истина;
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[3].ПравоеЗначение = РодГрузаБезНомернойУчет;
ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[3].Использование = Истина;
ФормаРасшифровки = ОтчетРасшифровка.ПолучитьФорму("ФормаОтчета");
ФормаРасшифровки.Открыть();
ФормаРасшифровки.СформироватьОтчет();
КонецПроцедуры
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
.....................................
Если ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля().Найти("СуммаВзаиморасчетовНачальныйОстаток") <> Неопределено Тогда
Попытка
коефПоля = 4;
ИмяПоля = ДанныеРасшифровки.Элементы.Получить(Расшифровка-коефПоля).ПолучитьПоля()[0].Поле;
Если ИмяПоля = "СрокДолгазаказа" Тогда
коефПоля = 5;
ИмяПоля = ДанныеРасшифровки.Элементы.Получить(Расшифровка-коефПоля).ПолучитьПоля()[0].Поле;
КонецЕсли;
Если ИмяПоля = "Поручитель" или ИмяПоля = "Контрагент" или ИмяПоля = "ДоговорКонтрагента" или ИмяПоля = "ЗаказПокупателя" Тогда
ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-коефПоля).ПолучитьПоля()[0].Значение;
иначе
Если ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Поле="Поручитель" Тогда
ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Значение;
ИначеЕсли ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Поле="ДоговорКонтрагента" Тогда
ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Значение;
ИначеЕсли ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Поле="ЗаказПокупателя" Тогда
ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Значение;
ИначеЕсли ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Поле="Контрагент" Тогда
ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Значение;
ИначеЕсли ДанныеРасшифровки.Элементы.Получить(Расшифровка-2).ПолучитьПоля()[0].Поле="Контрагент" Тогда
ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-2).ПолучитьПоля()[0].Значение;
КонецЕсли;
КонецЕсли;
.......
Если ТипЗнч(ЗначениеПервойКолонки) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
знчПоиска = ДанныеРасшифровки.Элементы.Получить(Расшифровка);
НайденныйПоручитель = ПолучитьРодителяУровня(знчПоиска,"Поручитель");
........
Функция ПолучитьРодителяУровня(Данные, ИмяПоля)
Родители = Данные.ПолучитьРодителей()[0];
Попытка
Если Родители.ПолучитьПоля().Найти(ИмяПоля)<> Неопределено Тогда
НайденноеПоле = Родители.ПолучитьПоля()[0].значение;
Иначе
НайденноеПоле= ПолучитьРодителяУровня(Родители, ИмяПоля);
КонецЕсли;
Исключение
НайденноеПоле= ПолучитьРодителяУровня(Родители, ИмяПоля);
КонецПопытки;
Возврат НайденноеПоле;
КонецФункции
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua