Имя: Пароль:
1C
1C 7.7
v7: Как обновить ОСВпоСчету из внешней обработки ?
0 palpetrovich
 
26.01.12
17:22
Из внешней обработки открываю ОСВпоСчету, при повтором вызове - создается новый экземпляр, можно как-то обновить существующий?
...сильно подозреваю, что при повторном вызове надо строку
       ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету");
чем-то заменить :)
1 ДенисЧ
 
26.01.12
17:25
ОткрытьФорму("Отчет", параметры, КаталогИБ() + "\extforms\ОсВПоСчету.ert")

Ну и параметры там правильно отрабатывать
2 palpetrovich
 
26.01.12
17:29
(1) ОборотноСальдоваяВедомостьПоСчету - встроенная, я ее вызываю из внешнего
можно наверное закрыть форму если открыта и открыть по-новой, но мне кажеться что можно и просто обновить
...или я не прав?
3 viktor_vv
 
26.01.12
17:29
Куда-то в эту строну копать.

Замечание. Для журналов, отчетов, списков в конце строки описателя формы может быть указан символ "#" с некоторым идентификатором: "#LLLL". Это используется для того, чтобы данная форма открылась в новом окне, а не активизировала существующее окно этой формы, если оно открыто. Где, LLLL — идентификатор, который позволяет открыть новое окно или активизировать уже открытое с этим идентификатором. Если идентифи­катор не задан, то обязательно открывается новое окно.
4 viktor_vv
 
26.01.12
17:30
ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету#МойИД");
5 palpetrovich
 
26.01.12
17:34
(4) увы, плодит формы и так
6 Cthulhu
 
26.01.12
17:37
// Внешнаа обработка
Перем КонтОСВ;
// ... где-то там, где надо:
ОткрытьФорму("Отчет.<NвойОтчет>",КонтОСВ);
КонтОСФ.Форма.ОбработкаОжидания("Сформировать",1);
Форма.ОбработкаОжидания("ОтключитьОбновлениеОСВ",1);
// ...
Процедура ОтключитьОбновлениеОСВ()
 Форма.ОбработкаОжидания("",0);
 Если ТипЗначенияСтр(КонтОСВ)="ГрупповойКонтекст" Тогда     КонтОСФ.Форма.ОбработкаОжидания("",0)   КонецЕсли;
КонецПроцедуры //ОтключитьОбновлениеОСВ
8 viktor_vv
 
26.01.12
17:38
(5) Вот так точно не плодит.

Процедура ОткрытьОтчет()
   ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету#XXXX");
КонецПроцедуры

Процедура висит на кнопке, сколько не нажимаю, просто активируется открытая форма.
9 palpetrovich
 
26.01.12
17:42
(8) а, я понял, у меня немного не так. я сразу печФормуОСВ формирую, без окрытия основной формы
10 viktor_vv
 
26.01.12
17:43
(8) Хотя при таких условиях она и просто

ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету");

Не плодит. Скорее всего в коде надо еще искать. может там че-то еще меняется.
11 palpetrovich
 
26.01.12
17:43
+(9) тем самым ввел всех в заблуждение, сорьки
12 viktor_vv
 
26.01.12
17:45
Это тебе тогда надо выведенную форму писать в переменную глобальную и передавать ее в форму. Смотри по кнопке Расшифровка вверху че ей там надо, там еще флаги меняются.
13 palpetrovich
 
26.01.12
17:46
(6) че-т не то
(7) эт ваще не то  :)
14 viktor_vv
 
26.01.12
17:46
(12) Не расшифровка, а Обновить, рядом с настройкой.
15 palpetrovich
 
26.01.12
17:47
(12) вызываю так:
       глОбновить = 1;
       глФлагРасшифровки = 1;      
       СписокПараметров = СоздатьОбъект("СписокЗначений");
       СписокПараметров.ДобавитьЗначение(ВыбНачПериода, "Дата1");
       СписокПараметров.ДобавитьЗначение(ВыбКонПериода, "Дата2");
       СписокПараметров.ДобавитьЗначение(СчетПоКоду("281", ПланыСчетов.Основной), "Счет");  
       СписокПараметров.ДобавитьЗначение(ВидыСубконто.ТМЦ, "ВидСубконто1");
       СписокПараметров.ДобавитьЗначение(2, "ОтборСубконто1");        
       СписокПараметров.ДобавитьЗначение(ВыбТовар, "Субконто1");    
       СписокПараметров.ДобавитьЗначение(ВидыСубконто.Партии, "ВидСубконто2");
       СписокПараметров.ДобавитьЗначение(1, "ОтборСубконто2");
       глРасшифровка = СписокПараметров;                            
       ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету");

       глОбновить = 0;
       глФлагРасшифровки = 0;      
       глРасшифровка = 0;
16 viktor_vv
 
26.01.12
17:50
Вот это еще надо как-то использовать.

           Если (глОбновить <> 0) или (глФлагРазворота <> 0) Тогда
               глТаблица = Таблица;
           КонецЕсли;

Это из обработкиЯчейкиТаблицы глобальной. Таблица это параметр этой процедуры, передается при клике в таблице. А тебе как-то надо эту выведенную таблицу получить в твоей форме внешнего отчета.
17 viktor_vv
 
26.01.12
17:52
СписокПараметров.ДобавитьЗначение(ВидыСубконто.Партии, "ВидСубконто2");
       СписокПараметров.ДобавитьЗначение(1, "ОтборСубконто2");
       глРасшифровка = СписокПараметров;                            
       глТаблица = Таблица; // ??? Как получить эту таблицу не знаю.
       ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету");
18 palpetrovich
 
26.01.12
17:53
(16) ну, вроде ОбработкаЯчейкиТаблицы с этим справляется :)
спасибо за наводку, сейчас попробую
19 palpetrovich
 
26.01.12
17:54
+(18) блин, но-же при "клике", а мне как-то кликать там не надо :)
20 viktor_vv
 
26.01.12
17:55
Так она справляется, потому как этот параметр есть в предопреденной процедуре, и обработка ячейки вызывается непосредственно из этой таблицы.

Если в лоб,то своя глобальная переменная, в нее писать из ОСВ при выводе. И тогда в твоей обработке

       глРасшифровка = СписокПараметров;                            
       глТаблица = ТвояГлобальнаяПеременнаяСТаблицей; // ??? Как получить эту таблицу не знаю.

       ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету");
21 palpetrovich
 
26.01.12
17:57
кста, пробовал так    
   ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету", Конт);
смотрел в отладчике, сразу после этого - Конт ничему не равна  ...видать формы нет вообще :)
несмотря на "Пока форма открыта, тип значения параметра <КонтекстФормы> равен 100, когда закрыта - 0."
22 Cthulhu
 
26.01.12
17:59
(13): извини, но похоже то, что в (6) - не "че-т не то", а "ты просто нихрена не понял".
все там то. через контекст формы отчета вызывается в обработке ожидания процедура, обновляющая отчет, и тут же процедура контекста внешней обработки, отключающая обработку ожидания, запущенную в ОСВ через её контекст.
(21): Сообщить("Успешно(1)/неудачно(0) открылась = "+ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету", Конт)+", Контекст открытой = "+Конт+" (тип="""+ТипЗначенияСтр(Конт)+""")","i");
23 palpetrovich
 
26.01.12
18:04
(22) не спорю, нихрена не понял
понял только что  ОбработкаОжидания("... нужно в ОСВПоСчету лепить надо и дальше вдумываться не стал
24 Cthulhu
 
26.01.12
18:07
(23): бред, в (6) исключительно код внешней обработки, в вызываемый отчет ничего "лепить" НЕ надо.
(как ты причудливо "понял", однако... ну ооочень альтернативно)))))))
25 viktor_vv
 
26.01.12
18:08
(23) Не надо ее туда лепить, она через контекст из твоей обработки прилепится. Только скорее всего проблема с передачей открытой таблицы, которую надо обновить, все равно останется
26 Cthulhu
 
26.01.12
18:09
(25): телепатирую: можно предварительно аккуратно установить глоб.переменные глФлагРасшифровки и глРасшифровка, а также переменную Т
27 palpetrovich
 
26.01.12
18:10
(24) ну значит я ващще ниче не понял, попробую разобраться
28 viktor_vv
 
26.01.12
18:12
(26) Флаги он и так устанавливает, а вот с переменной Т проблема, откуда ее взять-то во внешней обработке? Если по простому то (20). В ОСВ добавить придется

Т.Опции(0, 0, 5, 2,,"ОСВ");
   Т.ОбластьПечати(2);
   Т.Показать("Оборотно-Сальдовая ведомость ("+ПериодСтр(Дата1, Дата2)+")", "");

ТвояГлобальнаяПеременнаяСТаблицей = Т ;
29 Cthulhu
 
26.01.12
18:14
(28): а вот тут я путаюсь. переменные модуля формы через контекст формы разве недоступны?
30 viktor_vv
 
26.01.12
18:16
(29) Так у него нет формы отчета, она закрыта, судя по (9), осталась только сформированная Таблица.
31 viktor_vv
 
26.01.12
18:17
(29) И таки штатно переменные модуля не доступны (с некоторой долей неуверенности :)) ), только реквизиты формы.
32 palpetrovich
 
26.01.12
18:18
(29) увы (6) не катит, ибо "КонтОСВ.Форма.ОбработкаОжидания("Сформировать",1);
Значение не представляет агрегатный объект (Форма)"
формы нет, посмотри (15)
33 viktor_vv
 
26.01.12
18:25
(32) Попробуй с правкой ОСВ и глобальника (20) и (28). Но тут с обновлениями нехорошо получится, хотя и изменения минимальны.
34 palpetrovich
 
26.01.12
18:26
(31) спасибо, глТаблица = Т; в ОСВПоСчету все решает
правда, дабы не курочить конфигурацию, пришлось ОСВ сохранить каку внеший
35 viktor_vv
 
26.01.12
18:29
(34) Оно бы лучше свою переменную глобальную, тебе ж надо что б она жила подольше . А то глТаблица часто пользуется и короткоживущая, могут быть глюки.
36 viktor_vv
 
26.01.12
18:31
Я в том плане, что при открытой твоей обработке, откроют еще какой-нибудь стандартный отчет обновят его и привет, глТаблица пустая.
37 palpetrovich
 
26.01.12
18:33
(35) это обработка для монопольного использования, так что проблем не будет
38 palpetrovich
 
26.01.12
18:34
спасибо всем соучастникам :)   viktor_vv - особо!
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс