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