Имя: Пароль:
1C
1С v8
Фоновое задание и директивы компиляции
0 Viktorilia
 
17.09.15
08:43
Есть задача.При открытии списка документа выполнять соединение с другой базой. Пока что это реализовано из формы списка, остальные действия при записи документа выполняются в подписке на событие(перенос документа).сейчас есть глобальная переменная глV21Object, модуль фоновых заданий со сл. свойствами: на сервере, вызов сервера, на клиенте(обычное приложение), внешнее соединение.Вопрос как разбить все процедуры по созданию фонового задания чтобы все процедуры и переменные виделись.
Модуль обычного соединения: перем  глV21Object Экспорт;
Модуль внешнего соединения: перем  глV21Object Экспорт;
Модуль списка документа:
    МассивЗаданий=Новый Массив();
    
     Задание=ФоновыеЗадания.Выполнить("МодульФоновыхЗаданий.COMСоединение");
    
     МассивЗаданий.Добавить(Задание);
     Попытка
     ФоновыеЗадания.ОжидатьЗавершения(МассивЗаданий);
     Исключение
     КонецПопытки;
     МассивЗаданий.Очистить();

Модуль фоновых заданий:
  Процедура COMСоединение() Экспорт
      
        
       ///-- если константа заполнена то создаем соеденение
       Если  ЗначениеЗаполнено(Константы.ПутьКБазеАвтовесов.Получить()) Тогда
            
          Если глV21Object=Неопределено Тогда          
           СтруктураПодключения = МодульРегламентныхЗаданий.ПолучитьСтруктуруПодключения_Авто(ПутьКБазе) ;
           глV21Object              = МодульРегламентныхЗаданий.ПодключитсяКИнформационнойБазе2(СтруктураПодключения);
                   Если глV21Object = Неопределено Тогда
                       Сообщить( "Ошибка подключения к базе данных!!!", СтатусСообщения.Важное ) ;
                       Возврат ;
                   КонецЕсли;
                   Сообщить( ""+ТекущаяДата() + " - Подключение к конфигурации "+глV21Object.Метаданные.Synonym+" выполнено успешно!" ) ;
             КонецЕсли;                   
                        КонецЕсли;
            
        КонецПроцедуры

В данный момент не видится константа.
1 Viktorilia
 
17.09.15
08:45
{ОбщийМодуль.МодульФоновыхЗаданий(10,89)}: Переменная не определена (ПутьКБазе)
           СтруктураПодключения = МодульРегламентныхЗаданий.ПолучитьСтруктуруПодключения_Авто(<<?>>ПутьКБазе) ;
2 ДенисЧ
 
17.09.15
08:47
обогиядумне.
Ну не увидит она твои переменные....
Разберись с видимостями различных модулёв..
И вообще - за глобальные переменные в клиент-сервере нужно бить не линейкой. И не по рукам.
3 Viktorilia
 
17.09.15
08:47
извиняюсь, ПутьКБазе = Константы.ПутьКБазеАвтовесов.Получить();
видимо удалила сама
4 Viktorilia
 
17.09.15
08:49
(2)ну у меня всего одна переменная ,объясните мне пожалуйста как это правильно реализовать?
5 ДенисЧ
 
17.09.15
08:51
(4) параметры сеанса или модуль с повторно возвращаемыми значениями.
А то, что переменная только одна - это значит, что ударов возжами на конюшне будет только 10. За каждую следующую - кличество увеличивается в геометрической прогрессии
6 ДенисЧ
 
17.09.15
08:51
Да и вообще - в последних версиях платформы ком-соединение живёт сохранённым 3-4 минуты. Оно тебе надо?
7 Viktorilia
 
17.09.15
08:52
(5) при создании параметра сеанса переменная будет видна во внешнем соединении?
8 Viktorilia
 
17.09.15
09:02
(6)загрузка списка документов долго проходит
9 Viktorilia
 
17.09.15
09:05
и как будет выглядеть параметр сеанса в данном случае?
    //Если ПараметрыСеанса.COMСоединениеСАвтовесовой=Истина Тогда
    //    
    //    перем  глV21Object Экспорт;
    //     
    //КонецЕсли;
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой