Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Расшифровка

Расшифровка
Я
   lg2marvel
 
11.10.18 - 12:32
Всем привет, делаю расшифровке в отчете.
Есть макет, вывожу его на табличное поле на форме.
    Для Каждого стр из тзЗапросСклады Цикл             
        Строка.Параметры.Склад = стр.Склад;
        
        СтруктураРасшифровки = Новый Структура;
        СтруктураРасшифровки.Вставить("Склад",стр.Склад);
        СтруктураРасшифровки.Вставить("Поле",1);        
        Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки;
        СтруктураРасшифровки.Вставить("Поле",2);        
        Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки;

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


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

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

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

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

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

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

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

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


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

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

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

    Для Каждого стр из тзЗапросСклады Цикл             //Выводим а ТЧ результат запроса Склады

        Строка.Параметры.Склад = стр.Склад;
        
        СтруктураРасшифровки = Новый Структура;    //РРРРРРРРРРРРасшифровка мать её

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


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

И на макете РасшифровкаПродажа  и РасшифровкаСклад для соответствующих ячеек
   Cool_Profi
 
21 - 11.10.18 - 13:34
(20) Она у тебя одна и та же. Ссылка ведь не меняется.
Структуру заново создай для продажи
   lg2marvel
 
22 - 11.10.18 - 13:36
Да блин! Реально работает!
   lg2marvel
 
23 - 11.10.18 - 13:36
СтруктураРасшифровки = Новый Структура;    //РРРРРРРРРРРРасшифровка мать её

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует