Имя: Пароль:
1C
1С v8
Расшифровка
0 lg2marvel
 
11.10.18
12:32
Всем привет, делаю расшифровке в отчете.
Есть макет, вывожу его на табличное поле на форме.

    Для Каждого стр из тзЗапросСклады Цикл             
        Строка.Параметры.Склад = стр.Склад;
        
        СтруктураРасшифровки = Новый Структура;
        СтруктураРасшифровки.Вставить("Склад",стр.Склад);
        СтруктураРасшифровки.Вставить("Поле",1);        
        Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки;
        СтруктураРасшифровки.Вставить("Поле",2);        
        Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки;

.............................................................................    
Таб.Вывести(Строка);


Процедура ТабличныйДокументОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)    
    СтандартнаяОбработка = Ложь;
    
    Если Расшифровка.Поле = 1 Тогда
        ОткрытьЗначение(Расшифровка.Склад);
    ИначеЕсли Расшифровка.Поле = 2 Тогда
        Сообщить("Продажа");
    КонецЕсли;    

КонецПроцедуры

Все бы ничего, но отрабатывает только СтруктураРасшифровки.Поле = 2, куда бы я не нажимал.
Но у меня возникает вопрос, есть же Элемент, куда попадает ячейка табличного поля. Но получить я могу только его координаты (Ячейка.Имя). Может можно как-то узнать параметра ячейки по которой я клацаю?
1 lg2marvel
 
11.10.18
12:34
(0) ячейка в смысле Элемент - 1-й параметр процедуры расшифровки
2 lg2marvel
 
11.10.18
12:41
Как я понял для стандртного обработчика расшифровки все равно как я обозвал параметр расшифровки? Или можно как-то обратиться к нему?
3 lg2marvel
 
11.10.18
12:41
{ВнешнийОтчет.ФинРезультат.Форма.ФормаОтчета.Форма(1507)}: Поле объекта не обнаружено (ПараметрРасшифровки)
    Сообщить(Элемент.ПараметрРасшифровки);
4 lg2marvel
 
11.10.18
12:44
Синтаксический помощник скуп до жути
5 1Сергей
 
11.10.18
12:49
(3) не нашел в (0) ПараметрРасшифровки
6 1Сергей
 
11.10.18
12:51
7 lg2marvel
 
11.10.18
12:55
(6)
    Для Каждого стр из тзЗапросСклады Цикл             
        Строка.Параметры.Склад = стр.Склад;
        
        СтруктураРасшифровки = Новый Структура;
        СтруктураРасшифровки.Вставить("Склад",стр.Склад);
        СтруктураРасшифровки.Вставить("Поле",1);        
        Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки;

Если не вписать имя параметра в свойствах ячейки - не будет работать и расшифровка (разве что только указать конкретно область расшифроки)
8 1Сергей
 
11.10.18
12:58
(7) ну, так там вписан какой параметр? РасшифровкаСклад? В каком месте не можешь до расшифровки достучаться?

Как партизан на допросе
9 lg2marvel
 
11.10.18
13:02
В ячейке Склад - параметр расшифровки РасшифрокаСклад, дальше ячейка Продажа - РасшифровкаПродажа.

В процедуре ОбработкаРасшифровки я хочу в зависимости от того на какой ячейке вызвана обработка расшифровки отбработать результат и вывести. На пример при нажатии на Склад - я просто выведу форму справочника Склад, а при нажатии на продажи - будет запрос к регистру продажи с группировкой по регистратору

Вот в этой ОбработкаРасшифровки  я не могу получить на какую ячейку я нажал.
10 lg2marvel
 
11.10.18
13:05
(8) Да там вписан параметр РасшифровкаСклад
11 Индиго
 
11.10.18
13:05
(9)А в свойствах ячеек ты прописал имена расшифровок и назначил "для ячейки" а не "для строки"?
12 lg2marvel
 
11.10.18
13:08
(11) Да, использование расшифровки - ячейка
13 lg2marvel
 
11.10.18
13:11
При заполнении табличного документа делаю следующее:

        СтруктураРасшифровки = Новый Структура;
        СтруктураРасшифровки.Вставить("Склад",стр.Склад);
        СтруктураРасшифровки.Вставить("Поле",1);        
        Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки;
        СтруктураРасшифровки.Поле = 2;
        Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки;


Чтоб передать в параметре СтруктураРасшифровки.Поле номер ячейки по которой я нажал.

И потом обрабатываю в обработчике расшифровки:
Процедура ТабличныйДокументОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)    
    СтандартнаяОбработка = Ложь;
    
    Если Расшифровка.Поле = 1 Тогда
        ОткрытьЗначение(Расшифровка.Склад);
    ИначеЕсли Расшифровка.Поле = 2 Тогда
        Сообщить("Продажа");
    КонецЕсли;    

В итоге получется куда бы я не нажимал мне выходит сообщение "продажа"
14 1Сергей
 
11.10.18
13:19
(13) смотри ячейки слева от нужной. где-то стоит "для строки"
15 1Сергей
 
11.10.18
13:21
(13) и это... ты же Таб.Вывести(Строка) делаешь внутри цикла, между тем, как меняешь значения расшифровки?
16 lg2marvel
 
11.10.18
13:24
(14) Для всей табилцы сделал Использование расшифровки ячейка.
(15) Да, внутри цикла:

    Для Каждого стр из тзЗапросСклады Цикл             //Выводим а ТЧ результат запроса Склады
        Строка.Параметры.Склад = стр.Склад;
        
        СтруктураРасшифровки = Новый Структура;     //РРРРРРРРРРРРасшифровка мать её
        СтруктураРасшифровки.Вставить("Склад",стр.Склад);
        СтруктураРасшифровки.Вставить("Поле",1);        
        Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки;
        СтруктураРасшифровки.Поле = 2;
        Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки;


        
        ПараметрыОтбора.Вставить("Склад", стр.Склад);
        тзПродажиПоСкладу = тзПродажи.Скопировать(ПараметрыОтбора);
        ПродажаВРозницу = 0;
        ПродажаОПТ = 0;
        Для Каждого стрТЗ ИЗ тзПродажиПоСкладу Цикл    
            Если ЗначениеЗаполнено(стрТЗ.СуммаОборот) И (стрТЗ.ВидОперации=Перечисления.ВидыОперацийПродажа.ПродажаВРозницу) Тогда    
                ИтогоПродажа = ИтогоПродажа + стрТЗ.СуммаБезНДС;
                ПродажаВРозницу = ПродажаВРозницу + стрТЗ.СуммаБезНДС;
            ИначеЕсли ЗначениеЗаполнено(стрТЗ.СуммаОборот) И (стрТЗ.ВидОперации=Перечисления.ВидыОперацийПродажа.Продажа) Тогда    
                ПродажаОПТ = ПродажаОПТ + стрТЗ.СуммаБезНДС;
                ИтогоПродажаОПТ = ИтогоПродажаОПТ + стрТЗ.СуммаБезНДС;
            ИначеЕсли ЗначениеЗаполнено(стрТЗ.СуммаОборот) И (стрТЗ.ВидОперации=Перечисления.ВидыОперацийПродажа.ВозвратПоКассе) Тогда
                ПродажаВРозницу = ПродажаВРозницу - МодульЧисла(стрТЗ.СуммаОборот);
                ИтогоПродажа = ИтогоПродажа - МодульЧисла(стрТЗ.СуммаОборот);
            КонецЕсли;
        КонецЦикла;
        стрВозвраты = тзВозвраты.НайтиСтроки(ПараметрыОтбора);
        НакоплениеВовзратов = 0;
        Для Каждого стрТЗ из стрВозвраты Цикл
            НакоплениеВовзратов =  стрТЗ.СуммаБезНДС;
        КонецЦикла;    
        ПродажаОПТ = ПродажаОПТ + НакоплениеВовзратов;
        ИтогоПродажаОПТ = ИтогоПродажаОПТ + НакоплениеВовзратов;
        Строка.Параметры.Продажа = ПродажаВРозницу;
        Строка.Параметры.ПродажаОПТ = ПродажаОПТ;
        
        Таб.Вывести(Строка);
    КонецЦикла;
17 lg2marvel
 
11.10.18
13:24
18 1Сергей
 
11.10.18
13:26
(16) и что ты хочешь? у тебя на момент вывода Поле всегда будет 2
19 1Сергей
 
11.10.18
13:27
делай разные параметры расшифровки для разных ячеек.
И заполняй их отдельно
20 lg2marvel
 
11.10.18
13:33
(19) Так они же разные!
        СтруктураРасшифровки.Вставить("Поле",1);        
        Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки;
        СтруктураРасшифровки.Поле = 2;
        Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки;

И на макете РасшифровкаПродажа  и РасшифровкаСклад для соответствующих ячеек
21 Cool_Profi
 
11.10.18
13:34
(20) Она у тебя одна и та же. Ссылка ведь не меняется.
Структуру заново создай для продажи
22 lg2marvel
 
11.10.18
13:36
Да блин! Реально работает!
23 lg2marvel
 
11.10.18
13:36
СтруктураРасшифровки = Новый Структура;     //РРРРРРРРРРРРасшифровка мать её
        СтруктураРасшифровки.Вставить("Склад",стр.Склад);
        СтруктураРасшифровки.Вставить("Поле",1);        
        Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки;
        СтруктураРасшифровки = Новый Структура;
        СтруктураРасшифровки.Вставить("Склад",стр.Склад);
        СтруктураРасшифровки.Вставить("Поле",2);
        Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки;
24 Cool_Profi
 
11.10.18
13:36
25 lg2marvel
 
11.10.18
13:37
Э то не поддается никакой логике!
26 Cool_Profi
 
11.10.18
13:38
(25) Это абсолютно нормальная логика для программиста. А не для бухгалтера.
27 lg2marvel
 
11.10.18
13:38
И да, я понял почему :-(, тупанул, при выводе строки данные в структуре были Поле = 2.Хоть куда ты их не присваивай
28 lg2marvel
 
11.10.18
13:39
need more practice
29 lg2marvel
 
11.10.18
13:39
Спасибо всем огромное, второй день на одном месте