Имя: Пароль:
1C
1С v8
Не выводится данные в отчёт СКД.
0 bplmeddy
 
23.05.17
09:53
Доброго времени суток.
Делаю отчёт на СКД по продажам (1С:Предприятие 8.3 (8.3.6.2237), не типовая конфигурация), и столкнулся с такой проблемой: если в условия запроса добавить условия отбора по дате - отчёт формируется совершенно пустой. Пробовал указывать и через МЕЖДУ и >=/<=, результат тот-же. Код запроса с условием:

ВЫБРАТЬ
    Продажи.Номенклатура,
    Продажи.Цена,
    Продажи.Количество,
    Продажи.Цена * Продажи.Количество КАК Сумма,
    Продажи.Регистратор,
    Продажи.Контрагент,
    Продажи.Склад,
    Продажи.Период
ИЗ
    РегистрНакопления.Продажи КАК Продажи
ГДЕ
    Продажи.Период >= &НачалоПериода
    И Продажи.Период <= &КонецПериода
{ГДЕ
    (Продажи.Склад = &Склад),
    (Продажи.Номенклатура.Родитель В ИЕРАРХИИ (&Категория)),
    (Продажи.Регистратор.Дата МЕЖДУ &НачалоПериода И &КонецПериода)}

Подскажите пожалуйста, в чём может быть причина? Спасибо.
1 bplmeddy
 
23.05.17
09:54
(0)  (Продажи.Регистратор.Дата МЕЖДУ &НачалоПериода И &КонецПериода) - прошу игнорировать, его там нет =)
2 Lexey_
 
23.05.17
09:54
(0) в параметрах виртуальной таблицы
3 bplmeddy
 
23.05.17
09:55
(2) Это не виртуальная таблица, мне нужно получать данные о регистраторе, а в вирт.таблице почему-то нет поля "Регистратор".
4 bplmeddy
 
23.05.17
09:56
(3) Потому и обращаюсь, напрямую к регистру
5 Lexey_
 
23.05.17
09:56
(3) точно, не увидел
6 HEKPOH
 
23.05.17
09:57
(0) "если в условия запроса добавить условия отбора по дате - отчёт формируется совершенно пустой"
нет записей в регистре за период?
7 HEKPOH
 
23.05.17
09:58
если это СКД, то почему
ГДЕ
    Продажи.Период >= &НачалоПериода
    И Продажи.Период <= &КонецПериода
не в фигурных скобках?
8 bplmeddy
 
23.05.17
09:58
(6) Есть конечно =)
9 DailyLookingOnA Sunse
 
23.05.17
09:59
(3)
В параметрах виртуальной таблицы нужно установить периодичность Регистратор.
10 bplmeddy
 
23.05.17
09:59
Я сначала грешил на время, но потом пробовал ставить вручную (00:00:00-23:59:59) и все равно ничего не выводит.
11 bplmeddy
 
23.05.17
10:00
(9) О_о. Сейчас попробую, одну секунду.
12 HEKPOH
 
23.05.17
10:01
(9) какой вирт. таблицы??? там физическая таблица
13 HEKPOH
 
23.05.17
10:01
аааа, сорри. там был совет)
14 bplmeddy
 
23.05.17
10:11
(9) Нет, к сожалению, результат тот-же. Перепроверил регистр - записи за необходимый период в нём есть.
15 DailyLookingOnA Sunse
 
23.05.17
10:16
(14)
СКД может менять запрос и параметры в окончательном запросе.
Поэтому параметры периода виртуальной таблицы лучше заключить в фигурные скобки.
{&НачалоПериода},{&КонецПериода}

+ там еще Склад и Категория в отборе, по ним есть данные?
16 bplmeddy
 
23.05.17
10:17
(15) " (Продажи.Регистратор.Дата МЕЖДУ &НачалоПериода И &КонецПериода)" - да, конечно.
17 bplmeddy
 
23.05.17
10:20
(15) В чём фишка - если убрать отбор по периоду, отбор по Категории и Складу происходит корректно, но как только добавляю период, отчёт ломается =(
18 AlvlSpb
 
23.05.17
10:25
(0) Регистр Продажи - оборотный, периодический. Выбирайте нужную виртуальную таблицу и в ее параметрах поставьте Периодичность Авто, появится Регистратор. Отбор по периоду делайте в вирт таблице (тут уж выбирайте Или в основном окне или в компоновке )
19 bplmeddy
 
23.05.17
10:26
(18) Ок, сейчас попробую.
20 AlvlSpb
 
23.05.17
10:27
(19) Тьфу черт. Привычка на автомате. Периодичность - Регистратор
21 Windyhead
 
23.05.17
10:36
В чем смысл такой строчки "Продажи.Регистратор.Дата" ??
Период записи отличается от даты Регистратора?
А если в будущем будет регистратор еще и составного типа?
22 bplmeddy
 
23.05.17
10:38
(21) Смотри (1) . Это были мои опыты.
23 bplmeddy
 
23.05.17
10:39
(16) Не то внёс )) Склад/Категория есть.
24 Windyhead
 
23.05.17
10:45
Мне кажется вся проблема в названии параметров
Замени &НачалоПериода и &КонецПериода например на &ДатаНач и  &ДатаКон. главное слово "Период" убери.
25 bplmeddy
 
23.05.17
10:55
Код:

ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Склад,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.ЦенаОборот,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.Регистратор,
    ПродажиОбороты.ЦенаОборот * ПродажиОбороты.КоличествоОборот КАК Сумма
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ПродажиОбороты
{ГДЕ
    (ПродажиОбороты.Номенклатура.Родитель В ИЕРАРХИИ (&Категория)),
    (ПродажиОбороты.Склад = &Склад)}

Всё взлетело, у меня оказывается тип регистра был "Остатки" (#facepalm).

Всем огромное спасибо за помощь, особенно AlvlSpb который в (18) ткнул носом в тип регистра, что и помогло решить проблему ) Все хорошего дня.
26 bplmeddy
 
23.05.17
10:55
(25) Всем* =)
27 HEKPOH
 
23.05.17
10:58
(25) это все прекрасно, но!
запросу из (0) совершенно фиолетово, какой тип регистра.
Так в чем же была ошибка в (0)?
28 bplmeddy
 
23.05.17
11:01
(27) Тогда не знаю, я думал что проблема как раз в типе регистра. Код запроса особо не отличается, подобным способом уже пробовал делать, но проблема не решалась. Так что для меня суть проблемы - большая загадка. Возможно кто-то более опытный сможет дать ответ на этот вопрос.
29 HEKPOH
 
23.05.17
11:11
(28) надо глянуть итоговый запрос, который выполняется. так быстрее всего найти ошибку
30 bplmeddy
 
23.05.17
11:15
(29) Итоговый запрос - (25)
31 HEKPOH
 
23.05.17
11:18
(30) нет)
итоговый запрос, получающийся из (0)
32 mehfk
 
23.05.17
11:18
(30) Вот за это
{ГДЕ
    (ПродажиОбороты.Номенклатура.Родитель В ИЕРАРХИИ (&Категория)),
    (ПродажиОбороты.Склад = &Склад)}

нужно разжаловать обратно в дворники
33 AlvlSpb
 
23.05.17
11:31
(30) отчасти прав (32) Если уж нужен отбор, то делайте его в вирт таблице

ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Склад,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.ЦенаОборот,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.Регистратор,
    ПродажиОбороты.ЦенаОборот * ПродажиОбороты.КоличествоОборот КАК Сумма
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор,ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Склад,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.ЦенаОборот,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.Регистратор,
    ПродажиОбороты.ЦенаОборот * ПродажиОбороты.КоличествоОборот КАК Сумма
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор,{(Склад), (Номенклатура.Родитель)} ) КАК ПродажиОбороты
34 AlvlSpb
 
23.05.17
11:32
(33) Глюк какой-то

ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Склад,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.ЦенаОборот,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.Регистратор,
    ПродажиОбороты.ЦенаОборот * ПродажиОбороты.КоличествоОборот КАК Сумма
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор,{(Склад), (Номенклатура.Родитель)} ) КАК ПродажиОбороты
35 bplmeddy
 
23.05.17
11:46
(32) Ок, как Вы реализуете возможность отбора если условие заполнено, и не учитывать условие если значение пустое, через параметры вирт.таблицы ?
36 AlvlSpb
 
23.05.17
11:49
(35) фигурные скобки в параметрах вирт таблицы показывают, что это не обязательный параметр, а элемент отбора
37 AlvlSpb
 
23.05.17
11:52
(35) А то что вы написали в (32) не имеет ни малейшего смысла в вашем случае. С тем же успехом вы можете в настройках указать отбор по складу и Номенклатура.родитель и сделать их доступными пользователю. Это абсолютно одинаково.