Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Работа с формекс без глобального модуля , Когда ГМ закрыт а нужен Формекс          
Sharzem Подменю пользователя
сообщение 20.02.13, 14:06
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

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

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

Может кто-то поделится опытом (подскажет) как возможно использование Formex без прописки в ГМ. Интересует именно Раскраска таблиц значений. Где не искал подобного не нашел.


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

Ardi Подменю пользователя
сообщение 20.02.13, 15:23
Сообщение #2

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

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


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

XBrut Подменю пользователя
сообщение 20.02.13, 15:39
Сообщение #3

Статус
**********
Группа: Пользователи
Сообщений: 1543
Спасибо сказали: 254 раз
Рейтинг: 0

Если не ошибаюсь, в документации написано , что следует инициализировать в глобальном модуле.
Помню что интересовался именно этим вопросом, и после копания на форумах сделал вывод, что это важно с точки зрения разработчиков.
(аргументацию не помню... возможно из за того, что не следует загружать одну компоненту несколько раз)
Хотя у меня работало из внешней обработки полностью smile.gif

Спасибо сказали: Sharzem,

Sharzem Подменю пользователя
сообщение 20.02.13, 15:55
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

Цитата(XBrut @ 20.02.13, 15:39) *
Хотя у меня работало из внешней обработки полностью


Ну, а примером поделитесь ?


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

Sharzem Подменю пользователя
сообщение 20.02.13, 17:46
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

Спасибо всем кто принял участие. Замечание 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_ПланРаскраски=ПроверитьВид();
    КонецЦикла;
КонецПроцедуры//Сформировать()


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 27.04.24, 19:36
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!