Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с формекс без глобального модуля
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Sharzem
Здравствуйте, самописная ТИС 7.7., проблема в следующем:
Есть острая необходимость использования Formex во внешней обработке, при чем основным условием является запрет изменения глобального модуля. Интересует именно раскраска ТЗ.
С самим Formex никогда работать не приходилось. Где не искал подобного нигде не нашел.
Начал с
Процедура ПриОткрытии()
    Если ЗагрузитьВнешнююКомпоненту("formex.dll")=0 Тогда
        Предупреждение("Не удалось загрузить внешнюю компоненту FormEx.",10);
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
    
    Сервис = СоздатьОбъект("Сервис");
    Cервис.ВключитьРаскраскуТаблиц();
    Сервис.ИспользоватьПланРаскраски(1);
КонецПроцедуры

... в результате получил мат Cервис<<?>>.ВключитьРаскраскуТаблиц();
{D:\BAZATEST\EXTFORMS\РАССКРАСКАТЗ.ERT(22)}: Переменная не определена (Cервис)

Может кто-то поделится опытом (подскажет) как возможно использование Formex без прописки в ГМ. Интересует именно Раскраска таблиц значений. Где не искал подобного не нашел.
Ardi
Вот, поправил код:
Процедура ПриОткрытии()
    Если ЗагрузитьВнешнююКомпоненту("formex.dll")=0 Тогда
        Предупреждение("Не удалось загрузить внешнюю компоненту FormEx.",10);
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
    
    Сервис = СоздатьОбъект("Сервис");
    Сервис.ВключитьРаскраскуТаблиц();
    Сервис.ИспользоватьПланРаскраски(1);
КонецПроцедуры
XBrut
Если не ошибаюсь, в документации написано , что следует инициализировать в глобальном модуле.
Помню что интересовался именно этим вопросом, и после копания на форумах сделал вывод, что это важно с точки зрения разработчиков.
(аргументацию не помню... возможно из за того, что не следует загружать одну компоненту несколько раз)
Хотя у меня работало из внешней обработки полностью smile.gif
Sharzem
Цитата(XBrut @ 20.02.13, 15:39) необходимо зарегистрироваться для просмотра ссылки
Хотя у меня работало из внешней обработки полностью


Ну, а примером поделитесь ?
Sharzem
Спасибо всем кто принял участие. Замечание Xbrut по поводу загрузки несколько раз одной и той же компоненты было как нельзя к стати, поскольку как оказалось Formex при закрытии самой внешней обработки сам не выгружается и остается висеть до закрытия 1 С. Данное замечание принято во внимание и в следствии была произведена проверка на наличие сервиса.
Жму кнопки и ... выкладываю пример:
Функция ПолучитьЦвет(Красный = 0,Зеленый = 0,Синий = 0) Экспорт 
     Возврат Макс(0,Синий)*65536+Макс(0,Зеленый)*256+Макс(0,Красный);
КонецФункции

Функция ПроверитьВид()
    Возврат "(BRUSH_S["+ПолучитьЦвет(254,135,118)+"])()";//Только строка
КонецФункции//ПроверитьВид()


Процедура ПриОткрытии()
    Попытка //Попробую узнать загружена ли компонента
        Сервис = СоздатьОбъект("Сервис");
        Сервис.ВключитьРаскраскуТаблиц(0);
        Сервис.ИспользоватьПланРаскраски(1);
        Загружена = 1;
    Исключение
        Если ЗагрузитьВнешнююКомпоненту("formex.dll")=0 Тогда
            Загружена = 0;
        Иначе
            Сервис = СоздатьОбъект("Сервис");
            Сервис.ВключитьРаскраскуТаблиц(0);
            Сервис.ИспользоватьПланРаскраски(1);
            Загружена = 2;
        КонецЕсли;
    КонецПопытки;
    
    Если Загружена = 0 Тогда
        Предупреждение("Не удалось загрузить внешнюю компоненту FormEx.",10);
        СтатусВозврата(0);
        Возврат;
    ИначеЕсли Загружена = 1 Тогда
        Сообщить("Formex.dll загружена больше не загружаю");
    ИначеЕсли Загружена = 2 Тогда
        Сообщить("Загружен Formex.dll");
    КонецЕсли;
    
    
    ТЗ.НоваяКолонка("Первая");
    ТЗ.НоваяКолонка("Вторая");
    ТЗ.НоваяКолонка("Третья");
    ТЗ.НоваяКолонка("FormEx_ПланРаскраски");
    
    ТЗ.НоваяСтрока();
    ТЗ.FormEx_ПланРаскраски=ПроверитьВид();
    ТЗ.ВидимостьКолонки("FormEx_ПланРаскраски",0,);
КонецПроцедуры//ПриОткрытии()

Процедура ПослеОткрытия()
    ФормаРасш = СоздатьОбъект("РасширениеФормы");
    ФормаРасш.РаскрашиватьТаблицу("ТЗ");
КонецПроцедуры//ПослеОткрытия()

Процедура Сформировать()
    к = 0;
    ТЗ.КоличествоСтрок(к);
    Для к = 1 по 20 Цикл
        ТЗ.НоваяСтрока();
        ТЗ.Первая=к;
        ТЗ.Вторая=к+1;
        ТЗ.Третья=к+2;
        ТЗ.FormEx_ПланРаскраски=ПроверитьВид();
    КонецЦикла;
КонецПроцедуры//Сформировать()
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.