Имя: Пароль:
1C
1С v8
Простейший запрос, в консоле работает, в коде нет
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) отдохнуть надо по-любому :)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший