Имя: Пароль:
1C
1С v8
Не выполняется запрос через COM
0 George Wheels
 
20.01.16
09:13
Собственно сабж.

&НаСервере
Процедура ЗагрузитьОборотыНаСервере()
    Попытка
        БП = Новый COMОбъект("V83.Application");
        СтрокаПодключения = Константы.ПутьКБазеБП.Получить() + ";Usr=""" + Константы.ПользовательБП.Получить() + """;Pwd=""" + Константы.ПарольБП.Получить() + """";
        БП.Connect(СтрокаПодключения);
    Исключение
        Если БП <> Неопределено Тогда
            БП.ЗавершитьРаботуСистемы(Ложь);
            Возврат;
        КонецЕсли;
    КонецПопытки;
    
    Запрос = БП.NewObject("Запрос");
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВозвратИзЭксплуатации.Период КАК Период,
    |    ВозвратИзЭксплуатации.Субконто1.Код КАК Код,
    |    ВозвратИзЭксплуатации.Субконто1 КАК Номенклатура,
    |    ВозвратИзЭксплуатации.Субконто1.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения,
    |    ВозвратИзЭксплуатации.Субконто1.ГруппаТМЦ КАК ГруппаТМЦ,
    |    ВозвратИзЭксплуатации.СуммаОборотДт КАК Сумма,
    |    ВозвратИзЭксплуатации.КоличествоОборотДт КАК Количество,
    |    ""ВозвратИзЭксплуатации"" КАК ВидДвиженияНоменклатуры
    |
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, Счет В ИЕРАРХИИ (&Счет10),,, КорСчет В (&СписокСчетовЗатрат),) КАК ВозвратИзЭксплуатации
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ПриобретеноУДругих.Период,
    |    ПриобретеноУДругих.Субконто1.Код,
    |    ПриобретеноУДругих.Субконто1,
    |    ПриобретеноУДругих.Субконто1.БазоваяЕдиницаИзмерения,
    |    ПриобретеноУДругих.Субконто1.ГруппаТМЦ,
    |    ПриобретеноУДругих.СуммаОборотДт,
    |    ПриобретеноУДругих.КоличествоОборотДт,
    |    ""ПриобретеноУДругих""
    |
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, Счет В ИЕРАРХИИ (&Счет10),,, КорСчет В (&СписокСчетовУДругих),) КАК ПриобретеноУДругих
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ПриобретеноУФилиалов.Период,
    |    ПриобретеноУФилиалов.Субконто1.Код,
    |    ПриобретеноУФилиалов.Субконто1,
    |    ПриобретеноУФилиалов.Субконто1.БазоваяЕдиницаИзмерения,
    |    ПриобретеноУФилиалов.Субконто1.ГруппаТМЦ,
    |    ПриобретеноУФилиалов.СуммаОборотДт,
    |    ПриобретеноУФилиалов.КоличествоОборотДт,
    |    ""ПриобретеноУФилиалов""
    |
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, Счет В ИЕРАРХИИ (&Счет10),,, КорСчет В (&СписокСчетовУФилиалов),) КАК ПриобретеноУФилиалов
    |
    |
    |
    |
    |";
    
    Запрос.УстановитьПараметр("НачалоПериода", БП.NewObject("Граница", НачалоДня(Объект.НачалоПериода), БП.ВидГраницы.Включая));
    Запрос.УстановитьПараметр("КонецПериода", БП.NewObject("Граница", КонецДня(Объект.КонецПериода), БП.ВидГраницы.Включая));
    Запрос.УстановитьПараметр("Счет10", БП.ПланыСчетов.Хозрасчетный.Материалы);
    
    СписокСчетовЗатрат = БП.NewObject("СписокЗначений");
    СписокСчетовЗатрат.Добавить(БП.ПланыСчетов.Хозрасчетный.ОсновноеПроизводство); //20.10
    СписокСчетовЗатрат.Добавить(БП.ПланыСчетов.Хозрасчетный.ПрочаяРеализация); //20.90
    СписокСчетовЗатрат.Добавить(БП.ПланыСчетов.Хозрасчетный.ВспомогательныеПроизводства); //23
    СписокСчетовЗатрат.Добавить(БП.ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходыОСП); //26.20
    СписокСчетовЗатрат.Добавить(БП.ПланыСчетов.Хозрасчетный.ОбслуживающиеПроизводства); //29
    СписокСчетовЗатрат.Добавить(БП.ПланыСчетов.Хозрасчетный.Сч9213); //92.13
    СписокСчетовЗатрат.Добавить(БП.ПланыСчетов.Хозрасчетный.Сч9253); //92.53
    СписокСчетовЗатрат.Добавить(БП.ПланыСчетов.Хозрасчетный.Сч9215); //92.15
    Запрос.УстановитьПараметр("СписокСчетовЗатрат", СписокСчетовЗатрат);
    
    СписокСчетовУДругих = БП.NewObject("СписокЗначений");
    СписокСчетовУДругих.Добавить(БП.ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиВнешними); //60.11
    СписокСчетовУДругих.Добавить(БП.ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами); //71.10
    Запрос.УстановитьПараметр("СписокСчетовУДругих", СписокСчетовУДругих);
    
    СписокСчетовУФилиалов = БП.NewObject("СписокЗначений");
    СписокСчетовУФилиалов.Добавить(БП.ПланыСчетов.Хозрасчетный.РасчетыПоТекущимОперациям); //79.20
    СписокСчетовУФилиалов.Добавить(БП.ПланыСчетов.Хозрасчетный.ПокупныеИзделия); //41.44
    Запрос.УстановитьПараметр("СписокСчетовУФилиалов", СписокСчетовУФилиалов);
    
    Попытка
        ТЗ = Запрос.Выполнить().Выгрузить();
    Исключение
        Если БП <> Неопределено Тогда
            БП.ЗавершитьРаботуСистемы(Ложь);
            Возврат;
        КонецЕсли;
    КонецПопытки;
1 Stim
 
20.01.16
09:17
вроде ошибок нет.
выборка-то хоть выполняется?

и попробуй "ВЫБРАТЬ РАЗРЕШЕННЫЕ
2 Artful Den
 
20.01.16
09:18
Ошибку пишет или что?
3 George Wheels
 
20.01.16
09:21
Все списки счетов заполняются. Текст запроса есть. При выполнении

ТЗ = Запрос.Выполнить().Выгрузить();

вываливается в исключение. ИнформацияОбОшибке() пусто.
4 George Wheels
 
20.01.16
09:25
(1) ВЫБРАТЬ РАЗРЕШЕННЫЕ попробовал не помагает. RLS нет.

Сейчас обратил внимание, что при подключении зачем-то появляется окно БП.
5 Artful Den
 
20.01.16
09:26
а если не ТЗ = Запрос.Выполнить().Выгрузить(), а Запрос.Выполнить() в исключение тоже валится?
6 ibreiter
 
20.01.16
09:27
В родной базе выполняется запрос?
7 Lexey_
 
20.01.16
09:27
(3) ИнформацияОбОшибке() в коде присутствует или просто в отладчике смотришь?
8 boozin
 
20.01.16
09:28
попробуй запустить свой запрос через консоль в той базе, к которой ты обращаешься через COM
9 salvator
 
20.01.16
09:28
(4) А если не аппликейшн вызывать, а коннектор?
10 boozin
 
20.01.16
09:29
+(8) возможно неправильные названия полей
11 George Wheels
 
20.01.16
09:30
(6) Да.
(7) В отладчике. Сейчас попробую в коде.
12 boozin
 
20.01.16
09:32
Не прочитал (4). У меня такое было. Открывается БП и задается вопрос, например, про обновление устаревшей конфы и ждет ответа, а потом слетает по аймауту, т.е. до запроса даже не доходит
13 Stim
 
20.01.16
09:33
>>Application

кстати, а почему не ComConnector?
14 Кедр
 
20.01.16
09:38
для запросов через сом используй английские аналоги методов - Запрос.Execute().Unload();
15 hhhh
 
20.01.16
09:48
(14) с русскими всё тоже работает
16 George Wheels
 
20.01.16
09:51
Щьёрт побьери. У справочника Номенклатура теперь вместо БазоваяЕдиницаИзмерения просто ЕдиницаИзмерения. Спасибо (10). Почему сам сразу не проверил не знаю. Хотя знаю. Сегодня наша бухгалтерия сдаёт налоговый учет в головную организацию. Последние две недели были тяжёлыми.