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


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+ вот только видимо всё же
ЗНАЧЕНИЕ(ПланЫСчетов.Хозрасчетный.ТоварыНаСкладах).


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