Имя: Пароль:
1C
1С v8
помогите найти Номенклатуру в Расшифровке СКД
,
0 vde69
 
модератор
30.12.13
12:55
есть отчет, выводи правильно, групировка склад, в ней номенклатура с видом остатков. макета нет...

// -----------------------------------------------------------------------
// Заполняем реквизиты отчета, поля параметров и отбора СКД
        
МассивПолей = ПолучитьМассивПолейРасшифровки(Расшифровка, ДанныеРасшифровки, , Ложь);

// МассивПолей :
Значение элемента    Тип элемента    Поле    Значение    Иерархия
ЗначениеПоляРасшифровкиКомпоновкиДанных    ЗначениеПоляРасшифровкиКомпоновкиДанных    "Склад"    Основной склад    Ложь
ЗначениеПоляРасшифровкиКомпоновкиДанных    ЗначениеПоляРасшифровкиКомпоновкиДанных    "ВидОстатков"    Доступный    Ложь


ВидОстатков и Номенклатура имеют одинаковые настройки, но один ест другого нет. Куда хоть копать?

Роль Номенклатуры - измерение...
1 vde69
 
модератор
30.12.13
12:57
понял в чем трабл, Вид остатков - это групировка просто в колонках...

так как получить из расшифровки поле своего уровня?
2 Classic
 
30.12.13
13:06
Вопрос непонятен
3 vde69
 
модератор
30.12.13
13:20
(2) есть отчет, при клике на цифрку возникает событие, при обработке этого события мне нужно получить номенклатуру к которой относится эта цифра....
4 ИС-2
 
naïve
30.12.13
13:28
(3) первый варианат перебор расшифорки. Вроде бы передаешь в расшифровку число (идентификатор расшифроки) и получаешь значение. Но это кривой варинат.

на первой закладке СКД, есть "Выражение представления". Вместо номеклатуры указываешь ресурс который должен выводиться. Это самый нормальный вариант
5 Classic
 
30.12.13
13:44
ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    
    РезультатРасшифровки = ОбработкаРасшифровки.Расшифровать(Расшифровка, новый полеКомпоновкиДанных(ПолеРасшифровки));

Для каждого текСтрокаОтбора из РезультатРасшифровки.Отбор.Элементы цикл
6 vde69
 
модератор
30.12.13
13:46
(4) хм, прикольно конечно вместо 10 колонок со значением выводить 10 колонок с номенклатурой и менять представление, но как-то не айс, по многим причинам....
7 vde69
 
модератор
30.12.13
15:19
(5) нифига не работает
8 Necessitudo
 
30.12.13
15:21
ДанныеРасшифровки.Получить(Расшифровка-1).ПолучитьПоля()
9 Necessitudo
 
30.12.13
15:21
или - сколько-нибудь
10 Classic
 
30.12.13
15:33
(7)
В отборе нет номенклатуры?
11 Classic
 
30.12.13
15:35
при стандартной расшифровке данного поля, отчет строится с отбором по нужзной тебе номенклатуре?
12 vde69
 
модератор
30.12.13
15:43
(10) есть пустая, дело в том, что у меня нет групировки "Номенклатура", по этому и отбора нет, у меня есть только поле....
13 vde69
 
модератор
30.12.13
15:52
пока сделал так, вроде работает хотя и как-то не красиво

    ЭлементРасшифровкиДанных     = ДанныеРасшифровки.Элементы[Расшифровка];
    ЭлементРасшифровкиДанныхПоля = ЭлементРасшифровкиДанных.ПолучитьПоля()[0];
    
    
    мНоменклатура = Неопределено;
    ИндНоменклатуры = -1;
    ИндТекЗначения = -1;
    ЭлементыКомпоновки = ДанныеРасшифровки.Настройки.Выбор.ДоступныеПоляВыбора.Элементы;
    Для Каждого эл из ЭлементыКомпоновки Цикл
        Если СокрЛП(эл.Поле) = "Номенклатура" Тогда
            ИндНоменклатуры = ЭлементыКомпоновки.Индекс(эл);
        КонецЕсли;    
        
        Если СокрЛП(эл.Поле) = ЭлементРасшифровкиДанныхПоля.Поле Тогда
            ИндТекЗначения = ЭлементыКомпоновки.Индекс(эл);
        КонецЕсли;
    КонецЦикла;
    
    Если ИндНоменклатуры >= 0 Тогда
        // Номенклатура есть, можно искать ее расшифровку
        ЭлементРасшифровкиДанныхПоляНоменклатура = ДанныеРасшифровки.Элементы[Расшифровка - (ИндТекЗначения - ИндНоменклатуры - 2)].ПолучитьПоля()[0];
        мНоменклатура = ЭлементРасшифровкиДанныхПоляНоменклатура.Значение;
        
    КонецЕсли;
17 ИС-2
 
naïve
30.12.13
16:09
(0) можно, конечно, программно меняя стуктуру отчета, формировать его в ТЗ и там искать расшифровку. Но это ерунда
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс