ТурбоМД: решение проблемы загрузки мокселей Ключевые слова: ТурбоМД, TurboMD, Моксель, динамическая, загрузка
ВК ТурбоМД (Книга знаний: OpenConf: пишем скрипты для конфигуратора 1С 7.7 (статья)) позволяет работать с динамической загрузкой модулей и форм.
С выгруженными мокселями(шаблонами таблиц) он работать не умеет.
Для решения проблемы подгрузки шаблонов MXL, выгруженных с помощью скрипта TurboMD.vbs используйте
следующую технику.
Вам понадобится ВК 1С++ (www.1cpp.ru) версии 2.0.2:
Создайте класс-наследник от Таблица с методом
class ТаблицаТМБ = ТаблицаТМБ.ert: Таблица
{
Число ИсходнаяТаблица (Строка Имя, Строка Путь="");
}
Функция ИсходнаяТаблица(Имя, Путь) Экспорт
ВнешняяФорма = Путь;
Если (ПустаяСтрока(ВнешняяФорма) = 1) И (ФС.СуществуетФайл(Имя) = 0) Тогда
Если ПустаяСтрока(глИмяТекущегоОбъекта) = 0 Тогда
ВнешняяФорма = СокрЛП(КаталогИБ())+"unpack\" + СтрЗаменить(глИмяТекущегоОбъекта,".","\") + "\";
КонецЕсли
КонецЕсли;
Сообщить(ВнешняяФорма + Имя + ".mxl");
Рез = Этот().ПолучитьБазовыйКласс("Таблица").ИсходнаяТаблица(ВнешняяФорма + Имя + ".mxl");
Возврат Рез;
КонецФункции // ИсходнаяТаблица()
В глобальном модуле добавьте:
Перем глИмяТекущегоОбъекта Экспорт;
//******************************************************************************
// Предопределенная процедура
//
Процедура ПриЗагрузкеФормы(ИмяОбъекта)
глИмяТекущегоОбъекта = ИмяОбъекта;
КонецПроцедуры
//******************************************************************************
// Предопределенная процедура
//
Процедура ПослеЗакрытия(Конт)
глИмяТекущегоОбъекта = "";
КонецПроцедуры
Использование:
Таб = СоздатьОбъект("ТаблицаТМБ");
Таб.ИсходнаяТаблица("Печать");
Теперь метод ИсходнаяТаблица будет пытаться загрузить шаблон, выгруженный с помощью скрипта ТубоМД::UnloadCurrentWnd.
Что не сделано/не протестировано:
1) Обработка нескольких открытых форм
2) Сравнение дат МД-шика и выгруженного мокселя
3) Еще что-то :-) |