|
Простейший запрос, в консоле работает, в коде нет | ☑ | ||
---|---|---|---|---|
0
Kolaider
25.10.15
✎
15:00
|
Всем доброго времени суток, уже два дня ломаю голову. Простейший запрос, типа данных и параметры все совпадают, в консоле отрабатывает на ура, в моей обработке нет.
Ниже часть кода обработки: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | КомплектацияНоменклатурыКомплектующие.Ссылка, | КомплектацияНоменклатурыКомплектующие.Ссылка.Номенклатура КАК СкомплектНоменклатура |ИЗ | Документ.КомплектацияНоменклатуры.Комплектующие КАК КомплектацияНоменклатурыКомплектующие |ГДЕ | КомплектацияНоменклатурыКомплектующие.Ссылка.Дата > &МоментВремени | И КомплектацияНоменклатурыКомплектующие.Номенклатура В (&Номенклатура) | И КомплектацияНоменклатурыКомплектующие.Ссылка.Проведен = &Проведен"; Запрос.УстановитьПараметр("МоментВремени", ДатаДок); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Запрос.УстановитьПараметр("Проведен", Проведен); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если убираем параметр номенклатура, то запрос отрабатывает, следовательно дело в нем, параметр &номенклатура, это массив, ТипЭлемента СправочникСсылка.Номенклатура. ЗЫ Конфа УТ для Казахстана, на обычных формах. Господа профессионалы помогите плиз, край как срочно надо. |
|||
1
Fedor-1971
25.10.15
✎
15:10
|
(0) Запрос.УстановитьПараметр("Номенклатура", Номенклатура); - для начала поменяй имя переменной Номенклатура на что-нить другое, например, масНоменклатура, и покажи код, как заполняешь данный массив. Думается мне, что он у тебя пустой.
|
|||
2
Проф
25.10.15
✎
15:14
|
Зачем Запрос.УстановитьПараметр("Проведен", Проведен); ???
Может так подойдет | И КомплектацияНоменклатурыКомплектующие.Ссылка.Проведен |
|||
3
rphosts
25.10.15
✎
15:24
|
(2) ну может он отбирает исключительно непроведёные документы
|
|||
4
Kolaider
25.10.15
✎
15:25
|
(1) Параметр обзывал всяко разно, эффекта нет.
(2) И так и так делал, уже просто все возможные варианты перебирал |
|||
5
Kolaider
25.10.15
✎
15:26
|
(1) вот код
// Выберем номенклатуру до комплектации Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Реализованные.Номенклатура КАК Номенклатура, | Реализованные.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения, | Реализованные.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент, | Реализованные.ХарактеристикаНоменклатуры, | Реализованные.СерияНоменклатуры, | Реализованные.ДокументПоставки, | МАКСИМУМ(Полученные.КоличествоОстаток) КАК КоличествоПолученных, | МАКСИМУМ(Полученные.СуммаВзаиморасчетовОстаток) КАК СуммаПоступления, | СУММА(Реализованные.ВыручкаОстаток) КАК Выручка, | СУММА(Реализованные.КоличествоОстаток) КАК КоличествоРеализованных |ИЗ | РегистрНакопления.РеализованныеТовары.Остатки(&Дата, ДоговорКонтрагента = &ДоговорКонтрагента) КАК Реализованные | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыПолученные.Остатки(&Дата, ДоговорКонтрагента = &ДоговорКонтрагента) КАК Полученные | ПО (Полученные.Номенклатура = Реализованные.Номенклатура) | И (Полученные.ХарактеристикаНоменклатуры = Реализованные.ХарактеристикаНоменклатуры) | И (Полученные.СерияНоменклатуры = Реализованные.СерияНоменклатуры) | |СГРУППИРОВАТЬ ПО | Реализованные.Номенклатура, | Реализованные.ХарактеристикаНоменклатуры, | Реализованные.СерияНоменклатуры, | Реализованные.ДокументПоставки, | Реализованные.Номенклатура.ЕдиницаХраненияОстатков, | Реализованные.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент | |УПОРЯДОЧИТЬ ПО | Номенклатура"; Запрос.УстановитьПараметр("Дата", ДатаДок); Запрос.УстановитьПараметр("ДоговорКонтрагента", ДоговорКонтрагента); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Номенклатура = Новый Массив; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Номенклатура.Добавить(ВыборкаДетальныеЗаписи.Номенклатура.Ссылка); КонецЦикла; |
|||
6
rphosts
25.10.15
✎
15:27
|
(4) ну покажи хоть что у тебя в парамтрах
|
|||
7
Kolaider
25.10.15
✎
15:28
|
Массив не пустой, Циклом для каждого обходится на ура, даже пытался в цикл затолкать запрос и для каждого элемента номенклатуры отдельно выполнять, все равно не выходит
|
|||
8
Kolaider
25.10.15
✎
15:31
|
Запрос.УстановитьПараметр("МоментВремени", ДатаДок); - Дата начала периода
Запрос.УстановитьПараметр("Номенклатура", Номенклатура); - Список номенклатуры по которой нужен отбор, массив. Без этого параметра, запрос отрабатывает. Запрос.УстановитьПараметр("Проведен", Проведен); - ну собственно Истина |
|||
9
Kolaider
25.10.15
✎
15:32
|
(6) Или как показать надо было? Голова не варит уже
|
|||
10
rphosts
25.10.15
✎
15:34
|
(7) внутрь этого массива смотрели? Там тоже самое что в консоли передаете?
|
|||
11
Fedor-1971
25.10.15
✎
15:35
|
(8) Номенклатура.Количество() - сколько?
(9) тогда отдохни. Отладчиком проверь, что в массиве номенклатуры. |
|||
12
Kolaider
25.10.15
✎
15:35
|
(10) Да, тот же самый список ноенклатуры. Не может быть из за того что обработка внешняя?
|
|||
13
Kolaider
25.10.15
✎
15:37
|
(11) Количество 13, не могу отдохнуть, у нас 18-30, а завтра к 9 результат босам показать надо.
|
|||
14
Kolaider
25.10.15
✎
15:40
|
Вообще задача из определенного списка номенклатуры до комплектации, получить список номенклатуры, после комплектации, ну и дальше там по нему отчет уже строить, но вот не могу после комплектации получить и все тут.
|
|||
15
Fedor-1971
25.10.15
✎
15:41
|
(12) вроде должно отрабатывать.
Номенклатура.Добавить(ВыборкаДетальныеЗаписи.Номенклатура); - попробуй заполнять массив так. |
|||
16
Kolaider
25.10.15
✎
15:43
|
(15) И так тоже делал, И объект получал, И в массив из справочника по коду добавлял, ни в какую.
|
|||
17
Kolaider
25.10.15
✎
15:44
|
Может попробовать через регистр ПартииТоваровНаСкладах?, боюсь знаний не хватит.
|
|||
18
Записьдампа
25.10.15
✎
15:45
|
РАЗРЕШЕННЫЕ убери на всякий случай
|
|||
19
Проф
25.10.15
✎
15:45
|
мож так попробывать, если я конечно задачу верно понял
ВЫБРАТЬ РАЗРЕШЕННЫЕ КомплектацияНоменклатурыКомплектующие.Ссылка ПОМЕСТИТЬ ВТ_1 ИЗ Документ.КомплектацияНоменклатуры.Комплектующие КАК КомплектацияНоменклатурыКомплектующие ГДЕ КомплектацияНоменклатурыКомплектующие.Ссылка.Дата > &МоментВремени И КомплектацияНоменклатурыКомплектующие.Номенклатура В(&Номенклатура) И КомплектацияНоменклатурыКомплектующие.Ссылка.Проведен = &Проведен СГРУППИРОВАТЬ ПО КомплектацияНоменклатурыКомплектующие.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КомплектацияНоменклатуры.Номенклатура ИЗ ВТ_1 КАК ВТ_1 ЛЕВОЕ СОЕДИНЕНИЕ Документ.КомплектацияНоменклатуры КАК КомплектацияНоменклатуры ПО ВТ_1.Ссылка = КомплектацияНоменклатуры.Ссылка |
|||
20
rphosts
25.10.15
✎
15:45
|
(14) тебе массив нужен только что-бы его передать в другой массив?
|
|||
21
Fedor-1971
25.10.15
✎
15:50
|
(16) остановись на установке параметра Номенклатура и проверь содержание массива через [], переменную всё-таки назови как-то экзотически с многими цифрами что бы точно не совпала с чем-то ещё.
(17) Может лучше использовать не Остатки, а ОстаткиИОбороты? одним запросом получить остатки и движения по номенклатуре. |
|||
22
Fedor-1971
25.10.15
✎
15:54
|
21+ проверяй весь массив, может там где Null затесалось.
|
|||
23
Kolaider
25.10.15
✎
15:58
|
(18) Убирал
(19) Тот же результат, в консоле отрабатывает, в коде нет. (20) Понимаю что это плохо, но пока так, потом переделаю, просто надо срочно. (21) А можно поподробней? Как этим [] проверить? |
|||
24
Kolaider
25.10.15
✎
16:04
|
Если делать через регистр, то не получиться отобрать нужную мне партию по регистратору(((
|
|||
25
Fedor-1971
25.10.15
✎
16:05
|
(23) в отладчике останавливаешься на установке параметра Номенклатура и в табло пишешь Номенклатура[0] 1...до Номенклатура.Количество() и реально видишь что в каком элементе передано.
|
|||
26
Kolaider
25.10.15
✎
16:09
|
(25) Номенклатура[0] 285/75 R16 GTradial ADVENTURO M/T Автошины СправочникСсылка.Номенклатура
|
|||
27
Kolaider
25.10.15
✎
16:10
|
Понял, сча по всем пробегусь
|
|||
28
Kolaider
25.10.15
✎
16:14
|
(22) Не затесалось Null, может конфа глючит, или платформа? Ведь в консоле все норм работает. ТИС вроде недавно делал.
|
|||
29
rphosts
25.10.15
✎
16:15
|
(23) 3. что-бы не помещать результат запроса первого запроса во временную таблицу а во втором запросе пакета запросов использовать её а не извлекать из параметров?
|
|||
30
rphosts
25.10.15
✎
16:17
|
(25) а смысл? тип явно у всех будет один и тотже
в отладчике останавливаешься на установке параметра Номенклатура и в табло пишешь Номенклатура и нажимаешь F2 - смотришь весь массив |
|||
31
Fedor-1971
25.10.15
✎
16:21
|
(28) ДатаДок что содержит? Дата + время - тут не может быть проблемы? Проверь отладчиком. Может вопрос именно по времени?
|
|||
32
rphosts
25.10.15
✎
16:36
|
(31) разумеется тут может быть проблема но он писал что все параметры идентичны
|
|||
33
Fedor-1971
25.10.15
✎
16:40
|
(32) он мог внести в консоль 25/10/2015 23:59:59 а в обработке пытается выбрать на 00:00:00 и сидит горюет на номенклатуру думает.
|
|||
34
Kolaider
25.10.15
✎
16:46
|
(33) К сожелению выборку делаю с первого октября, а там куча доков, вот и надо мне их отсеять по номенклатуре
(29) Сижу пробую, не получается, так, даже в консоле ничего не показывает, но тут могут мои кривые руки сказываться. |
|||
35
FIXXXL
25.10.15
✎
16:53
|
попробуй в качестве параметра отбора нооменклатуры заполнить и передать не Массив, а СписокЗначений
|
|||
36
Kolaider
25.10.15
✎
17:14
|
(35) Пробовал, эффект тот же. Вообще какаято странная беда, даже если я делаю не через массив, а через элемент, то не работает. А вот если к примеру тот же массив заполняю вручную, то работает. При этом значения элементов массива одинаковы.
|
|||
37
FIXXXL
25.10.15
✎
17:20
|
вставь кусок кода, где формируешь массив прям после запроса, но до установки параметров
|
|||
38
FIXXXL
25.10.15
✎
17:21
|
сделай на форме обработки поле выбора Номенклатура и его передай в запрос
|
|||
39
FIXXXL
25.10.15
✎
17:28
|
и эта, кэш почисти :)
|
|||
40
Kolaider
25.10.15
✎
18:02
|
(37) не работает (38) Работает
|
|||
41
FIXXXL
25.10.15
✎
19:09
|
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Номенклатура.Добавить(ВыборкаДетальныеЗаписи.Номенклатура.Ссылка); КонецЦикла; тут ВыборкаДетальныеЗаписи.Номенклатура.Ссылка убери ".Ссылка" оно точно не надо дело скорее не в этом, но... |
|||
42
Kolaider
25.10.15
✎
19:15
|
Господа, всем спасибо за участие! Я сам олень, нашел в чем причина. И как это всегда и бывает тупо не ту номенклатуру выбирал((( Два дня улетели для познания очевидного...
Хотя казалось вроде все проверил на 3 раза, ладно урок на будущее. Спасибо всем неравнодушным, извиняйте(мне стыдно...). |
|||
43
Фокусник
25.10.15
✎
19:21
|
(42) чтобы наверняка, лучше сверять в отладчике по кодам справочников (если они уникальны)
|
|||
44
snegovik
25.10.15
✎
19:22
|
(42) Бывает) Я следил за этим детективом))
|
|||
45
FIXXXL
25.10.15
✎
19:22
|
(42) отдохнуть надо по-любому :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |