Группа: Пользователи
Сообщений: 10
Спасибо сказали: 1 раз
Рейтинг: 0
Помогите разобраться с проблемой. Конфигурация УТП. Формирую отчет "Сравнительный анализ оборота по подразделению" за разные периоды, следующего вида
Период Месяц.................... СуммаОборот1 СуммаОборот2 1......... Обороты за Январь ...... 39 245 ......65 567 2......... Обороты за Февраль ... 117 402 ....56 524 3......... Обороты за Март .......... 99 053 ......2 240
Составил запрос (запрос работает правильно, табл. выше сформирована этим запросом). Перенес его в отчет на СКД. Но при формировании отчета колонка за прошлый период повторяет первую!!!
Период Месяц.................. Сумма оборот1 Сумма оборот2 1......... Обороты за Январь ......39 245,00 ....... 39 245,00 2......... Обороты за Февраль ...117 402,00 ... 117 402,00 3......... Обороты за Март .........99 053,00 ....... 99 053,00
Внешний отчет можно скачать тут [необходимо зарегистрироваться для просмотра ссылки]
Сам запрос ВЫБРАТЬ ВложенныйЗапрос.Период КАК Период, ВложенныйЗапрос.Месяц, ВложенныйЗапрос.Контрагент КАК Контрагент, СУММА(ВложенныйЗапрос.СуммаОборот1) КАК СуммаОборот1, СУММА(ВложенныйЗапрос.СуммаОборот2) КАК СуммаОборот2 ИЗ (ВЫБРАТЬ Период_1.Период КАК Период, Период_1.Месяц КАК Месяц, Период_1.Контрагент КАК Контрагент, Период_1.СуммаОборот1 КАК СуммаОборот1, Период_2.СуммаОборот2 КАК СуммаОборот2 ИЗ (ВЫБРАТЬ ВложенныйЗапрос.Период КАК Период, ВложенныйЗапрос.Месяц КАК Месяц, СУММА(ВложенныйЗапрос.СуммаОборотКт) КАК СуммаОборот1, ВложенныйЗапрос.субконто1 КАК Контрагент ИЗ (ВЫБРАТЬ движения.СчетУчета КАК СчетУчета, движения.субконто1 КАК субконто1, движения.субконто2 КАК субконто2, движения.СуммаОборотКт КАК СуммаОборотКт, движения.КорСчет КАК КорСчет, движения.Месяц КАК Месяц, движения.Период КАК Период ИЗ (ВЫБРАТЬ ХозрасчетныйОбороты.Счет КАК СчетУчета, ХозрасчетныйОбороты.Субконто1 КАК субконто1, ХозрасчетныйОбороты.Субконто2 КАК субконто2, ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт, ХозрасчетныйОбороты.КорСчет КАК КорСчет, ВЫБОР КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 1 ТОГДА "Обороты за Январь" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 2 ТОГДА "Обороты за Февраль" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 3 ТОГДА "Обороты за Март" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 4 ТОГДА "Обороты за Апрель" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 5 ТОГДА "Обороты за Май" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 6 ТОГДА "Обороты за Июнь" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 7 ТОГДА "Обороты за Июль" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 8 ТОГДА "Обороты за Август" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 9 ТОГДА "Обороты за Сентябрь" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 10 ТОГДА "Обороты за Октябрь" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 11 ТОГДА "Обороты за Ноябрь" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 12 ТОГДА "Обороты за Декабрь" КОНЕЦ КАК Месяц, МЕСЯЦ(ХозрасчетныйОбороты.Период) КАК Период ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет = &Счет361, &ВидыСубконтоНС, , КорСчет В (&Счет), ) КАК ХозрасчетныйОбороты) КАК движения) КАК ВложенныйЗапрос ГДЕ ВложенныйЗапрос.КорСчет <> &Корсчет
СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Месяц, ВложенныйЗапрос.Период, ВложенныйЗапрос.субконто1) КАК Период_1 ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВложенныйЗапрос.Период КАК Период, ВложенныйЗапрос.Месяц КАК Месяц, СУММА(ВложенныйЗапрос.СуммаОборотКт) КАК СуммаОборот2, ВложенныйЗапрос.субконто1 КАК Контрагент ИЗ (ВЫБРАТЬ движения.СчетУчета КАК СчетУчета, движения.субконто1 КАК субконто1, движения.субконто2 КАК субконто2, движения.СуммаОборотКт КАК СуммаОборотКт, движения.КорСчет КАК КорСчет, движения.Месяц КАК Месяц, движения.Период КАК Период ИЗ (ВЫБРАТЬ ХозрасчетныйОбороты.Счет КАК СчетУчета, ХозрасчетныйОбороты.Субконто1 КАК субконто1, ХозрасчетныйОбороты.Субконто2 КАК субконто2, ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт, ХозрасчетныйОбороты.КорСчет КАК КорСчет, ВЫБОР КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 1 ТОГДА "Обороты за Январь" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 2 ТОГДА "Обороты за Февраль" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 3 ТОГДА "Обороты за Март" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 4 ТОГДА "Обороты за Апрель" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 5 ТОГДА "Обороты за Май" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 6 ТОГДА "Обороты за Июнь" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 7 ТОГДА "Обороты за Июль" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 8 ТОГДА "Обороты за Август" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 9 ТОГДА "Обороты за Сентябрь" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 10 ТОГДА "Обороты за Октябрь" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 11 ТОГДА "Обороты за Ноябрь" КОГДА МЕСЯЦ(ХозрасчетныйОбороты.Регистратор.Дата) = 12 ТОГДА "Обороты за Декабрь" КОНЕЦ КАК Месяц, МЕСЯЦ(ХозрасчетныйОбороты.Период) КАК Период ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода_2, &КонецПериода_2, Регистратор, Счет = &Счет361, &ВидыСубконтоНС, , КорСчет В (&Счет), ) КАК ХозрасчетныйОбороты) КАК движения) КАК ВложенныйЗапрос ГДЕ ВложенныйЗапрос.КорСчет <> &Корсчет
СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Месяц, ВложенныйЗапрос.Период, ВложенныйЗапрос.субконто1) КАК Период_2 ПО Период_1.Период = Период_2.Период И Период_1.Контрагент = Период_2.Контрагент) КАК ВложенныйЗапрос ГДЕ ВложенныйЗапрос.Контрагент = &Контрагент
СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Контрагент, ВложенныйЗапрос.Месяц, ВложенныйЗапрос.Период
УПОРЯДОЧИТЬ ПО Контрагент, Период
Параметры в СКД - [необходимо зарегистрироваться для просмотра ссылки]
Настройки в СКД - [необходимо зарегистрироваться для просмотра ссылки]
[необходимо зарегистрироваться для просмотра ссылки]
Помогите разобраться, уже что только не перепробовал, все равно выводит первый период.
Группа: Местный
Сообщений: 237
Спасибо сказали: 51 раз
Рейтинг: 0
bruslan @ Сегодня, 14:50
, у вас по запросу берется только одна таблица Период_1.СуммаОборот Период_2.СуммаОборот .... соединение ПО ... Период_1.Период = Период_2.Период
где Период_1.Период = МЕСЯЦ(ХозрасчетныйОбороты.Период) - а это значит 01.01.18 где Период_2.Период= МЕСЯЦ(ХозрасчетныйОбороты.Период) - а это значит 01.01.19
fly @ Сегодня, 15:32
, у вас по запросу берется только одна таблица Период_1.СуммаОборот
имелось ввиду Таблица Период_1
вторая Период_2 не попадет, так как соединение по Периоду не работает, там периоды разные
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 1 раз
Рейтинг: 0
Спасибо за ваши ответы. Что касаемо запроса, то он был перенесен из отладчика запросов, где выдавал правильные результаты, и первая таблица (в самом начале) результат данного запроса. К тому же пришлось временно сделать вариант отчета без СКД, с выводом по шаблону, с данным запросом. Так там выводится все верно. Возможно в отчете с СКД где-то ошибки в компановке или в задании параметров?
Группа: Местный
Сообщений: 237
Спасибо сказали: 51 раз
Рейтинг: 0
Цитата(bruslan @ 10.01.20, 17:43)
Возможно в отчете с СКД где-то ошибки в компановке или в задании параметров?
не будет запрос выдавать полную информацию, даже не в СКД
так как в первой таблице, если данные отсутствуют за какой то месяц строки из второй таблицы
ВЫБРАТЬ ВложенныйЗапрос.Период КАК Период, ВложенныйЗапрос.Месяц, ВложенныйЗапрос.Контрагент КАК Контрагент,
заполнит как Null - будут пустые строки, или из второй таблицы не берет - вообще
у Контрагента стоит измерение + Игнорировать значения NULL – если установлено, то в результат не нужно включать групповые записи по данному полю в случае, если поле содержит значение NULL. - приведет, что отбор на Параметр Контрагент может не сработать.
Далее в СКД нет полного соединения, оно все равно остается Левым, неявным образом задается таблица - система как то сама определяет, какая будет левой - какая правой. Может поэтому лепит одни и те же цифры в обе колонки (НаборДанных с обоих таблиц подставляет в одни и те же поля).
по сути если нужны общие цифры за периоды, вообще использовать можно одну таблицу добавив поле Год а в макете прописать колонки Год. либо на худой конец объединение, или два НабораДанных
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 1 раз
Рейтинг: 0
Цитата(fly @ 10.01.20, 21:56)
по сути если нужны общие цифры за периоды, вообще использовать можно одну таблицу добавив поле Год
Спасибо за ценную информацию. насчет отсутствия полного соединения в СКД. Попробую использовать одну таблицу, так думаю будет более правильно, и отчет будет работать быстрее.
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 1 раз
Рейтинг: 0
Всем спасибо, все получилось. Сделал выборку за оба периода во временную таблицу, и затем из нее выбрал за отдельные года. Так и отчет работает заметно быстрее.
вот и сам запрос:
ВЫБРАТЬ ХозрасчетныйОбороты.Субконто1 КАК Контрагент, СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СуммаОборот, МЕСЯЦ(ХозрасчетныйОбороты.Период) КАК Месяц, ГОД(ХозрасчетныйОбороты.Период) КАК Год ПОМЕСТИТЬ ВТ ИЗ РегистрСведений.НастройкиПринадлежностиКонтрагентаКПодразделению КАК НастройкиПринадлежностиКонтрагентаКПодразделению ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет = &Счет361, &ВидыСубконтоНС, , КорСчет В (&Счет), ) КАК ХозрасчетныйОбороты ПО НастройкиПринадлежностиКонтрагентаКПодразделению.Контрагент = ХозрасчетныйОбороты.Субконто1 ГДЕ НастройкиПринадлежностиКонтрагентаКПодразделению.Подразделение = &Подразделение
СГРУППИРОВАТЬ ПО ХозрасчетныйОбороты.Субконто1, ГОД(ХозрасчетныйОбороты.Период), МЕСЯЦ(ХозрасчетныйОбороты.Период) ;
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЕСТЬNULL(Год_1.Контрагент, Год_2.Контрагент) КАК Контрагент, ЕСТЬNULL(Год_1.ПериодМесяц1, Год_2.ПериодМесяц2) КАК ПериодМесяц, ЕСТЬNULL(Год_1.Месяц, Год_2.Месяц) КАК Месяц, Год_1.СуммаОборот1 КАК СуммаОборот1, Год_2.СуммаОборот2 КАК СуммаОборот2, ЕСТЬNULL(Год_2.СуммаОборот2, 0) - ЕСТЬNULL(Год_1.СуммаОборот1, 0) КАК Разница ИЗ (ВЫБРАТЬ ВТ.Контрагент КАК Контрагент, ВТ.СуммаОборот КАК СуммаОборот1, ВТ.Месяц КАК Месяц, ВТ.Год КАК Год1, ВЫБОР КОГДА ВТ.Месяц = 1 ТОГДА "Обороты за Январь" КОГДА ВТ.Месяц = 2 ТОГДА "Обороты за Февраль" КОГДА ВТ.Месяц = 3 ТОГДА "Обороты за Март" КОГДА ВТ.Месяц = 4 ТОГДА "Обороты за Апрель" КОГДА ВТ.Месяц = 5 ТОГДА "Обороты за Май" КОГДА ВТ.Месяц = 6 ТОГДА "Обороты за Июнь" КОГДА ВТ.Месяц = 7 ТОГДА "Обороты за Июль" КОГДА ВТ.Месяц = 8 ТОГДА "Обороты за Август" КОГДА ВТ.Месяц = 9 ТОГДА "Обороты за Сентябрь" КОГДА ВТ.Месяц = 10 ТОГДА "Обороты за Октябрь" КОГДА ВТ.Месяц = 11 ТОГДА "Обороты за Ноябрь" КОГДА ВТ.Месяц = 12 ТОГДА "Обороты за Декабрь" КОНЕЦ КАК ПериодМесяц1 ИЗ ВТ КАК ВТ ГДЕ ВТ.Год = &Год1) КАК Год_1 ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВТ.Контрагент КАК Контрагент, ВТ.СуммаОборот КАК СуммаОборот2, ВТ.Месяц КАК Месяц, ВТ.Год КАК Год2, ВЫБОР КОГДА ВТ.Месяц = 1 ТОГДА "Обороты за Январь" КОГДА ВТ.Месяц = 2 ТОГДА "Обороты за Февраль" КОГДА ВТ.Месяц = 3 ТОГДА "Обороты за Март" КОГДА ВТ.Месяц = 4 ТОГДА "Обороты за Апрель" КОГДА ВТ.Месяц = 5 ТОГДА "Обороты за Май" КОГДА ВТ.Месяц = 6 ТОГДА "Обороты за Июнь" КОГДА ВТ.Месяц = 7 ТОГДА "Обороты за Июль" КОГДА ВТ.Месяц = 8 ТОГДА "Обороты за Август" КОГДА ВТ.Месяц = 9 ТОГДА "Обороты за Сентябрь" КОГДА ВТ.Месяц = 10 ТОГДА "Обороты за Октябрь" КОГДА ВТ.Месяц = 11 ТОГДА "Обороты за Ноябрь" КОГДА ВТ.Месяц = 12 ТОГДА "Обороты за Декабрь" КОНЕЦ КАК ПериодМесяц2 ИЗ ВТ КАК ВТ ГДЕ ВТ.Год = &Год2) КАК Год_2 ПО Год_1.Контрагент = Год_2.Контрагент И Год_1.Месяц = Год_2.Месяц
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!