Имя: Пароль:
1C
1С v8
Разный результат в консоли запросов и СКД
0 nemoxp
 
13.04.20
14:23
платформа 8.3.16.1148
конфигурация Комплексная Автоматизация 2.4.11.67

Есть запрос, который правильно работает в консоли запросов с отбором по сегменту номенклатуры и не работает в отчете СКД:

"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
|       Сегменты.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ ОтборПоСегментуНоменклатуры
|ИЗ
|       РегистрСведений.НоменклатураСегмента КАК Сегменты
|ГДЕ
|       Сегменты.Сегмент В(&СегментыНоменклатуры)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|       Набор.Номенклатура КАК Номенклатура,
|       СУММА(Набор.ВНаличии) КАК ВНаличии,
|       СУММА(Набор.ВРезервеСоСклада) КАК ВРезервеСоСклада,
|       СУММА(Набор.ВРезервеПодЗаказ) КАК ВРезервеПодЗаказ,
|       СУММА(Набор.КОтгрузке) КАК КОтгрузке,
|       СУММА(Набор.ВНаличии) - СУММА(Набор.ВРезервеСоСклада) - СУММА(Набор.ВРезервеПодЗаказ) - СУММА(Набор.КОтгрузке) КАК Доступно,
|       ВЫБОР
|               КОГДА СУММА(Набор.ВНаличии) - СУММА(Набор.ВРезервеСоСклада) - СУММА(Набор.ВРезервеПодЗаказ) - СУММА(Набор.КОтгрузке) > 0
|                       ТОГДА ИСТИНА
|               ИНАЧЕ ЛОЖЬ
|       КОНЕЦ КАК Наличие
|ПОМЕСТИТЬ ВтСвободныеОстатки
|ИЗ
|       (ВЫБРАТЬ
|               Таблица.Номенклатура КАК Номенклатура,
|               Таблица.ВНаличииОстаток КАК ВНаличии,
|               Таблица.ВРезервеСоСкладаОстаток КАК ВРезервеСоСклада,
|               Таблица.ВРезервеПодЗаказОстаток КАК ВРезервеПодЗаказ,
|               0 КАК КОтгрузке
|       ИЗ
|               РегистрНакопления.СвободныеОстатки.Остатки(, ) КАК Таблица
|      
|       ОБЪЕДИНИТЬ ВСЕ
|      
|       ВЫБРАТЬ
|               Таблица.Номенклатура,
|               Таблица.КОтгрузкеОстаток,
|               0,
|               0,
|               Таблица.КОтгрузкеОстаток
|       ИЗ
|               РегистрНакопления.ТоварыКОтгрузке.Остатки(, ) КАК Таблица) КАК Набор
|
|СГРУППИРОВАТЬ ПО
|       Набор.Номенклатура
|
|ИНДЕКСИРОВАТЬ ПО
|       Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|       тблНоменклатура.Родитель КАК Группа,
|       тблНоменклатура.Ссылка КАК Ссылка,
|       тблНоменклатура.Код КАК Код,
|       тблНоменклатура.Артикул КАК Артикул,
|       тблНоменклатура.НаименованиеПолное КАК НаименованиеПолное,
|       ЕСТЬNULL(тблНовинки.Новинка, ЛОЖЬ) КАК Новинка,
|       ЕСТЬNULL(ВтСвободныеОстатки.Наличие, ЛОЖЬ) КАК Наличие,
|       тблНоменклатура.КоэффициентЕдиницыДляОтчетов КАК КоличествоВУпаковке,
|       тблЗаказы.ЖелаемаяДатаПоступления КАК ДатаПоступления,
|       ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
|       0 КАК КоличествоЗаказа,
|       0 КАК Сумма,
|       0 КАК ВесЗаказа,
|       0 КАК ОбъемЗаказа,
|       тблНоменклатура.ВесЧислитель * тблНоменклатура.КоэффициентЕдиницыДляОтчетов КАК ВесБруттоУпаковки,
|       тблНоменклатура.ОбъемЧислитель * тблНоменклатура.КоэффициентЕдиницыДляОтчетов КАК ОбъемУпаковки,
|       ЕСТЬNULL(тблВесаНетто.ВесНетто, 0) КАК ВесНеттоУпаковки,
|       тблШтрихкодыУпаковки.Штрихкод КАК ШтрихкодУпаковки,
|       тблШтрихкодыШт.Штрихкод КАК ШтрихкодШтуки,
|       ВтСвободныеОстатки.ВНаличии КАК ВНаличии,
|       ВтСвободныеОстатки.ВРезервеСоСклада КАК ВРезервеСоСклада,
|       ВтСвободныеОстатки.ВРезервеПодЗаказ КАК ВРезервеПодЗаказ,
|       ВтСвободныеОстатки.КОтгрузке КАК КОтгрузке,
|       ВтСвободныеОстатки.Доступно КАК Доступно
|ИЗ
|       Справочник.Номенклатура КАК тблНоменклатура
|               ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|                       НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка,
|                       НоменклатураДополнительныеРеквизиты.Значение КАК Новинка
|               ИЗ
|                       Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|               ГДЕ
|                       НоменклатураДополнительныеРеквизиты.Свойство.Имя = ""Новинка"") КАК тблНовинки
|               ПО тблНоменклатура.Ссылка = тблНовинки.Ссылка
|               ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|                       ЗаказыПоставщикамОстатки.Номенклатура КАК Номенклатура,
|                       ЗаказыПоставщикамОстатки.КОформлениюОстаток КАК КОформлениюОстаток,
|                       ЗаказыПоставщикамОстатки.ЗаказПоставщику.ЖелаемаяДатаПоступления КАК ЖелаемаяДатаПоступления
|               ИЗ
|                       РегистрНакопления.ЗаказыПоставщикам.Остатки(КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), ) КАК ЗаказыПоставщикамОстатки) КАК тблЗаказы
|               ПО тблНоменклатура.Ссылка = тблЗаказы.Номенклатура
|               ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
|               ПО тблНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
|               ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|                       НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка,
|                       НоменклатураДополнительныеРеквизиты.Значение КАК ВесНетто
|               ИЗ
|                       Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|               ГДЕ
|                       НоменклатураДополнительныеРеквизиты.Свойство.Имя = ""ВесНетто"") КАК тблВесаНетто
|               ПО тблНоменклатура.Ссылка = тблВесаНетто.Ссылка
|               ЛЕВОЕ СОЕДИНЕНИЕ ВтСвободныеОстатки КАК ВтСвободныеОстатки
|               ПО тблНоменклатура.Ссылка = ВтСвободныеОстатки.Номенклатура
|               ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|                       МАКСИМУМ(ШтрихкодыНоменклатуры.Штрихкод) КАК Штрихкод,
|                       ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура,
|                       ШтрихкодыНоменклатуры.Упаковка КАК Упаковка
|               ИЗ
|                       РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|              
|               СГРУППИРОВАТЬ ПО
|                       ШтрихкодыНоменклатуры.Номенклатура,
|                       ШтрихкодыНоменклатуры.Упаковка) КАК тблШтрихкодыУпаковки
|               ПО тблНоменклатура.Ссылка = тблШтрихкодыУпаковки.Номенклатура
|                       И тблНоменклатура.КоэффициентЕдиницыДляОтчетов = тблШтрихкодыУпаковки.Упаковка.Числитель
|               ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|                       МАКСИМУМ(ШтрихкодыНоменклатуры.Штрихкод) КАК Штрихкод,
|                       ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура,
|                       ШтрихкодыНоменклатуры.Упаковка КАК Упаковка
|               ИЗ
|                       РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|              
|               СГРУППИРОВАТЬ ПО
|                       ШтрихкодыНоменклатуры.Номенклатура,
|                       ШтрихкодыНоменклатуры.Упаковка) КАК тблШтрихкодыШт
|               ПО тблНоменклатура.Ссылка = тблШтрихкодыШт.Номенклатура
|                       И тблНоменклатура.ЕдиницаИзмерения = тблШтрихкодыШт.Упаковка
|ГДЕ
|       тблНоменклатура.ЭтоГруппа = ЛОЖЬ
|       И ВЫБОР
|                       КОГДА &ИспользуетсяОтборПоСегментуНоменклатуры = ИСТИНА
|                               ТОГДА тблНоменклатура.Ссылка В
|                                               (ВЫБРАТЬ
|                                                       ТаблицаОтбора.Номенклатура КАК Номенклатура
|                                               ИЗ
|                                                       ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора)
|                       ИНАЧЕ ИСТИНА
|               КОНЕЦ"

Обратите внимание на запрос, результат которого записывается в ВТ "ОтборПоСегментуНоменклатуры". Тут отбираю номенклатуру по сегменту и потом отбираю записи в итоговом запросе по номенклатуре из сегмента, если параметр ИспользуетсяОтборПоСегментуНоменклатуры = ИСТИНА. В консоли все отбирается, а в СКД нет...

Вторая проблема. Есть вложенный запрос по штрихкодам. Чтобы исключить дубли по номенклатуре, я выбираюзаписи из соответствующего регистра и группирую по номенклатуре, и выбираю МАКСИМУМ по штрихкоду. В консоли работает, а в СКД выводит все штрихкоды, в итоге в СКД дублируются записи.

Ничего не могу понять... Почему? Как исправить? КЭШ чистил...
1 mikecool
 
13.04.20
14:25
параметры, обратите внимание на них
2 mikecool
 
13.04.20
14:26
присвой как минимум значение параметру КонецПериода = ДатаОтчета
3 nemoxp
 
13.04.20
14:34
(2) будьте добры подробнее, не понимаю вас
4 nemoxp
 
13.04.20
14:36
(2) Параметр ДатаОтчета у меня оформлено "КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ)", т.е. в параметрах я указываю дату и формулой вычисляется конец дня. Потому что параметр у меня только дата, без указания времени.
5 formista2000
 
13.04.20
14:39
(3) кури построитель
6 Жан Пердежон
 
13.04.20
14:40
куча соединений с подзапросами, это ж фууу...
7 nemoxp
 
13.04.20
14:46
(5) а запросом в СКД это сделать нельзя?
8 nemoxp
 
13.04.20
14:59
(5) можно пример, что нужно добавить в запрос?
9 nemoxp
 
13.04.20
15:11
ЭКСПЕРИМЕНТ

СОКРАТИЛ ЗАПРОС

"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
|       Сегменты.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ ОтборПоСегментуНоменклатуры
|ИЗ
|       РегистрСведений.НоменклатураСегмента КАК Сегменты
|ГДЕ
|       Сегменты.Сегмент В(&СегментыНоменклатуры)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|       Набор.Номенклатура КАК Номенклатура,
|       СУММА(Набор.ВНаличии) КАК ВНаличии,
|       СУММА(Набор.ВРезервеСоСклада) КАК ВРезервеСоСклада,
|       СУММА(Набор.ВРезервеПодЗаказ) КАК ВРезервеПодЗаказ,
|       СУММА(Набор.КОтгрузке) КАК КОтгрузке,
|       СУММА(Набор.ВНаличии) - СУММА(Набор.ВРезервеСоСклада) - СУММА(Набор.ВРезервеПодЗаказ) - СУММА(Набор.КОтгрузке) КАК Доступно,
|       ВЫБОР
|               КОГДА СУММА(Набор.ВНаличии) - СУММА(Набор.ВРезервеСоСклада) - СУММА(Набор.ВРезервеПодЗаказ) - СУММА(Набор.КОтгрузке) > 0
|                       ТОГДА ИСТИНА
|               ИНАЧЕ ЛОЖЬ
|       КОНЕЦ КАК Наличие
|ПОМЕСТИТЬ ВтСвободныеОстатки
|ИЗ
|       (ВЫБРАТЬ
|               Таблица.Номенклатура КАК Номенклатура,
|               Таблица.ВНаличииОстаток КАК ВНаличии,
|               Таблица.ВРезервеСоСкладаОстаток КАК ВРезервеСоСклада,
|               Таблица.ВРезервеПодЗаказОстаток КАК ВРезервеПодЗаказ,
|               0 КАК КОтгрузке
|       ИЗ
|               РегистрНакопления.СвободныеОстатки.Остатки(, ) КАК Таблица
|      
|       ОБЪЕДИНИТЬ ВСЕ
|      
|       ВЫБРАТЬ
|               Таблица.Номенклатура,
|               Таблица.КОтгрузкеОстаток,
|               0,
|               0,
|               Таблица.КОтгрузкеОстаток
|       ИЗ
|               РегистрНакопления.ТоварыКОтгрузке.Остатки(, ) КАК Таблица) КАК Набор
|
|СГРУППИРОВАТЬ ПО
|       Набор.Номенклатура
|
|ИНДЕКСИРОВАТЬ ПО
|       Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|       тблНоменклатура.Ссылка КАК Ссылка,
|       тблНоменклатура.Код КАК Код,
|       тблНоменклатура.Артикул КАК Артикул,
|       тблНоменклатура.НаименованиеПолное КАК НаименованиеПолное,
|       тблНоменклатура.Родитель КАК Родитель,
|       тблНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
|       тблНоменклатура.КоэффициентЕдиницыДляОтчетов КАК КоэффициентЕдиницыДляОтчетов,
|       тблНоменклатура.ВесЧислитель КАК ВесЧислитель,
|       тблНоменклатура.ОбъемЧислитель КАК ОбъемЧислитель
|ПОМЕСТИТЬ ВтНоменклатура
|ИЗ
|       Справочник.Номенклатура КАК тблНоменклатура
|ГДЕ
|       тблНоменклатура.ЭтоГруппа = ЛОЖЬ
|       И ВЫБОР
|                       КОГДА &ИспользуетсяОтборПоСегментуНоменклатуры = ИСТИНА
|                               ТОГДА тблНоменклатура.Ссылка В
|                                               (ВЫБРАТЬ
|                                                       ТаблицаОтбора.Номенклатура КАК Номенклатура
|                                               ИЗ
|                                                       ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора)
|                       ИНАЧЕ ИСТИНА
|               КОНЕЦ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|       тблНоменклатура.Родитель КАК Группа,
|       тблНоменклатура.Ссылка КАК Ссылка,
|       тблНоменклатура.Код КАК Код,
|       тблНоменклатура.Артикул КАК Артикул,
|       тблНоменклатура.НаименованиеПолное КАК НаименованиеПолное,
|       ЕСТЬNULL(ВтСвободныеОстатки.Наличие, ЛОЖЬ) КАК Наличие,
|       тблНоменклатура.КоэффициентЕдиницыДляОтчетов КАК КоличествоВУпаковке,
|       0 КАК КоличествоЗаказа,
|       0 КАК Сумма,
|       0 КАК ВесЗаказа,
|       0 КАК ОбъемЗаказа,
|       тблНоменклатура.ВесЧислитель * тблНоменклатура.КоэффициентЕдиницыДляОтчетов КАК ВесБруттоУпаковки,
|       тблНоменклатура.ОбъемЧислитель * тблНоменклатура.КоэффициентЕдиницыДляОтчетов КАК ОбъемУпаковки,
|       ВтСвободныеОстатки.ВНаличии КАК ВНаличии,
|       ВтСвободныеОстатки.ВРезервеСоСклада КАК ВРезервеСоСклада,
|       ВтСвободныеОстатки.ВРезервеПодЗаказ КАК ВРезервеПодЗаказ,
|       ВтСвободныеОстатки.КОтгрузке КАК КОтгрузке,
|       ВтСвободныеОстатки.Доступно КАК Доступно
|ИЗ
|       ВтНоменклатура КАК тблНоменклатура
|               ЛЕВОЕ СОЕДИНЕНИЕ ВтСвободныеОстатки КАК ВтСвободныеОстатки
|               ПО тблНоменклатура.Ссылка = ВтСвободныеОстатки.Номенклатура"

Запускаю отчет, ругается:

"(72,61) не задано значение параметра "ДатаОтчета" РегистрНакопления.ЗаказыПоставщикам.Остатки(КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ)...."

А я это удалил в этой версии. Может банально эти данные где-то кешируются? И из-за этого проблема? То в чем вопрос, сегменты и штрихкоды добавлены не в первой версии отчета...

Вроде кеш почистили. Беда в том, что у меня к файлам сервера нет доступа и кеш не почистить. Делает все это сисадмин...
10 toypaul
 
гуру
13.04.20
15:55
если думаешь, что проблема в кеше, переименуй отчет (не файл) а имя отчета
11 toypaul
 
гуру
13.04.20
15:57
если в консоли запросов работает, в СКД нет, открой для себя консоль компоновки данных.

и почитай вот эти статьи http://catalog.mista.ru/public/1219807/ (это серия статей - в них можно найти ответ почему в консоли запросов работает, а в СКД нет)
12 nemoxp
 
13.04.20
15:58
(10) Переименование не помогало...
Создал новый отчет, добавил туду текст запроса и остальное настроил вручную. теперь все работает. ничего дополнительно не делал.
13 toypaul
 
гуру
13.04.20
15:59
(12) дэк это тоже самое что переименовать
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.