![]() |
|
Остатки на каждый день по регистру бухгалтерии | ☑ | ||
---|---|---|---|---|
0
Быдло замкадное
25.05.20
✎
17:02
|
Привет, подскажите что неправильно.
Пишу запрос выдающий остаток на 51 счете за каждый день. К начальным остаткам прибавляю обороты, до даты Х, но эти обороты у меня почему то задваиваются, не пойму почему. На примере: ДЕНЬ ОстатокНаКонец СуммаОборотНаКонец 01.05.2020 0:00:00 5 569 486,75 <NULL> 02.05.2020 0:00:00 5 569 486,75 <NULL> 03.05.2020 0:00:00 5 569 486,75 <NULL> 04.05.2020 0:00:00 5 569 486,75 <NULL> 05.05.2020 0:00:00 5 569 486,75 <NULL> 06.05.2020 0:00:00 12 023 789,55 6 454 302,8 Вот эти первые обороты за день 06.05.2020 на самом деле 3 227 151,4 т.е. ровно в 2 раза меньше того что считает программа "ВЫБРАТЬ РАЗЛИЧНЫЕ | НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.Дата, ДЕНЬ) КАК ДЕНЬ |ПОМЕСТИТЬ Календарь |ИЗ | РегистрСведений.ДанныеПроизводственногоКалендаря КАК РегламентированныйПроизводственныйКалендарь |ГДЕ | РегламентированныйПроизводственныйКалендарь.Дата МЕЖДУ &ДатаНач И &ДатаКон |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Календарь.ДЕНЬ КАК ДЕНЬ, | СУММА(ХозрасчетныйОстатки.СуммаОстаток) КАК СуммаОстатокНаНачало |ПОМЕСТИТЬ ОстаткиНаНачало |ИЗ | Календарь КАК Календарь, | РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаНач, Счет = &Счет51, , ) КАК ХозрасчетныйОстатки | |СГРУППИРОВАТЬ ПО | Календарь.ДЕНЬ | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Календарь.ДЕНЬ, | 0 |ИЗ | Календарь КАК Календарь, | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, ДЕНЬ, Счет = &Счет51, , , , ) КАК ХозрасчетныйОбороты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаНач, Счет = &Счет51, , ) КАК ХозрасчетныйОстатки | ПО ХозрасчетныйОбороты.Организация = ХозрасчетныйОстатки.Организация | И ХозрасчетныйОбороты.Субконто1 = ХозрасчетныйОстатки.Субконто1 | И ХозрасчетныйОбороты.Субконто2 = ХозрасчетныйОстатки.Субконто2 |ГДЕ | ХозрасчетныйОстатки.Организация ЕСТЬ NULL | |СГРУППИРОВАТЬ ПО | Календарь.ДЕНЬ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НАЧАЛОПЕРИОДА(ХозрасчетныйОбороты.Период, ДЕНЬ) КАК ДЕНЬ, | СУММА(ХозрасчетныйОбороты.СуммаОборот) КАК СуммаОборот |ПОМЕСТИТЬ ОборотыЗаПериод |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, ДЕНЬ, Счет = &Счет51, , , , ) КАК ХозрасчетныйОбороты | |СГРУППИРОВАТЬ ПО | НАЧАЛОПЕРИОДА(ХозрасчетныйОбороты.Период, ДЕНЬ) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МАКСИМУМ(ОстаткиНаНачало.СуммаОстатокНаНачало) КАК СуммаОстатокНаНачало, | ОстаткиНаНачало.ДЕНЬ КАК ДЕНЬ, | СУММА(ОборотыЗаПериодНаКонец.СуммаОборот) КАК СуммаОборотНаКонец |ПОМЕСТИТЬ РасчетОстатковНаКонец |ИЗ | ОстаткиНаНачало КАК ОстаткиНаНачало | ЛЕВОЕ СОЕДИНЕНИЕ ОборотыЗаПериод КАК ОборотыЗаПериодНаКонец | ПО (ОборотыЗаПериодНаКонец.ДЕНЬ МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(ОстаткиНаНачало.ДЕНЬ, ДЕНЬ)) | |СГРУППИРОВАТЬ ПО | ОстаткиНаНачало.ДЕНЬ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | РасчетОстатковНаКонец.ДЕНЬ КАК ДЕНЬ, | РасчетОстатковНаКонец.СуммаОстатокНаНачало + ЕСТЬNULL(РасчетОстатковНаКонец.СуммаОборотНаКонец, 0) КАК ОстатокНаКонец, | РасчетОстатковНаКонец.СуммаОборотНаКонец КАК СуммаОборотНаКонец |ПОМЕСТИТЬ ОбщиеОстатки |ИЗ | РасчетОстатковНаКонец КАК РасчетОстатковНаКонец |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОбщиеОстатки.ДЕНЬ КАК ДЕНЬ, | СУММА(ОбщиеОстатки.ОстатокНаКонец) КАК ОстатокНаКонец, | СУММА(ОбщиеОстатки.СуммаОборотНаКонец) КАК СуммаОборотНаКонец |ИЗ | ОбщиеОстатки КАК ОбщиеОстатки | |СГРУППИРОВАТЬ ПО | ОбщиеОстатки.ДЕНЬ | |УПОРЯДОЧИТЬ ПО | ДЕНЬ" |
|||
1
Быдло замкадное
25.05.20
✎
17:03
|
подозреваю что неправильное соединение ОборотыЗаПериодНаКонец.ДЕНЬ МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(ОстаткиНаНачало.ДЕНЬ, ДЕНЬ)
|
|||
2
Злопчинский
25.05.20
✎
17:05
|
а зачем для остатков по дням счиатьь обороты? или ты остатки по оборотном субконто хочешь вытянуть?
|
|||
3
Быдло замкадное
25.05.20
✎
17:07
|
(2) что бы вывести остатки за дни в которых не было оборотов.
Блин я победил. Вот это лишнее "| ПО ХозрасчетныйОбороты.Организация = ХозрасчетныйОстатки.Организация | И ХозрасчетныйОбороты.Субконто1 = ХозрасчетныйОстатки.Субконто1 | И ХозрасчетныйОбороты.Субконто2 = ХозрасчетныйОстатки.Субконто2" |
|||
4
Конструктор1С
25.05.20
✎
18:02
|
Ой-ёй-ёй, оптимизатор запросов расплачется...
|
|||
5
Конструктор1С
25.05.20
✎
18:06
|
(3) "что бы вывести остатки за дни в которых не было оборотов"
Для этого вовсе не нужно мусолить несколько виртуальных таблиц, можно отбиться таблицей ОстаткиИОбороты |
|||
6
Конструктор1С
25.05.20
✎
18:32
|
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Период КАК Период, ХозрасчетныйОстаткиИОбороты.Счет КАК Счет, ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт, ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт, ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт, ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт, ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт, ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт ПОМЕСТИТЬ ВТ_ОстаткиИОбороты ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Счет = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДанныеПроизводственногоКалендаря.Дата КАК Дата ПОМЕСТИТЬ ВТ_Календарь ИЗ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря ГДЕ ДанныеПроизводственногоКалендаря.ПроизводственныйКалендарь = &ПроизводственныйКалендарь И ДанныеПроизводственногоКалендаря.Дата МЕЖДУ &НачалоПериода И &КонецПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Календарь.Дата КАК Период, МАКСИМУМ(ГруппировкаПериода.Период) КАК ПериодСоединения, ВЫБОР КОГДА ПроверкаОборотов.Период ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ КАК ЕстьДвиженияЗаДень ПОМЕСТИТЬ ВТ_ПроверкаПериодов ИЗ ВТ_Календарь КАК ВТ_Календарь ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОстаткиИОбороты КАК ГруппировкаПериода ПО ВТ_Календарь.Дата >= ГруппировкаПериода.Период ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОстаткиИОбороты КАК ПроверкаОборотов ПО ВТ_Календарь.Дата = ПроверкаОборотов.Период СГРУППИРОВАТЬ ПО ВТ_Календарь.Дата, ВЫБОР КОГДА ПроверкаОборотов.Период ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПроверкаПериодов.Период КАК Период, ВТ_ОстаткиИОбороты.Счет КАК Счет, ВЫБОР КОГДА ВТ_ПроверкаПериодов.ЕстьДвиженияЗаДень ТОГДА ВТ_ОстаткиИОбороты.СуммаНачальныйОстатокДт ИНАЧЕ ВТ_ОстаткиИОбороты.СуммаКонечныйОстатокДт КОНЕЦ КАК СуммаНачальныйОстатокДт, ВЫБОР КОГДА ВТ_ПроверкаПериодов.ЕстьДвиженияЗаДень ТОГДА ВТ_ОстаткиИОбороты.СуммаНачальныйОстатокКт ИНАЧЕ ВТ_ОстаткиИОбороты.СуммаКонечныйОстатокКт КОНЕЦ КАК СуммаНачальныйОстатокКт, ВЫБОР КОГДА ВТ_ПроверкаПериодов.ЕстьДвиженияЗаДень ТОГДА ВТ_ОстаткиИОбороты.СуммаОборотДт ИНАЧЕ 0 КОНЕЦ КАК СуммаОборотДт, ВЫБОР КОГДА ВТ_ПроверкаПериодов.ЕстьДвиженияЗаДень ТОГДА ВТ_ОстаткиИОбороты.СуммаОборотКт ИНАЧЕ 0 КОНЕЦ КАК СуммаОборотКт, ВТ_ОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт, ВТ_ОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт ИЗ ВТ_ПроверкаПериодов КАК ВТ_ПроверкаПериодов ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ОстаткиИОбороты КАК ВТ_ОстаткиИОбороты ПО (ВТ_ПроверкаПериодов.ПериодСоединения = ВТ_ОстаткиИОбороты.Период) УПОРЯДОЧИТЬ ПО Период |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |