Имя: Пароль:
1C
1C 7.7
v7: Определить открыта ли таблица
0 Shaman100M
 
23.01.12
20:28
Создаем переменную модуля. По кнопке из формы присваиваем ей значение "Таблица", формируем и выводим печатную форму отдельно, методом Показать(,,1). Закрываем руками печатную форму. "Таблица" закрыта, но переменная еще имеет тип значения "Таблица" и все свойства выведенной таблицы, например, ВысотаТаблицы() и т.д. Как определить, что печатная форма уже закрыта?
1 andrewks
 
23.01.12
20:34
а где таблица была создана?
2 Mnemonic1C
 
23.01.12
20:36
ТипЗначения() или ТипЗначенияСтр()
3 Shaman100M
 
23.01.12
20:38
(2) остается такой же - "Таблица"
(1) а это имеет значение? в форме журнала документов.
4 Shaman100M
 
23.01.12
20:42
(1) Вернее, переменная передается из формы в процедуру глобального модуля через параметр, там проверяется ее тип значения. Если пусто, то создается объект "Таблица", выводится. После вывода табличной формы и ее закрытия руками проверяю тип значения переданной переменной в форме, применение методов объекта "таблица" - всё отрабатывает.
5 Shaman100M
 
23.01.12
20:45
шаблон берется из общих таблиц.
6 miki
 
23.01.12
20:45
а зачем?
7 Shaman100M
 
23.01.12
20:49
(6) в журнале документов, если ранее была нажата кнопка "печать" и форма печати "висит" на экране - обновляем ее при изменении текущего документа. В случае, если печатную форму закрыли - больше обновлять и выводить ее не надо.
8 miki
 
23.01.12
20:55
не понятно зачем, но если бы пришлось - сделал бы флажок в журнале: показать/спрятать печатную форму.
9 1Сергей
 
24.01.12
07:43
в типовых всё уже давно реализовано:

Процедура ПриОткрытии()
   
   Если глФлагРасшифровки = 1 Тогда
       Закрыть = 1;
       Обновить = глОбновить;
       РазделительУчета = глРасшифровка.Получить("РазделительУчета");
         Дата1 = глРасшифровка.Получить("Дата1");
         Дата2 = глРасшифровка.Получить("Дата2");
         Счет  = глРасшифровка.Получить("Счет");
         СчетПредставление = глПолучитьПредставлениеСчета(Счет);
         ДанныеПоСубсчетам = глРасшифровка.Получить("ДанныеПоСубсчетам");
         Валюта = глРасшифровка.Получить("Валюта");
         ДанныеПоВалютам = глРасшифровка.Получить("ДанныеПоВалютам");
       ПриВыбореСчета();
         
       Если ПустоеЗначение(глРасшифровка.Получить("ВидСубконто1")) = 0 Тогда
           ВыбВидСубконто1 = глРасшифровка.Получить("ВидСубконто1");
           Форма.Субконто1.НазначитьТип(ВыбВидСубконто1);
       КонецЕсли;
       . . .
       Если Обновить <> 0 Тогда
           Т = глТаблица;
       КонецЕсли;

       Если Обновить <> 2 Тогда
           Сформировать();
           СтатусВозврата(0);
           Возврат;
       КонецЕсли;
10 1Сергей
 
24.01.12
07:46
+

Процедура Сформировать(Ручн = 0, ФлагЗакрытияФормы = 0)
   . . .
   Расшифровка = СоздатьОбъект("СписокЗначений");
   Ит = СоздатьОбъект("БухгалтерскиеИтоги");
   . . .
   Если (ТипЗначенияСтр(Т) <> "Таблица") Или (Обновить = 0) Тогда
         Т = СоздатьОбъект("Таблица");
   Иначе
       Т.Очистить();
   КонецЕсли;
   Т.ИсходнаяТаблица("Таблица");

   Расшифровка.Установить("Отчет", "ОборотноСальдоваяВедомостьПоСчету");
   Расшифровка.Установить("РазделительУчета", РазделительУчета);
     Расшифровка.Установить("Дата1", Дата1);
     Расшифровка.Установить("Дата2", Дата2);
     Расшифровка.Установить("Счет", Счет);
     Расшифровка.Установить("ДанныеПоСубсчетам", ДанныеПоСубсчетам);
     Расшифровка.Установить("Валюта",Валюта);
     Расшифровка.Установить("ДанныеПоВалютам",ДанныеПоВалютам);
   . . .    
   Т.ВывестиСекцию("Секция_12");
   Т.ВывестиСекцию("Секция_1");
   ФиксСтрок = 5;
   Если ПустоеЗначение(Заголовок1) = 0 Тогда
       Т.ВывестиСекцию("Секция_19");
       ФиксСтрок = ФиксСтрок + 1;
   КонецЕсли;
   . . .
   Т.ВывестиСекцию("Секция_20");
   Т.ТолькоПросмотр(1);
   Т.Опции(0, 0, ФиксСтрок, 1, "ОпцииПечатиОСВПоСчету", "ОСВПоСчету");
   Т.ОбластьПечати(2);
   Т.ПовторятьПриПечатиСтроки(ФиксСтрок-1,ФиксСтрок);
   Т.ПараметрыСтраницы(1,,,,,,,,, 1);
   Т.Показать("Оборотно-сальдовая ведомость по счету "+Счет+?(ПустоеЗначение(Заголовок1)=1, "", ", по субконто "+Заголовок1)+" ("+ПериодСтр(Дата1, Дата2)+")"+?(ТипЗначения(РазделительУчета)=0, "", " "+РазделительУчета), "");
       Если Закрыть = 1 Тогда
       СтрокаДействийФормы = "#Закрыть";
   КонецЕсли;
   
   Если (ФлагЗакрытияФормы = 1) Или (Обновить = 2) Или (Закрыть = 1) Тогда
       СтрокаДействийФормы = "#Закрыть";
   КонецЕсли;
КонецПроцедуры
11 Ёпрст
 
24.01.12
09:12
Элементарщина:

Перем Таб;
//======================================================================
Процедура ПроверитьЗакрытиеТаблички()
Перем Адрес;
   Таб.ЗначениеТекущейЯчейки(Адрес);
   Если ПустоеЗначение(Адрес)=1 Тогда
       Сообщить("закрыта однако");
   КонецЕсли;
КонецПроцедуры

//*******************************************
Процедура Сформировать()
   Таб = СоздатьОбъект("Таблица");
   Таб.Вывести();
   Таб.Показать();
КонецПроцедуры
12 Shaman100M
 
24.01.12
11:24
(9), (10) - там нет решения этой проблемы. Смотрим Сформировать() - в начале процедуры определяется только тип переданного объекта Т - "Таблица". Открыта или нет печатная форма, - тут не стоит такого вопроса, так как - в конце процедуры метод Т.Показать(,,1) отрабатывает и закрытую форму (открывает заново), и открытую ранее (обновляет содержание).

(11) то, что нужно! Спасибо, Ёпрст!