Имя: Пароль:
1C
1С v8
Фоновые задания
0 pepers
 
25.12.16
11:36
Добрый день.
Сделал фоновое задание отладил его внешней обработкой все работает, помещаю код в общий модуль не работает. В обработке два запроса первым запросом получаем выборки для второго запроса. Если первый запрос пустой тогда фоновое задание отрабатывает корректно, но если есть значения в первом запросе то второй запрос не отрабатывается, либо параметры не передаются га сервер. Подскажите что делаю не так?
1 Галахад
 
гуру
25.12.16
11:40
Наверное где-то в коде ошибка. :-)
2 pepers
 
25.12.16
11:45
Код процедуры выглядит вот так
Запрос = Новый Запрос;
Запрос.Текст  = "ВЫБРАТЬ ПЕРВЫЕ 1
                |    Neva_НастройкиДляФонЗаданий.АдресСервера,
                |    Neva_НастройкиДляФонЗаданий.БазаНаСервере,
                |    Neva_НастройкиДляФонЗаданий.Номенклатура.Ссылка КАК Номенклатура,
                |    Neva_НастройкиДляФонЗаданий.Номенклатур КАК НоменклатурФ
                |ИЗ
                |    РегистрСведений.Neva_НастройкиДляФонЗаданий КАК Neva_НастройкиДляФонЗаданий";
                ТЗ = Запрос.Выполнить().Выгрузить();
                //Пока выборка.Следующий()цикл
                //    ВыборкаНоменклатура =  выборка.Номенклатура;
                //КонецЦикла;
        СоединениеSQL = Новый ComObject("ADODB.Connection");
        СоединениеSQL.ConnectionString ="DRIVER=SQL Server;SERVER="+тз[0].АдресСервера+";Trusted_connection=yes;DATABASE="+тз[0].БазаНаСервере+";UseProcForPrepare=0";
            СоединениеSQL.Open();
            
            //Исключение
    //КонецПопытки;
    
    Если тз[0].НоменклатурФ = Истина тогда    
    попытка    
        
        СтрокаВыгрузки = "";
        СтрокаВыгрузки = "<Справочник_Номенклатура>";
        ТЗВыгрузка = новый ТаблицаЗначений;
        ТЗВыгрузка.Колонки.Добавить("Первый");
        ТЗВыгрузка.Колонки.Добавить("Код");
        ТЗВыгрузка.Колонки.Добавить("Артикул");
        ТЗВыгрузка.Колонки.Добавить("guid_Родителя");
        ТЗВыгрузка.Колонки.Добавить("Наименование");
        ТЗВыгрузка.Колонки.Добавить("ЕдиницаИзмерения");
        ТЗВыгрузка.Колонки.Добавить("guid_НоменклатурнаяГруппа");
        ТЗВыгрузка.Колонки.Добавить("guid");
        ТЗВыгрузка.Колонки.Добавить("НаименованиеПолное");
        ТЗВыгрузка.Колонки.Добавить("guidСтатьяБДР");
        ТЗВыгрузка.Колонки.Добавить("ПометкаУдаления");
        ТЗВыгрузка.Колонки.Добавить("Последний");
                
        ПараметрУсловие = ""  ;
        СтрокаСсылки = Справочники.Номенклатура.НайтиПоНаименованию(тз[0].Номенклатура).Ссылка;
        Если СтрокаСсылки = Справочники.Номенклатура.ПустаяСсылка() тогда
            ПараметрУсловие = ""  ;
        ИначеЕсли  СтрокаСсылки.Этогруппа  тогда
            
            ПараметрУсловие = " ГДЕ    Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка)"
        иначе
            ПараметрУсловие = " ГДЕ Номенклатура.Ссылка = &Ссылка";
            
        КонецЕсли;
        
        Запрос = Новый Запрос;
        ТекстЗапроса =
        "ВЫБРАТЬ
        |    Инт_ДополнительныеСвойстваСрезПоследних.Значение КАК СтатьяПДР,
        |    Инт_КлассификаторыЭлементы1.Ссылка КАК СтатьяПДРСсылка,
        |    ВложенныйЗапрос.Код КАК Код,
        |    ВложенныйЗапрос.Артикул КАК Артикул,
        |    ВложенныйЗапрос.Родитель КАК Родитель,
        |    ВложенныйЗапрос.ЭтоГруппа КАК ЭтоГруппа,
        
        |    ВложенныйЗапрос.Наименование КАК Наименование,
        |    ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
        |    ВложенныйЗапрос.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
        |    ВложенныйЗапрос.Ссылка КАК Ссылка
        |ИЗ
        |    (ВЫБРАТЬ
        |        Номенклатура.Код КАК Код,
        |        Номенклатура.Артикул КАК Артикул,
        |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
        
        |        Номенклатура.Наименование КАК Наименование,                            
        |        Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
        |        Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
        |        Номенклатура.Ссылка КАК Ссылка,
        |        Номенклатура.Родитель КАК Родитель
        |    ИЗ
        |        Справочник.Номенклатура КАК Номенклатура " +ПараметрУсловие+"  ) КАК ВложенныйЗапрос
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Инт_ДополнительныеСвойства.СрезПоследних(&ТекДата, Параметр.Наименование = &ПараметрПДР) КАК Инт_ДополнительныеСвойстваСрезПоследних
        |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Инт_КлассификаторыЭлементы КАК Инт_КлассификаторыЭлементы1
        |            ПО Инт_ДополнительныеСвойстваСрезПоследних.Значение = Инт_КлассификаторыЭлементы1.Ссылка
        |        ПО ВложенныйЗапрос.Ссылка = Инт_ДополнительныеСвойстваСрезПоследних.Элемент";
        
        Запрос.УстановитьПараметр("ТекДата", КонецДня(ТекущаяДата()));
        Запрос.УстановитьПараметр("ПараметрПДР", "Статья БДР");
        Запрос.УстановитьПараметр("Ссылка",СтрокаСсылки);
        Запрос.Текст = ТекстЗапроса;
        Результат = Запрос.Выполнить();
        ВыборкаДетальныеЗаписи = Результат.Выбрать();
        
        Пока ВыборкаДетальныеЗаписи.Следующий() цикл
                        
            Стр                 = ТЗВыгрузка.Добавить();
            
            Если  ВыборкаДетальныеЗаписи.ЭтоГруппа тогда
                Стр.Первый            = "<ЭтоГруппа ";
                пЕдиницаИзмерения     = "";
                пАртикул              = "";
                пНоменклатурнаяГруппа = "";
            иначе
                Стр.Первый        = "<Элемент ";
                пЕдиницаИзмерения = Строка(ВыборкаДетальныеЗаписи.ЕдиницаИзмерения);
                пАртикул = Строка(ВыборкаДетальныеЗаписи.Артикул);
                пНоменклатурнаяГруппа = Строка(ВыборкаДетальныеЗаписи.НоменклатурнаяГруппа.Ссылка.УникальныйИдентификатор());
            КонецЕсли;    
            
            Если Строка(ВыборкаДетальныеЗаписи.СтатьяПДРСсылка)<>""  тогда
                пguidСтатьяБДР = Строка(ВыборкаДетальныеЗаписи.СтатьяПДРСсылка.УникальныйИдентификатор())
            иначе
                пguidСтатьяБДР = "";                    
            КонецЕсли;
                        
            Стр.Код                  = Строка(ВыборкаДетальныеЗаписи.Код);
            Стр.Артикул              = пАртикул;
            Стр.guid_Родителя        = Строка(ВыборкаДетальныеЗаписи.Родитель.Ссылка.УникальныйИдентификатор());
            Стр.Наименование         = Строка(ВыборкаДетальныеЗаписи.Наименование);
            Стр.ЕдиницаИзмерения     = пЕдиницаИзмерения;
            Стр.guid_НоменклатурнаяГруппа = пНоменклатурнаяГруппа;
            Стр.guid                 = Строка(ВыборкаДетальныеЗаписи.Ссылка.УникальныйИдентификатор());
            Стр.НаименованиеПолное   = Строка(ВыборкаДетальныеЗаписи.Ссылка.НаименованиеПолное);
            Стр.guidСтатьяБДР        = пguidСтатьяБДР;
            Стр.ПометкаУдаления      = Строка(ВыборкаДетальныеЗаписи.Ссылка.ПометкаУдаления);
            Стр.Последний            = "1";
            
            
        КонецЦикла;        
        
        Если не тз[0].Номенклатура.ЭтоГруппа тогда
            Стр                   = ТЗВыгрузка.Добавить();
            Стр.Первый            = "<ЭтоГруппа ";
            пЕдиницаИзмерения     = "";
            пАртикул              = "";
            пНоменклатурнаяГруппа = "";
            пguidСтатьяБДР        = "";
            Стр.Код                  = Строка(СтрокаСсылки.Родитель.Код);
            Стр.Артикул              = пАртикул;
            Стр.guid_Родителя        = Строка(СтрокаСсылки.Родитель.Родитель.Ссылка.УникальныйИдентификатор());
            Стр.Наименование         = Строка(СтрокаСсылки.Родитель.Наименование);
            Стр.ЕдиницаИзмерения     = пЕдиницаИзмерения;
            Стр.guid_НоменклатурнаяГруппа = пНоменклатурнаяГруппа;
            Стр.guid                 = Строка(СтрокаСсылки.Родитель.Ссылка.УникальныйИдентификатор());
            Стр.НаименованиеПолное   = Строка(СтрокаСсылки.Родитель.НаименованиеПолное);
            Стр.guidСтатьяБДР        = пguidСтатьяБДР;
            Стр.ПометкаУдаления      = Строка(СтрокаСсылки.Родитель.Ссылка.ПометкаУдаления);
            Стр.Последний            = "1";

        КонецЕсли;    
        
        СтрокаВыгрузки = СтрокаВыгрузки+ПолучитьСтрокуВыгрузки(ТЗВыгрузка);
        СтрокаВыгрузки = СтрокаВыгрузки +"</Справочник_Номенклатура>";
            
        /////Запусуаем хранимую процедуру///////////////
        cmdADO = Новый COMОбъект ("ADODB.Command");
        cmdADO.ActiveConnection = СоединениеSQL;
        cmdADO.CommandTimeout = 0;
        cmdADO.CommandType = 4;
        cmdADO.CommandText = "srv.Download_Nomenclature";  
        Param1 = cmdADO.CreateParameter("@Reference", 203, 1, СтрДлина(СтрокаВыгрузки), СтрокаВыгрузки);    
        cmdADO.Parameters.Append(Param1);
        
        НаборЗаписей = cmdADO.Execute();
        lRetCode = cmdADO.Parameters(0).Value;
        ///Закончили выгрузку////////////////
        СтрокаСообщения = "Выгружен справочник Номенклатура";
        //Сообщить(СтрокаСообщения);
    Исключение
        СтрокаСообщения = "Справочник Номенклатура выгружен с ошибкой"+Символы.ПС+ОписаниеОшибки();        
        Сообщить(СтрокаСообщения);
    КонецПопытки;    
КонецЕсли;
3 h-sp
 
25.12.16
12:07
(2) ну отлдчиком пройдите, в каком месте ошибка
4 pepers
 
25.12.16
13:20
косяк в этом месте,  Если СтрокаСсылки = Справочники.Номенклатура.ПустаяСсылка() тогда
            ПараметрУсловие = ""  ;
        ИначеЕсли  СтрокаСсылки.Этогруппа  тогда
            
            ПараметрУсловие = " ГДЕ    Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка)"
        иначе
            ПараметрУсловие = " ГДЕ Номенклатура.Ссылка = &Ссылка";
            
        КонецЕсли;