Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Не работает бухгалтерский запрос через com-соединение

Не работает бухгалтерский запрос через com-соединение
Я
   eGorZZZ
 
10.11.16 - 12:49
Обе базы обычные, БП2.0, т.е. под 8.2
 
 
   eGorZZZ
 
1 - 10.11.16 - 12:51
код запроса
[code]
    СписокНоменклатуры = V8.NewObject("СписокЗначений");
    Для каждого ОстатокНоменклатуры из ОстаткиНоменклатуры Цикл
        ОстатокНоменклатуры.Остаток = ОстатокНоменклатуры.Остаток*(-1);
        НайденнаяНоменклатура = V8.Справочники.Номенклатура.НайтиПоКоду(ОстатокНоменклатуры.Код);
        Если НЕ НайденнаяНоменклатура.Пустая() Тогда
            СписокНоменклатуры.Добавить(НайденнаяНоменклатура.Ref);
        КонецЕсли;
    КонецЦикла;
    
    олеЗапрос = V8.NewObject("Query");
    олеЗапрос.Текст = 
        "ВЫБРАТЬ
        |    Номенклатура.Код,
        |    Номенклатура.Ссылка КАК Товар,
        |    ХозрасчетныйОстатки.КоличествоОстатокДт КАК Остаток
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Остатки(
        |            &Дата,
        |            Счет = &Счет,
        |            &ВидыСубконто,
        |            Организация = &Организация
        |                И Субконто1 В (&Товары)) КАК ХозрасчетныйОстатки
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
        |        ПО ХозрасчетныйОстатки.Субконто1 = Номенклатура.Ссылка
        |ГДЕ
        |    ХозрасчетныйОстатки.КоличествоОстатокДт > 0
        |
        |СГРУППИРОВАТЬ ПО
        |    ХозрасчетныйОстатки.Субконто1,
        |    Номенклатура.Код,
        |    Номенклатура.Ссылка,
        |    ХозрасчетныйОстатки.КоличествоОстатокДт";
 
    олеЗапрос.УстановитьПараметр("Счет", V8.ПланыСчетов.Хозрасчетный.НайтиПоНаименованию("ТоварыНаСкладах"));
    олеЗапрос.УстановитьПараметр("ВидыСубконто", V8.ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию("Номенклатура"));
    олеЗапрос.УстановитьПараметр("Организация", V8.Справочники.Организации.НайтиПоРеквизиту("ИНН",ОрганизацияКонтрагент.ИНН));
    олеЗапрос.УстановитьПараметр("Товары", СписокНоменклатуры);
    олеЗапрос.УстановитьПараметр("Дата", ДатаКон);
    олеОстаткиНоменклатуры = олеЗапрос.Выполнить().Выгрузить();
[/code]
таблица получается пустая, ошибок нет - ниччё не понимаю...
   DrShad
 
2 - 10.11.16 - 12:57
а параметры все заполнены?
   Ёпрст
 
3 - 10.11.16 - 12:57
Список номенклатуры заполнен не элементами сторонней базы
   eGorZZZ
 
4 - 10.11.16 - 12:59
(2) да, вроде всё заполнено
(3) формирование списка - выше - поиск по коду в удаленной, если найден, то добавляется
   Cyberhawk
 
5 - 10.11.16 - 13:00
Сделай правое соединение и убедись, что остаток не больше нуля по всем позициям
   DrShad
 
6 - 10.11.16 - 13:00
(4) так вроде или заполнено?
   eGorZZZ
 
7 - 10.11.16 - 13:02
есть сомнения по поводу правильности параметров "Счет" и "ВидыСубконто", по синтаксису вроде всё нормально, и ошибок нет - с бух.запросами через COM пока ещё не работал, первый опыт.
   eGorZZZ
 
8 - 10.11.16 - 13:05
(5) там свыше 300 строк номенклатуры, хотя бы по одной должен быть + остаток
   DrShad
 
9 - 10.11.16 - 13:05
а вот это вообще для чего?
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
        |        ПО ХозрасчетныйОстатки.Субконто1 = Номенклатура.Ссылка
   DrShad
 
10 - 10.11.16 - 13:06
каков тайный смысл?
 
 Рекламное место пустует
   eGorZZZ
 
11 - 10.11.16 - 13:09
(9)(10) - в принципе, можно и без этого - для получения кода номенклатуры и самой ссылки на справочник номенклатура для дальнейшей обработки таблицы, хотя, конечно, можно и из Субконто1 это выдернуть, согласен
   eGorZZZ
 
12 - 10.11.16 - 13:17
убрал таблицу Номенклатура с левым соединением - результат пока тот же
   Ёпрст
 
13 - 10.11.16 - 13:18
убери, для начала, фильтр по субконто.
   Ёпрст
 
14 - 10.11.16 - 13:18
есть че ?
   vicof
 
15 - 10.11.16 - 13:18
Интересно, при чем здесь бухзапросы
   eGorZZZ
 
16 - 10.11.16 - 13:23
(14) убрал - снова 0 строк
   eGorZZZ
 
17 - 10.11.16 - 13:24
сейчас запрос вообще так выглядит:
        "ВЫБРАТЬ
        |    ХозрасчетныйОстатки.Субконто1.Код,
        |    ХозрасчетныйОстатки.Субконто1.Ссылка,
        |    ХозрасчетныйОстатки.КоличествоОстатокДт КАК Остаток
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Остатки(
        |            &Дата,
        |            Счет = &Счет,
        |            &ВидыСубконто,
        |            Организация = &Организация) КАК ХозрасчетныйОстатки
//        |                И Субконто1 В (&Товары)) КАК ХозрасчетныйОстатки

        |ГДЕ
        |    ХозрасчетныйОстатки.КоличествоОстатокДт > 0
        |
        |СГРУППИРОВАТЬ ПО
        |    ХозрасчетныйОстатки.Субконто1,
        |    ХозрасчетныйОстатки.КоличествоОстатокДт";
   Ёпрст
 
18 - 10.11.16 - 13:26
(17) ну, теперь удаляй по-одному параметру, пока не найдешь проблемный, далее думать как с этим жить дальше
   Ёпрст
 
19 - 10.11.16 - 13:26
и это, мот того, счет в иерархии(счет) смотреть хотя бы ?
   Ёпрст
 
20 - 10.11.16 - 13:26
а не просто на равенство его проверять
   eGorZZZ
 
21 - 10.11.16 - 13:28
у 41.01 субсчетов нет, такой же запрос не по com-соединению работает железно
   eGorZZZ
 
22 - 10.11.16 - 14:27
В общем, разобрался я с проблемой:
Дело было в счёте, нужно было его не по наименованию искать для задания в параметрах, а по коду. Все остальные параметры заданы были верно :)
   DrShad
 
23 - 10.11.16 - 14:55
(22) и не по наименованию и не по коду, а использовать как предопределенный


капец
   eGorZZZ
 
24 - 10.11.16 - 18:00
(23) Если ты имеешь ввиду так:
олеЗапрос.УстановитьПараметр("Счет", V8.ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);
то так тоже не работало
   Михаил Козлов
 
25 - 10.11.16 - 18:13
(24) Не пробовали в виртуальной таблице написать: Счет = ПланСчетов.Хозрасчетный.ТоварыНаСкладах,?
   Михаил Козлов
 
26 - 10.11.16 - 18:14
(25) Виноват: ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладах).
   eGorZZZ
 
27 - 12.11.16 - 02:41
(26) В принципе, всё уже работает с поиском по коду, но идея интересная, попробую - отпишусь, спасибо!
Наткнулся на другую забавную ситуацию: код у справочника номенклатуры - текстовый, определённой длины (пусть будет 12 знаков), но, если брать тот же код через Субконто, то он по значению, если откинуть все пробелы, совпадает, но вот длина его существенно больше, что-то вроде 30-ти знаков, в итоге сравнивать напрямую эти коды бессмысленно.
У меня, в принципе, задача стояла простая - получить минуса по товарам в одной базе, затем сделать запрос по полученному списку номенклатуры в другую, и, если товар на остатке есть, то требуемое количество (либо сколько есть) в первой базе поставить на приход, а во второй его списать (продажа собственной фирме), ну а оставшиеся минуса поставить на приход от "левой" фирмы (это уже головная боль руководства, если воздухом торгуют). В целом, всё уже реализовано.
   eGorZZZ
 
28 - 12.11.16 - 02:45
27+ вот только видимо всё же
ЗНАЧЕНИЕ(ПланЫСчетов.Хозрасчетный.ТоварыНаСкладах).


Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует