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

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С: Предприятие 7.7"

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

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

1 стартмани

22.12.2023    738    9    user706545_kseg1971    0    

4

1С 7.7 и новый 1С:Контрагент

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

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

25.04.2022    1884    zhenyat    7    

6

Печать таблицы значений в 1С 7.7 при отладке

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

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

30.06.2021    4505    Zoltan_Black    11    

2

Установка принтера по умолчанию для 1С 7.7

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

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

1 стартмани

13.02.2019    13355    4    alsen    3    

4

Формирование строки json в 1С: 7.7

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

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

1 стартмани

10.12.2018    10189    malovandrey    5    

18

Как создать индикатор в 1С:Предприятии 7.7

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

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

1 стартмани

27.09.2016    18706    2    HAMMER_59    6    

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