|
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) то, что нужно! Спасибо, Ёпрст! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |