Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
.....................................
Если ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля().Найти("СуммаВзаиморасчетовНачальныйОстаток") <> Неопределено Тогда
Попытка
коефПоля = 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].значение;
Иначе
НайденноеПоле= ПолучитьРодителяУровня(Родители, ИмяПоля);
КонецЕсли;
Исключение
НайденноеПоле= ПолучитьРодителяУровня(Родители, ИмяПоля);
КонецПопытки;
Возврат НайденноеПоле;
КонецФункции
Сообщение отредактировал Kutuzov - 03.11.14, 11:41
Вы станете богаче, лишь став умнее...
Чем дальше в лес, тем толще партизаны.
Нельзя недооценивать, не предсказуемость тупизны...