Добрый день! Подскажите, пожалуйста, с запросом. Проблема с вт "ЛимитыС", по ней обираю записи с периодом НАЧАЛОПЕРИОДА(&Сегодня, День), НАЧАЛОПЕРИОДА(&Сегодня, Неделя), НАЧАЛОПЕРИОДА(&Сегодня, Месяц).
Если соединять по 1 параметру, например день, то значение количества записей в регистре корректное, если добавлять еще соединение с параметром неделя, то дню присваивается значение недели, если добавить еще соединение по месяцу, то дню и недели присваивается значение месяца. Не могу понять, в чем дело. Заранее спасибо!
Вот так ок:
Вот так НЕ ок:
Необходимо связать большой запрос со списком договоров с количествами записей в регистре. (По договору, количества записей за день, неделю, месяц)
Если соединять по 1 параметру, например день, то значение количества записей в регистре корректное, если добавлять еще соединение с параметром неделя, то дню присваивается значение недели, если добавить еще соединение по месяцу, то дню и недели присваивается значение месяца. Не могу понять, в чем дело. Заранее спасибо!
Вот так ок:
ВЫБРАТЬ
СотрудникПоДоговоруСрезПоследних.Договор КАК Договор
ПОМЕСТИТЬ Договоры
ИЗ
РегистрСведений.СотрудникПоДоговору.СрезПоследних(, ) КАК СотрудникПоДоговоруСрезПоследних
ГДЕ
СотрудникПоДоговоруСрезПоследних.Взыскатель = &Сотрудник
ИНДЕКСИРОВАТЬ ПО
Договор
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.ДоговорыКонтрагентов) КАК Договор,
СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК СуммаОстатокДт
ПОМЕСТИТЬ Долги
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
,
Счет.Код = "58.03.1"
ИЛИ Счет.Код = "76.12"
ИЛИ Счет.Код = "ДЦ.01"
ИЛИ Счет.Код = "ДЦ.02",
,
ВЫРАЗИТЬ(Субконто2 КАК Справочник.ДоговорыКонтрагентов) В
(ВЫБРАТЬ
Договоры.Договор
ИЗ
Договоры КАК Договоры)) КАК ХозрасчетныйОстатки
ГДЕ
ХозрасчетныйОстатки.СуммаОстатокДт > 0
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстатки.Субконто2,
ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.ДоговорыКонтрагентов)
ИНДЕКСИРОВАТЬ ПО
Договор
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЛимитСообщений.Период КАК Период,
ЛимитСообщений.Договор КАК Договор,
ЛимитСообщений.УИД
ПОМЕСТИТЬ ЛимитыС
ИЗ
РегистрСведений.ЛимитСообщений КАК ЛимитСообщений
ГДЕ
ЛимитСообщений.Период >= НАЧАЛОПЕРИОДА(&Сегодня, МЕСЯЦ)
И ЛимитСообщений.Договор В
(ВЫБРАТЬ
Договоры.Договор КАК Договор
ИЗ
Долги КАК Договоры)
ИНДЕКСИРОВАТЬ ПО
Договор,
Период
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
АнкетаКлиента.Договор,
КОЛИЧЕСТВО(ЛимитыНеделя.УИД) КАК ЛНеделя
ИЗ
Документ.АнкетаКлиента КАК АнкетаКлиента
ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыС КАК ЛимитыДень
ПО АнкетаКлиента.Договор = ЛимитыДень.Договор
И (ЛимитыДень.Период >= НАЧАЛОПЕРИОДА(&Сегодня, ДЕНЬ))
ГДЕ
АнкетаКлиента.Договор В
(ВЫБРАТЬ
Договоры.Договор КАК Договор
ИЗ
Долги КАК Договоры)
СГРУППИРОВАТЬ ПО
АнкетаКлиента.Договор
ПоказатьВот так НЕ ок:
ВЫБРАТЬ
СотрудникПоДоговоруСрезПоследних.Договор КАК Договор
ПОМЕСТИТЬ Договоры
ИЗ
РегистрСведений.СотрудникПоДоговору.СрезПоследних(, ) КАК СотрудникПоДоговоруСрезПоследних
ГДЕ
СотрудникПоДоговоруСрезПоследних.Взыскатель = &Сотрудник
ИНДЕКСИРОВАТЬ ПО
Договор
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.ДоговорыКонтрагентов) КАК Договор,
СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК СуммаОстатокДт
ПОМЕСТИТЬ Долги
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
,
Счет.Код = "58.03.1"
ИЛИ Счет.Код = "76.12"
ИЛИ Счет.Код = "ДЦ.01"
ИЛИ Счет.Код = "ДЦ.02",
,
ВЫРАЗИТЬ(Субконто2 КАК Справочник.ДоговорыКонтрагентов) В
(ВЫБРАТЬ
Договоры.Договор
ИЗ
Договоры КАК Договоры)) КАК ХозрасчетныйОстатки
ГДЕ
ХозрасчетныйОстатки.СуммаОстатокДт > 0
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстатки.Субконто2,
ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.ДоговорыКонтрагентов)
ИНДЕКСИРОВАТЬ ПО
Договор
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЛимитСообщений.Период КАК Период,
ЛимитСообщений.Договор КАК Договор,
ЛимитСообщений.УИД
ПОМЕСТИТЬ ЛимитыС
ИЗ
РегистрСведений.ЛимитСообщений КАК ЛимитСообщений
ГДЕ
ЛимитСообщений.Период >= НАЧАЛОПЕРИОДА(&Сегодня, МЕСЯЦ)
И ЛимитСообщений.Договор В
(ВЫБРАТЬ
Договоры.Договор КАК Договор
ИЗ
Долги КАК Договоры)
ИНДЕКСИРОВАТЬ ПО
Договор,
Период
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
АнкетаКлиента.Договор,
КОЛИЧЕСТВО(ЛимитыДень.УИД) КАК ЛДень,
КОЛИЧЕСТВО(ЛимитыНеделя.УИД) КАК ЛНеделя
ИЗ
Документ.АнкетаКлиента КАК АнкетаКлиента
ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыС КАК ЛимитыДень
ПО АнкетаКлиента.Договор = ЛимитыДень.Договор
И (ЛимитыДень.Период >= НАЧАЛОПЕРИОДА(&Сегодня, ДЕНЬ))
ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыС КАК ЛимитыНеделя
ПО АнкетаКлиента.Договор = ЛимитыНеделя.Договор
И (ЛимитыНеделя.Период >= НАЧАЛОПЕРИОДА(&Сегодня, Неделя))
ГДЕ
АнкетаКлиента.Договор В
(ВЫБРАТЬ
Договоры.Договор КАК Договор
ИЗ
Долги КАК Договоры)
СГРУППИРОВАТЬ ПО
АнкетаКлиента.Договор
ПоказатьНеобходимо связать большой запрос со списком договоров с количествами записей в регистре. (По договору, количества записей за день, неделю, месяц)
По теме из базы знаний
Найденные решения
(1) Если правильно понял суть проблемы и хранение данных в РегистрСведений.ЛимитСообщений, то необходимо последний пакет в запросе переделать в такой вид
ВЫБРАТЬ
АнкетаКлиента.Договор,
КОЛИЧЕСТВО(ЛимитыДень.УИД) КАК ЛДень,
0 КАК ЛНеделя,
0 КАК ЛМесяц
ПОМЕСТИТЬ ВТОбщиеДанные
ИЗ
Документ.АнкетаКлиента КАК АнкетаКлиента
ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыС КАК ЛимитыДень
ПО АнкетаКлиента.Договор = ЛимитыДень.Договор
И (ЛимитыДень.Период >= НАЧАЛОПЕРИОДА(&Сегодня, ДЕНЬ))
ГДЕ
АнкетаКлиента.Договор В
(ВЫБРАТЬ
Договоры.Договор КАК Договор
ИЗ
Долги КАК Договоры)
СГРУППИРОВАТЬ ПО
АнкетаКлиента.Договор
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
АнкетаКлиента.Договор,
0,
КОЛИЧЕСТВО(ЛимитыНеделя.УИД),
0
ИЗ
Документ.АнкетаКлиента КАК АнкетаКлиента
ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыС КАК ЛимитыНеделя
ПО АнкетаКлиента.Договор = ЛимитыНеделя.Договор
И (ЛимитыНеделя.Период >= НАЧАЛОПЕРИОДА(&Сегодня, Неделя))
ГДЕ
АнкетаКлиента.Договор В
(ВЫБРАТЬ
Договоры.Договор КАК Договор
ИЗ
Долги КАК Договоры)
СГРУППИРОВАТЬ ПО
АнкетаКлиента.Договор
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
АнкетаКлиента.Договор,
0,
0,
КОЛИЧЕСТВО(ЛимитыМесяц.УИД)
ИЗ
Документ.АнкетаКлиента КАК АнкетаКлиента
ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыС КАК ЛимитыМесяц
ПО АнкетаКлиента.Договор = ЛимитыМесяц.Договор
И (ЛимитыМесяц.Период >= НАЧАЛОПЕРИОДА(&Сегодня, Месяц))
ГДЕ
АнкетаКлиента.Договор В
(ВЫБРАТЬ
Договоры.Договор КАК Договор
ИЗ
Долги КАК Договоры)
СГРУППИРОВАТЬ ПО
АнкетаКлиента.Договор
;
ВЫБРАТЬ
Договор,
СУММА(ЛДень) КАК ЛДень,
СУММА(ЛНеделя) КАК ЛНеделя,
СУММА(ЛМесяц) КАК ЛМесяц
ИЗ
ВТОбщиеДанные
СГРУППИРОВАТЬ ПО
Договор
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Если правильно понял суть проблемы и хранение данных в РегистрСведений.ЛимитСообщений, то необходимо последний пакет в запросе переделать в такой вид
ВЫБРАТЬ
АнкетаКлиента.Договор,
КОЛИЧЕСТВО(ЛимитыДень.УИД) КАК ЛДень,
0 КАК ЛНеделя,
0 КАК ЛМесяц
ПОМЕСТИТЬ ВТОбщиеДанные
ИЗ
Документ.АнкетаКлиента КАК АнкетаКлиента
ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыС КАК ЛимитыДень
ПО АнкетаКлиента.Договор = ЛимитыДень.Договор
И (ЛимитыДень.Период >= НАЧАЛОПЕРИОДА(&Сегодня, ДЕНЬ))
ГДЕ
АнкетаКлиента.Договор В
(ВЫБРАТЬ
Договоры.Договор КАК Договор
ИЗ
Долги КАК Договоры)
СГРУППИРОВАТЬ ПО
АнкетаКлиента.Договор
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
АнкетаКлиента.Договор,
0,
КОЛИЧЕСТВО(ЛимитыНеделя.УИД),
0
ИЗ
Документ.АнкетаКлиента КАК АнкетаКлиента
ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыС КАК ЛимитыНеделя
ПО АнкетаКлиента.Договор = ЛимитыНеделя.Договор
И (ЛимитыНеделя.Период >= НАЧАЛОПЕРИОДА(&Сегодня, Неделя))
ГДЕ
АнкетаКлиента.Договор В
(ВЫБРАТЬ
Договоры.Договор КАК Договор
ИЗ
Долги КАК Договоры)
СГРУППИРОВАТЬ ПО
АнкетаКлиента.Договор
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
АнкетаКлиента.Договор,
0,
0,
КОЛИЧЕСТВО(ЛимитыМесяц.УИД)
ИЗ
Документ.АнкетаКлиента КАК АнкетаКлиента
ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыС КАК ЛимитыМесяц
ПО АнкетаКлиента.Договор = ЛимитыМесяц.Договор
И (ЛимитыМесяц.Период >= НАЧАЛОПЕРИОДА(&Сегодня, Месяц))
ГДЕ
АнкетаКлиента.Договор В
(ВЫБРАТЬ
Договоры.Договор КАК Договор
ИЗ
Долги КАК Договоры)
СГРУППИРОВАТЬ ПО
АнкетаКлиента.Договор
;
ВЫБРАТЬ
Договор,
СУММА(ЛДень) КАК ЛДень,
СУММА(ЛНеделя) КАК ЛНеделя,
СУММА(ЛМесяц) КАК ЛМесяц
ИЗ
ВТОбщиеДанные
СГРУППИРОВАТЬ ПО
Договор
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот