Имя: Пароль:
1C
1C 7.7
v7: Работа с расшифровкой!
0 TwoWorld
 
29.11.11
12:42
Мне нужно, при клике на ячейку вызывать отчет!
Создал Сз, далее при выводе группировки пишу:                  СЗДляОтчетовОСостоянии.ДобавитьЗначение(ПечЗаявка,"СостояниеЗаявки");

И потом в
Процедура ОбработкаЯчейкиТаблицы(Расшифровка, СтандартнаяОбработка, Таблица,Адрес) Экспорт
   Если ТипЗначенияСтр(Расшифровка) = "СписокЗначений" Тогда            

       ДокументЗаявки = Расшифровка.Получить("СостояниеЗаявки");

       СЗпараметров = СоздатьОбъект("СписокЗначений");
       Сзпараметров.ДобавитьЗначение(ДокументЗаявки,"ВыбДокумент");
       ОткрытьФорму("Отчет.СостояниеЗаявки",СЗпараметров);
       
       
   КонецЕсли;
КонецПроцедуры // ОбработкаЯчейкиТаблицы

Что делаю не так?
1 Aleksey
 
29.11.11
12:43
а что тебе не нравится? Пока что все хорошо, продолжай наблюдение
2 TwoWorld
 
29.11.11
12:44
мне не нравится то, что при клике на любую ячейку один и тот же документ выдает
3 ДенисЧ
 
29.11.11
12:45
ПечЗаявка.ТекущийДокумент()
4 TwoWorld
 
29.11.11
12:46
Он в процедуру один и тот же документ в расшифровку кидает!
5 TwoWorld
 
29.11.11
12:48
И 2 момент, как сделать : мне нужно при клике на 1 ячейку один отчет вызывать, при клике на другую - другую
6 filh
 
29.11.11
12:51
(5) проверяй расшифровку
7 TwoWorld
 
29.11.11
12:52
так а почему один и тот же документ выводит при клике на разные ячейки
8 filh
 
29.11.11
12:53
(7) см (3)
9 Aleksey
 
29.11.11
12:53
(5) У тебя же есть Адрес, вот и смотри. Или в расшифровку добавь флаг какой нибудь
10 TwoWorld
 
29.11.11
12:55
причем тут текущийДокумент()? я его вот тут получаю из списка:
  Если ТипЗначенияСтр(Расшифровка) = "СписокЗначений" Тогда            

       ДокументЗаявки = Расшифровка.Получить("СостояниеЗаявки");

       СЗпараметров = СоздатьОбъект("СписокЗначений");
       Сзпараметров.ДобавитьЗначение(ДокументЗаявки,"ВыбДокумент");
       ОткрытьФорму("Отчет.СостояниеЗаявки",СЗпараметров);
       
       
   КонецЕсли;
11 Aleksey
 
29.11.11
12:56
(10) Потому что при заполнении ты один и тот же документ пихаешь во все ячейки
12 TwoWorld
 
29.11.11
12:56
я понял
13 Aleksey
 
29.11.11
12:57
Чтобы это избежать при заполнении используй ТекущийДокумент()
14 TwoWorld
 
29.11.11
12:58
а подскажите еще: мне нужно открыть отчет с заполнеными параметрами которые я передаю, а у меня ни чего почему то не передается
15 ДенисЧ
 
29.11.11
12:58
не так передаёшь, видать...
16 TwoWorld
 
29.11.11
13:01
(15) в список значений, а как же по другому то?
17 ДенисЧ
 
29.11.11
13:02
(16) Нам отсюда не видно, как передаёшь, как получаешь...
18 TwoWorld
 
29.11.11
13:04
СЗпараметров = СоздатьОбъект("СписокЗначений");
       Сзпараметров.ДобавитьЗначение(ДокументЗаявки,"ВыбДокумент");
       ОткрытьФорму("Отчет.СостояниеЗаявки",СЗпараметров);
так передаю!
19 Ёпрст
 
29.11.11
13:07
(18) дурила, нужно показать, как ты изначально СЗДляОтчетовОСостоянии.ДобавитьЗначение(ПечЗаявка,"СостояниеЗаявки");
делаешь и как ты секции выводишь.

+ Нужно не ДобавитьЗначение делать а Установить, а сйчас у теб я в списке куча документов с ОДИНАКОВЫМ представлением "СостояниеЗаявки", по которому ты всегда получаешь первый документ из списка.
20 TwoWorld
 
29.11.11
13:10
(19)                    
СЗДляОтчетовОСостоянии.Установить("Документ",ПечЗаявка);
СЗДляОтчетовОСостоянии.Установить("Отчет","По состоянию оплаты");

Вот как я делаю
21 Ёпрст
 
29.11.11
13:12
(20) да ну ? А в (0) нагло врешь значит ?! :))
22 Cthulhu
 
29.11.11
13:17
прочитать (3) по слогам ещё не советовали?..
23 TwoWorld
 
29.11.11
13:17
(21) изначально я в (0) делал так и написал, щас все работает правильно, вот осталось параметры как то передать, как мне получить параметры в вызываемом отчете :

В вызываемом отчете:
Процедура ПриОткрытии(ФлагВосстановленияНастройки)    
   
   Если глФлагРасшифровки = 1 Тогда
       Обновить = глОбновить;
       
       // восстанавливаем настройки из списка
       ДатаКонца        = глРасшифровка.Получить("ДатаКонца");
       ВыбДокумент        = глРасшифровка.Получить("ВыбДокумент");
       ВыбНоменклатура = глРасшифровка.Получить("ВыбНоменклатура");
       Режим            = глРасшифровка.Получить("Режим");

       Если Режим = "По документам" Тогда
           ПоДокументам();
           СтатусВозврата(0);
           Возврат;
       КонецЕсли;
       
       Если Обновить <> 0 Тогда
           Таб = глТаблица;
       КонецЕсли;          
       
       Если Обновить <> 2 Тогда
           Сформировать();
           СтатусВозврата(0);
           Возврат;      
       КонецЕсли;          
   Иначе
       Обновить = 0;
   КонецЕсли;                      
КонецПроцедуры        // ПриОткрытии()
24 Ёпрст
 
29.11.11
13:19
(23)ты определись, тебе передать надо или получить.
А так, что передал - то и получил.
Не вижу никаких проблем в этом действии.
25 TwoWorld
 
29.11.11
13:21
(24) мне надо при нажатии на ячейку, открыть другой отчет , по тому документу, который я перад в отчет
26 Ёпрст
 
29.11.11
13:21
(23) Либо ты передаешь всё через контекст формы и пользуешься Форма.Параметр, либо как у тебя в (23) - глобальная экспортная переменная глРасшифровка, которая представляет собой список значений.именно её нужно заполнять в ОбработкаЯчейкиТаблицы в таком случае.
27 TwoWorld
 
29.11.11
13:23
понял , а что делать с глФлагРасшифровки? при открытии он 0
28 Ёпрст
 
29.11.11
13:25
(27)вестимо его в 1 заточить в обработке ячейки таблицы
29 TwoWorld
 
29.11.11
13:38
не взлетает что то:
       глФлагРасшифровки = 1;
СЗпараметров = СоздатьОбъект("СписокЗначений");
Сзпараметров.ДобавитьЗначение(ДокументОплаты,глРасшифровка.Установить("ВыбДокумент")");
Сзпараметров.ДобавитьЗначение("По документам",глРасшифровка.Установить("Режим")");
30 TeddySlaf
 
29.11.11
13:39
(0) простите, читал не всё.
Автор точно уверен, что в разных ячейках хранятся разные расшифровки?
Возможно неправильно заполлняетя расшифровками сама таблица?
31 TwoWorld
 
29.11.11
13:41
Передача параметров не работает:
           глФлагРасшифровки = 1;
           СЗпараметров = СоздатьОбъект("СписокЗначений");
           Сзпараметров.ДобавитьЗначение(ПолучитьПустоеЗначение(Дата()),"глРасшифровка.Установить("ДатаКонца")");
           Сзпараметров.ДобавитьЗначение(ДокументОплаты,"глРасшифровка.Установить("ВыбДокумент")");
           Сзпараметров.ДобавитьЗначение("По документам","глРасшифровка.Установить("Режим")");
           Сзпараметров.ДобавитьЗначение(ПолучитьПустоеЗначение("Справочник.Номенклатура"),"глРасшифровка.Установить("ВыбНоменклатура")");
           
           ОткрытьФорму("Отчет.СостояниеЗаявки",СЗпараметров);
32 TeddySlaf
 
29.11.11
13:42
(25) точно ли в каждую ячейку передана своя расшифровка, помимо отображаемого текста?
33 Ёпрст
 
29.11.11
13:42
(29) ёпта, это же надо такой извращенный ум иметь ?!

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



       ОткрытьФорму("Отчет.СостояниеЗаявки");
       
       
   КонецЕсли;
КонецПроцедуры
34 filh
 
29.11.11
13:43
(31) открой лубую типовую уже. Там все есть!
35 filh
 
29.11.11
13:45
А можно и через параметр формы передать
36 TeddySlaf
 
29.11.11
13:46
(33) поосторожней надо быть с таким подходом как глФлагРасшифровки.
В его случае хватит и стандартно поддерживаемой  Форма.Параметр.
37 TeddySlaf
 
29.11.11
13:47
Автор ответь на (32)
38 TwoWorld
 
29.11.11
13:47
(33) глРасшифровка.Установить("ВыбДокумент",Расшифровка.ПолучитьЗначение(1,));
{C:\USERS\АЛЕКСЕЙ\DESKTOP\ОТЧЕТ_ЗАЯВКИ ПОКУПАТЕЛЕЙ В РАБОТЕ.ERT(1156)}: Значение не представляет агрегатный объект (Установить)
39 TwoWorld
 
29.11.11
13:49
(38)            глФлагРасшифровки = 1;            
           глРасшифровка.Установить("ВыбДокумент",Расшифровка.ПолучитьЗначение(1,));
           ОткрытьФорму("Отчет.СостояниеЗаявки");
40 Ёпрст
 
29.11.11
13:49
(38) :)))
Дык глРасшифровка = СоздатьОбъект("СписокЗначений") сделай.
41 Ёпрст
 
29.11.11
13:49
+40 один раз в приоткрытии отчета.
42 TeddySlaf
 
29.11.11
13:50
(40) НЕ НАДО направлять неокрепший ум по этому направлению: передачу параметров через глобальную переменную! , когда есть спецмальный способ передачи параметра при вызове Обработки.
43 TeddySlaf
 
29.11.11
13:51
(41) не при открытии отчета, а как глобальная во всей конфе!
44 Ёпрст
 
29.11.11
13:51
(42) надо федя, надо.
У него уже сам отчет заточен под работу с глРасшифровка, смотри (23)
45 TeddySlaf
 
29.11.11
13:52
Автор ответь на (37)
46 filh
 
29.11.11
13:53
(41) ставлю, что глРасшифровка  у него не глобальная
:)
47 TeddySlaf
 
29.11.11
13:54
(38) а его АЛЕКСЕЙ зовут.
48 TwoWorld
 
29.11.11
13:57
Вообщем в отчет попадает, и там сразу выдает:

ДатаКонца = глРасшифровка.Получить("ДатаКонца");
{Отчет.СостояниеЗаявки.Форма.Модуль(323)}: Значение не представляет агрегатный объект (Получить)

Хотя глРасшифровка объявил и написал:
           глФлагРасшифровки = 1;
           глРасшифровка.Установить("ДатаКонца",ПолучитьПустоеЗначение(ТекущаяДата()));
           глРасшифровка.Установить("ВыбДокумент",Расшифровка.ПолучитьЗначение(1,));
           глРасшифровка.Установить("ВыБНоменклатура",ПолучитьПустоеЗначение("Справочник.Номенклатура"));
           глРасшифровка.Установить("Режим","По документам");
49 filh
 
29.11.11
13:59
бинго!
50 filh
 
29.11.11
14:00
(48) глобальной сделай глРасшифровка
51 Ёпрст
 
29.11.11
14:01
(48) в глобальничек добавь
Перем глРасшифровка Экспорт;
Перем глФлагРасшифровки Экспорт;
52 filh
 
29.11.11
14:01
в глобальном модуле
Перем глРасшифровка; экспорт
и самой нижней строчной к глобальнике
глРасшифровка = СоздатьОбъект("СписокЗначений");
53 TeddySlaf
 
29.11.11
14:02
Автор ответь на (45).
точно ли в каждую ячейку передана своя расшифровка, помимо отображаемого текста?
54 filh
 
29.11.11
14:03
(53) да с этим разобрались уже
55 filh
 
29.11.11
14:04
(52) опа, ; не туда ткнул
:)
56 TwoWorld
 
29.11.11
14:08
В глобальном модуле это есть
57 TwoWorld
 
29.11.11
14:09
(51),(52)это сдандартно заложено
58 TeddySlaf
 
29.11.11
14:11
(57) тогда этого не должно быть в вызываемой обработке!
59 filh
 
29.11.11
14:23
(58) мдя, через параметр быстрей дошло бы...
60 TeddySlaf
 
29.11.11
14:33
(59) не только быстрей, но и логичнее и системнее и правильнее.
Основная теорема систематики: Новые системы плодят новые проблемы.