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