Контроль закрытия объекта "Таблица"

02.11.07

Разработка - Универсальные функции

После Таб.Показать(,); выведенная табличная форма предоставлена сама себе (или пользователю). Как не потерять контроль и выполнить какие-либо действия при ее закрытии?
Контроль закрытия объекта "Таблица".

На "Мисте" автору одной из веток http://www.forum.mista.ru/topic.php?id=305108 понадобилось сохранять выведенную табличную форму после ее печати на принтер. Решение, как это иногда бывает, пришло само собой, имею смелось его выложить на Инфостарте.

Вообще, придумать потребность (и вышеуказанная тоже плохо "читается"), для чего нужна бы была отработка определенных действий с уже выведенной таблицей, оказалось достаточно сложно. К потребности автора ветки я смог добавить только две:

- сравнить данные в "открываемой" и "закрываемой" таблицах, не менял ли чего в них пользователь
- отменить закрытие таблицы

Ну и, собственно, само решение задачи, - момент сохранения таблицы переместить с "после печати" на "при закрытии".

ПриЗакрытии()!

Идея такая: табличную форму нужно передать во внешний (или встроенный) отчет с использованием пустой таблицы во все окно. А дальше все просто - закрывается не таблица, а отчет, используем предопределенную ПриОткрытии()

 // где-то в коде...
 Таб.Показать(,); 

заменяем на:
ИмяФайла = "C:\ЗадатьИмяФайла.mxl";
Таб.Записать(ИмяФайла);
ОткрытьФорму("Отчет.НапримерВстроенный#",ИмяФайла);


В отчете открываем и выводим переданный в кач. параметра файл таблицы,
прописываем наши действия в ПриЗакрытии()

Процедура ПриОткрытии()
    Таблица.ИсходнаяТаблица(Форма.Параметр);
    Таблица.Вывести();
КонецПроцедуры

Процедура ПриЗакрытии()
    // мои варианты
    // таблица была изменена?
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица(Форма.Параметр);
    Таб.Вывести();
    Если Таб.ВысотаТаблицы() <> Таблица.ВысотаТаблицы() Тогда
        БылиИзменения = 1;
    ИначеЕсли Таб.ШиринаТаблицы() <> Таблица.ШиринаТаблицы() Тогда
        БылиИзменения = 1;
    Иначе
        Для М1 = 1 По Таб.ВысотаТаблицы() Цикл
            Для М2 = 1 По Таб.ШиринаТаблицы() Цикл
                БылиИзменения = 0;
                Если Таб.Область(М1,М2).Текст <> Таблица.Область(М1,М2).Текст Тогда
                    БылиИзменения = 1;
                    Прервать;
                КонецЕсли;
            КонецЦикла;
            Если БылиИзменения = 1 Тогда
                Прервать;
            КонецЕсли;  
        КонецЦикла;
    КонецЦикла;
    Если БылиИзменения = 1 Тогда
        Сообщить("Были изменения");
    КонецЕсли;  
 
    // записать таблицу при закрытии
    Таблица.Записать(ИмяФайла); 

    // отменить закрытие таблицы 
    СтатусВозврата(0);
КонецПроцедуры

См. также

Универсальные функции Программист Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    1616    14    user706545_kseg1971    0    

5

Универсальные функции Программист Платформа 1С v7.7 1C77 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    2490    zhenyat    7    

8

Универсальные функции Программист Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    5448    Zoltan_Black    11    

2

Универсальные функции Системный администратор Программист Платформа 1С v7.7 1C77 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    14098    4    alsen    3    

5

Универсальные функции Программист Платформа 1С v7.7 1C77 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    11048    malovandrey    7    

19

Универсальные функции Работа с интерфейсом Программист Платформа 1С v7.7 1C77 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18954    2    HAMMER_59    6    

2
Оставьте свое сообщение