|
Остатки регистра бухгалтерии на каждый день | ☑ | ||
---|---|---|---|---|
0
MistaEr
18.11.13
✎
11:47
|
Нужно получить остатки на каждый день из регистра бухгалтерии. В самом запросе для дальнейшей обработки в запросе. Порядки обхода По периодам и СКД не подойдет. Накидал такой запрос, но он показывает только когда были движения.
ВЫБРАТЬ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК День ПОМЕСТИТЬ Календарь ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачДата И &КонДата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ХозрасчетныйОстаткиИОбороты.Период, ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент, ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор, ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт ИЗ Календарь КАК Календарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, Счет = &Счет, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты ПО Календарь.День = ХозрасчетныйОстаткиИОбороты.Период |
|||
1
MistaEr
18.11.13
✎
11:56
|
обновим
|
|||
2
WildSery
18.11.13
✎
12:09
|
МАКСИМУМ(СуммаНачальныйОстатокКт) + СУММА(СуммаОборотКт) КАК СуммаНачальныйОстатокКт_НаДату
... ПО Календарь.День >= ХозрасчетныйОстаткиИОбороты.Период СГРУППИРОВАТЬ ПО ... |
|||
3
Maxus43
18.11.13
✎
12:11
|
ПОЛНОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, Счет = &Счет, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
ПО Календарь.День = началоПериода(ХозрасчетныйОстаткиИОбороты.Период, День) |
|||
4
Maxus43
18.11.13
✎
12:12
|
ну тут конечно вопрос что быстрей, полное или Левое, надо смотреть
|
|||
5
Maxus43
18.11.13
✎
12:12
|
ВЫБРАТЬ
//ХозрасчетныйОстаткиИОбороты.Период, Календарь.День, |
|||
6
MistaEr
18.11.13
✎
12:36
|
(3) он показывает только те дни, где были движения, (2) так я уже делал, он показывает несколько строк по одной дате
|
|||
7
WildSery
18.11.13
✎
13:00
|
(6) Он и должен показывать несколько строк по одной дате, поскольку Субконто1 и Субконто2 могут быть разными.
(4) При чём тут скорость, если вы не придумали, как остаток за этот день выводить? |
|||
8
MistaEr
18.11.13
✎
13:13
|
(7)Нет я пока отбираю только по одному значению субконто. Сколько было движений до этой даты - все выводит, с разными суммами.
|
|||
9
Maxus43
18.11.13
✎
13:15
|
всё придумано за меня
http://1c-wiki.ru/wiki/Ежедневные_остатки http://kb.mista.ru/article.php?id=579& |
|||
10
MistaEr
18.11.13
✎
13:16
|
(2) Почему МАКСИМУМ. движения могут быть как по Дт так и по Кь, и сальдо не только увеличивается, но может и уменьшаться.
|
|||
11
Maxus43
18.11.13
✎
13:16
|
(8) если нужны остатки - зачем используешь ОстаткиИОбороты? по русски же написано, используй Остатки
|
|||
12
MistaEr
18.11.13
✎
13:19
|
(11) в остатках нет Периода, (9) СКД не подойдет, говорю же дальше нужно обрабатывать в запросе.
|
|||
13
Maxus43
18.11.13
✎
13:24
|
(12) да, с остатками погорячился, пример нужного тебе запроса есть в http://kb.mista.ru/article.php?id=579&
|
|||
14
Maxus43
18.11.13
✎
13:25
|
(13) + смотри там второй запрос, но вместо КурсыВалют используй производственный календарь
|
|||
15
MistaEr
18.11.13
✎
13:29
|
(14) да пробовал я так, точно так. выводит то же самое что и (2)
|
|||
16
MistaEr
18.11.13
✎
13:30
|
да и непрозрачно там все как то
|
|||
17
Maxus43
18.11.13
✎
13:38
|
(16) кто мешает потом сгруппировать по дате то?
|
|||
18
MistaEr
18.11.13
✎
13:45
|
вот смотри:
по факту: 01.10.13 - остаток 100 02.10.13 - остаток 100 03.10.13 - остаток 200 04.10.13 - остаток 500 05.10.13 - остаток 50 наш запрос выводит: 01.10.13 - остаток 100 02.10.13 - остаток 100 03.10.13 - остаток 200 03.10.13 - остаток 100 04.10.13 - остаток 300 04.10.13 - остаток 200 04.10.13 - остаток 100 05.10.13 - остаток 50 05.10.13 - остаток 300 05.10.13 - остаток 200 05.10.13 - остаток 100 что тут как группировать? ну должно же быть простое решение такой простой задачи |
|||
19
mistеr
18.11.13
✎
14:01
|
(0) Общая идея такая. Сначала получаешь остатки на дни, когда были движения (с периодом День) и помещаешь в ВТ. А теперь представь, что ВТ это записи регистра сведений; И нужно получить срезы на каждый день. Аналогично курсу валюты на каждый день. Соединяем с календарем по Дата >= Период, группируем, берем ближайший период, соединяем еще раз с ВТ по этому периоду. Примеров таких запросов много в типовых.
|
|||
20
Maxus43
18.11.13
✎
14:07
|
(18) запрос из (13) не должен давать в таком виде... надо попробовать
|
|||
21
WildSery
18.11.13
✎
14:17
|
С максимумом я погорячился, это из другой задачи, где НачальныйОстаток всегда одинаков.
ВЫБРАТЬ ХозрасчетныйОстаткиИОбороты.Период, ХозрасчетныйОстаткиИОбороты.Субконто1, ХозрасчетныйОстаткиИОбороты.Субконто2, ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт, ХозрасчетныйОстаткиИОбороты.СуммаОборотКт ПОМЕСТИТЬ ОстаткиИОбороты ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, Счет = &Счет, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОстаткиИОбороты.Период, ОстаткиИОбороты.Субконто1, ОстаткиИОбороты.Субконто2, ОстаткиИОбороты.СуммаНачальныйОстатокКт ИЗ ОстаткиИОбороты КАК ОстаткиИОбороты ГДЕ ОстаткиИОбороты.Период = &НачДата ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ОстаткиИОбороты.Период, ОстаткиИОбороты.Субконто1, ОстаткиИОбороты.Субконто2, СУММА(ОстаткиИОбороты.СуммаОборотКт) ИЗ Календарь КАК Календарь ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиИОбороты КАК ОстаткиИОбороты ПО Календарь.День > ОстаткиИОбороты.Период СГРУППИРОВАТЬ ПО ОстаткиИОбороты.Период, ОстаткиИОбороты.Субконто1, ОстаткиИОбороты.Субконто2 |
|||
22
MistaEr
18.11.13
✎
14:18
|
(19) вот я остановился как раз на (18), а как взять ближайший период, если на каждую дату календаря он берет все даты остатков которые меньше текущей календарной
|
|||
23
Dmitry1c
18.11.13
✎
14:18
|
Кажется, кто-то пишет отчет "Расчет сумм агентских вознаграждений"?
|
|||
24
MistaEr
18.11.13
✎
14:19
|
ага, задача похожая)) проценты по полученным кредитам нужно читать на каждый день
|
|||
25
MistaEr
18.11.13
✎
14:20
|
(24) + тут задача немного другая
|
|||
26
Dmitry1c
18.11.13
✎
14:21
|
(24) я так её и не решил. Сдал другим разом, другой отчет в билете был...
|
|||
27
MistaEr
18.11.13
✎
14:22
|
а я оба раза провалил и вообще забил на этот экзамен((
|
|||
28
MistaEr
18.11.13
✎
14:32
|
(21) нет не то, попробуй сам запусти
|
|||
29
Hmster
18.11.13
✎
14:33
|
Это если тебе для одного договора надо
ВЫБРАТЬ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК День ПОМЕСТИТЬ Календарь ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачДата И &КонДата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ХозрасчетныйОстаткиИОбороты.Период, ЕСТЬNULL(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток, 0) КАК Остаток ИЗ Календарь КАК Календарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( &НачДата, &КонДата, День, , Счет = &Счет, , Организация = &Организация И Субконто1 = &Контрагент И Субконто2 = &Договор) КАК ХозрасчетныйОстаткиИОбороты ПО Календарь.День = ХозрасчетныйОстаткиИОбороты.Период |
|||
30
Холодильник
18.11.13
✎
14:34
|
Обороты бери.
|
|||
31
Hmster
18.11.13
✎
14:36
|
ХозрасчетныйОстаткиИОбороты.Период на Календарь.День заменить надо
|
|||
32
Hmster
18.11.13
✎
14:39
|
а вот примерно так можно получить по списку контрагентов/договоров хоть и через одно место.
ВЫБРАТЬ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК День ПОМЕСТИТЬ Календарь ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачДата И &КонДата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДоговорыКонтрагентов.Владелец КАК Контрагент, ДоговорыКонтрагентов.Ссылка КАК Договор ПОМЕСТИТЬ ДоговорКонтрагента ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Календарь.День, ДоговорКонтрагента.Контрагент, ДоговорКонтрагента.Договор ПОМЕСТИТЬ КалендарьДоговор ИЗ Календарь КАК Календарь, ДоговорКонтрагента КАК ДоговорКонтрагента ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КалендарьДоговор.День, КалендарьДоговор.Контрагент, КалендарьДоговор.Договор, ЕСТЬNULL(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток, 0) КАК Остаток ИЗ КалендарьДоговор КАК КалендарьДоговор ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачДата, &КонДата, День, , Счет = &Счет, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты ПО КалендарьДоговор.День = ХозрасчетныйОстаткиИОбороты.Период И КалендарьДоговор.Контрагент = ХозрасчетныйОстаткиИОбороты.Субконто1 И КалендарьДоговор.Договор = ХозрасчетныйОстаткиИОбороты.Субконто2 |
|||
33
MistaEr
18.11.13
✎
14:51
|
(32) все остатки показывает, так как по всем договорам, не только по определенному счету
|
|||
34
Hmster
18.11.13
✎
14:57
|
(33) и в чем проблема?
|
|||
35
Hmster
18.11.13
✎
15:01
|
в чем суть задачи? не получения данных а именно задачи?
|
|||
36
WildSery
18.11.13
✎
15:03
|
(33) У меня создаётся впечатление, что сам не понимаешь, что хочешь.
Если подойти строго к (18), то Субконто1 и Субконто2 совсем убери - и будет щасте. |
|||
37
MistaEr
18.11.13
✎
15:24
|
(35) у меня должна получиться таблица
01.10.13 - Счет, Субконто1, Субконто1, Сальдо 02.10.13 - Счет, Субконто1, Субконто1, Сальдо ........ и т.д. |
|||
38
Hmster
18.11.13
✎
15:27
|
(37) для чего тебе эта таблица.
огласи начальную задачу, иначе не совсем понятно что в конечном итоге надо получить. может ты вообще не то делаешь. |
|||
39
Hmster
18.11.13
✎
15:28
|
(37) запрос в (32) показывает то ты хочешь, но тебя это не устраивает по своим причинам, поэтому огласи задачу сначала и до конца.
|
|||
40
MistaEr
18.11.13
✎
15:32
|
мне нужно рассчитать процент кредитов на каждый день на счетах учета 66.01, 66.03 пока каждому контрагенту и договору
|
|||
41
MistaEr
18.11.13
✎
15:33
|
когда у меня получится такая таблица, я за день рассчитаю проценты, сгруппирую как нужно и все выгружу в табличную часть документа.
|
|||
42
MistaEr
18.11.13
✎
15:33
|
был бы отчет на СКД, легко можно было бы сделать давно
|
|||
43
Hmster
18.11.13
✎
15:35
|
(42) а в чем проблема получить коллекцию через скд ?
|
|||
44
AugustBlack
18.11.13
✎
15:35
|
(0) если я правильно понял, используй наращиваемый запрос. вот прим. только по месяцам, переделай по дням.
Функция СформироватьВТПоОстаткам(Запрос, НазваниеВТ,Тип = "СНД") Текст = ?(Тип = "СНД","Сальдо начальное ДТ","Сальдо конечное ДТ"); Состояние("Формирование выборки остатков"); ТекстЗапроса = ""; Для Каждого СтрокаМесяца Из ТаблицаМесяцев Цикл Ид = ТаблицаМесяцев.Индекс(СтрокаМесяца); Период = НачалоДня(СтрокаМесяца.Месяц); НазваниеПараметраПериод = "Период"+Ид+"_"+НазваниеВТ+"_"+Тип; Запрос.УстановитьПараметр(НазваниеПараметраПериод, Период); Если ПустаяСтрока(ТекстЗапроса) Тогда ТекстЗапроса = "ВЫБРАТЬ |&"+НазваниеПараметраПериод+" КАК МесяцСписка, |"""+ Текст +""" КАК Документ, |ХозрасчетныйОстатки.Счет КАК Счет, |ХозрасчетныйОстатки.Субконто1 КАК Аналитика, |ХозрасчетныйОстатки.СуммаОстатокДт КАК Сумма |ПОМЕСТИТЬ " + НазваниеВТ Иначе ТекстЗапроса = ТекстЗапроса + " ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ |&"+НазваниеПараметраПериод+" КАК Период, |"""+ Текст +""", |ХозрасчетныйОстатки.Счет КАК Счет, |ХозрасчетныйОстатки.Субконто1 КАК Аналитика, |ХозрасчетныйОстатки.СуммаОстатокДт КАК Сумма"; КонецЕсли; ТекстЗапроса = ТекстЗапроса + " ИЗ |РегистрБухгалтерии.Хозрасчетный.Остатки("+?(Тип = "СКД","ДОБАВИТЬКДАТЕ(&"+НазваниеПараметраПериод+", МЕСЯЦ, 1)","&"+НазваниеПараметраПериод)+", Счет В ИЕРАРХИИ (&СписокСчетовОтчета),&ВидыСубконто, Организация = &Организация) КАК ХозрасчетныйОстатки" + ?(ЗначениеЗаполнено(Подразделение)," ГДЕ ХозрасчетныйОстатки.Подразделение В ИЕРАРХИИ(&Подразделение) " + Символы.ПС,Символы.ПС); КонецЦикла; Возврат ТекстЗапроса; КонецФункции |
|||
45
Hmster
18.11.13
✎
15:39
|
в (32) поменяй
ВЫБРАТЬ ДоговорыКонтрагентов.Владелец КАК Контрагент, ДоговорыКонтрагентов.Ссылка КАК Договор ПОМЕСТИТЬ ДоговорКонтрагента ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов НА ВЫБРАТЬ ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент, ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор ПОМЕСТИТЬ ДоговорКонтрагента ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачДата, &КонДата, , , Счет = &Счет, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты |
|||
46
MistaEr
18.11.13
✎
15:48
|
(44) да ненадо мне в цикле дни обрабатывать, тогда уж я количество дней посчитаю с одного оборота до следующего оборота.
|
|||
47
MistaEr
18.11.13
✎
16:04
|
(45) в дни без движений сальдо не показывает. Друзья Большое всем спасибо. Сам пока занят, а то получается вас задергал а сам не участвую. Что у меня получится, я напишу. Всем еще раз спасибо!!!
|
|||
48
MistaEr
19.11.13
✎
10:49
|
Все же пришлось сделать в цикле:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент, | ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор, | ХозрасчетныйОстаткиИОбороты.Счет КАК Счет, | ХозрасчетныйОстаткиИОбороты.Период КАК День, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт + ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, Счет В (&СчетаКредитовИЗаймов), &ПорядокСубконто, Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты | |УПОРЯДОЧИТЬ ПО | Контрагент, | Договор, | Счет, | День |ИТОГИ | СУММА(СуммаКонечныйОстатокКт) |ПО | Контрагент, | Договор, | Счет, | День ПЕРИОДАМИ(ДЕНЬ, &НачДата, &КонДата) |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("НачДата", НачДата); Запрос.УстановитьПараметр("КонДата", КонДата); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("СчетаКредитовИЗаймов", СчетаКредитовИЗаймов); Запрос.УстановитьПараметр("ПорядокСубконто", ПорядокСубконто); Результат = Запрос.Выполнить(); ВыборкаКонтрагент = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаКонтрагент.Следующий() Цикл ВыборкаДоговор = ВыборкаКонтрагент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДоговор.Следующий() Цикл ВыборкаСчет = ВыборкаДоговор.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаСчет.Следующий() Цикл ВыборкаДень = ВыборкаСчет.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "День", "ВСЕ"); //Проценты на каждый день |
|||
49
WildSery
19.11.13
✎
17:16
|
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент, ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор, ХозрасчетныйОстаткиИОбороты.Счет КАК Счет, ХозрасчетныйОстаткиИОбороты.Период КАК День, ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт + ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокКт ПОМЕСТИТЬ ОстаткиОбороты ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, Счет В (&СчетаКредитовИЗаймов), &ПорядокСубконто, Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОстаткиОбороты.Контрагент, ОстаткиОбороты.Договор, ОстаткиОбороты.Счет, ОстаткиОбороты.День, ОстаткиОбороты.СуммаКонечныйОстатокКт, ЕСТЬNULL(МИНИМУМ(ДОБАВИТЬКДАТЕ(ОстаткиОбороты1.День, ДЕНЬ, -1)), ОстаткиОбороты.День) КАК День1 ПОМЕСТИТЬ ОстаткиПериоды ИЗ ОстаткиОбороты КАК ОстаткиОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиОбороты КАК ОстаткиОбороты1 ПО ОстаткиОбороты.Контрагент = ОстаткиОбороты1.Контрагент И ОстаткиОбороты.Договор = ОстаткиОбороты1.Договор И ОстаткиОбороты.Счет = ОстаткиОбороты1.Счет И ОстаткиОбороты.День < ОстаткиОбороты1.День СГРУППИРОВАТЬ ПО ОстаткиОбороты.Контрагент, ОстаткиОбороты.Договор, ОстаткиОбороты.Счет, ОстаткиОбороты.День, ОстаткиОбороты.СуммаКонечныйОстатокКт ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Календарь.ДатаКалендаря КАК День, ОстаткиПериоды.Контрагент, ОстаткиПериоды.Договор, ОстаткиПериоды.Счет, ОстаткиПериоды.СуммаКонечныйОстатокКт ИЗ ОстаткиПериоды КАК ОстаткиПериоды ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь ПО (Календарь.ДатаКалендаря МЕЖДУ ОстаткиПериоды.День И ОстаткиПериоды.День1) |
|||
50
mistеr
19.11.13
✎
22:45
|
(49) Наконец-то правильное решение
|
|||
51
MistaEr
03.12.13
✎
09:50
|
(49) Самое правильное решение. Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |