|
Нулевые остатки по дням | ☑ | ||
---|---|---|---|---|
0
ittaxi
23.08.17
✎
15:52
|
отчет депозит по водителям получить по дням
НаСервере Процедура ОтчетДепозит() ТабЧастьДепозит = Отчет.ТабличнаяЧастьДепозитВодителей; НачалоПериода = Отчет.НачалоПериода; ОкончаниеПериода = Отчет.КонецПериода; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РегистрНакопленияДепозитОстаткиИОбороты.Водитель.Фамилия КАК ВодительФамилия, | РегистрНакопленияДепозитОстаткиИОбороты.ДепозитОборот КАК ДепозитОборот, | РегистрНакопленияДепозитОстаткиИОбороты.ДепозитПриход КАК ДепозитПриход, | РегистрНакопленияДепозитОстаткиИОбороты.ДепозитРасход КАК ДепозитРасход, | РегистрНакопленияДепозитОстаткиИОбороты.Период КАК Период | |ИЗ | РегистрНакопления.РегистрНакопленияДепозит.ОстаткиИОбороты (&НачалоПериода,&ОкончаниеПериода,День,) КАК РегистрНакопленияДепозитОстаткиИОбороты | |ГДЕ | | РегистрНакопленияДепозитОстаткиИОбороты.Водитель.Фамилия = &ДепозитКонечныйОстаток |УПОРЯДОЧИТЬ ПО | ВодительФамилия"; Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода ); Запрос.УстановитьПараметр("ОкончаниеПериода", ОкончаниеПериода ); Запрос.УстановитьПараметр("ДепозитКонечныйОстаток", "Пупкин" ); Результат = Запрос.Выполнить().Выбрать(); ТабЧастьДепозит.Очистить(); Пока Результат.Следующий() Цикл НоваяСтрока = ТабЧастьДепозит.Добавить(); НоваяСтрока.Водитель = Результат.ВодительФамилия; НоваяСтрока.Депозит = Результат.ДепозитОборот; НоваяСтрока.Дата = Результат.Период; КонецЦикла; КонецПроцедуры получаю только те дни где есть движение. как получить по дням которые указываешь в параметрах? например с 01 по 05 и получить 01 = 0 02 = 500 03 = -500 04 = 0 05 = 0 |
|||
1
X Leshiy
23.08.17
✎
15:55
|
Запрос в цикле!!!
|
|||
2
term1t52
23.08.17
✎
15:57
|
Сгенерируйте таблицу дней, например по производственному календарю, с ней соединитесь
|
|||
3
МихаилМ
23.08.17
✎
15:58
|
в поиск по "остатки на каждый день"
|
|||
4
term1t52
23.08.17
✎
15:58
|
Или в СКД есть функции дозаполнения, вроде как для таких случаев
|
|||
5
ittaxi
23.08.17
✎
16:00
|
(1) нет
|
|||
6
X Leshiy
23.08.17
✎
16:02
|
(5) Переходи на темную сторону, у нас есть печеньки!
|
|||
7
ittaxi
23.08.17
✎
16:03
|
(2) база самописная нет производственного календаря
|
|||
8
akpaevj
23.08.17
✎
16:08
|
Если отчет строится с помощью СКД, то в группировке периода выбери "Тип дополнения" - День, получишь то, что хочешь.
|
|||
9
ittaxi
23.08.17
✎
16:09
|
(8) нет, не скд просто запрос
|
|||
10
Irbis
23.08.17
✎
16:10
|
(9) так сделай ТЗ с днями, её как параметр в запрос и цепляй к ней всё
|
|||
11
ittaxi
23.08.17
✎
16:23
|
(8) "Тип дополнения" найти не могу где это
|
|||
12
akpaevj
23.08.17
✎
16:32
|
НачалоПериода = '20170801';
КонецПериода = '20170831'; ТаблицаЗначений = Новый ТаблицаЗначений; ТаблицаЗначений.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата")); Для Сч = 0 По (КонецПериода - НачалоПериода) / 86400 Цикл НоваяСтрока = ТаблицаЗначений.Добавить(); НоваяСтрока.Период = НачалоПериода + (Сч * 86400); КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТаблицаПериодов.Период |ПОМЕСТИТЬ ВТ_ТаблицаПериодов |ИЗ | &ТаблицаПериодов КАК ТаблицаПериодов |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ТаблицаПериодов.Период, | ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоОстаток |ИЗ | ВТ_ТаблицаПериодов КАК ВТ_ТаблицаПериодов | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК ТоварыНаСкладахОстаткиИОбороты | ПО ВТ_ТаблицаПериодов.Период = ТоварыНаСкладахОстаткиИОбороты.Период"; Запрос.УстановитьПараметр("ТаблицаПериодов", ТаблицаЗначений); Запрос.УстановитьПараметр("КонецПериода", КонецПериода); Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); |
|||
13
ittaxi
23.08.17
✎
16:34
|
(12) сейчас попробую
|
|||
14
term1t52
23.08.17
✎
16:40
|
(11) В СКД. Ты же написал, что у тебя не СКД
|
|||
15
ittaxi
23.08.17
✎
16:46
|
(14) ну я начал делать через СКД
|
|||
16
akpaevj
23.08.17
✎
16:49
|
||||
17
akpaevj
23.08.17
✎
16:51
|
Извиняюсь, не то выложил.
Вот http://www.picshare.ru/view/8247733/ |
|||
18
Бубр
23.08.17
✎
16:52
|
(11) в параметрах виртуальной таблицы
|
|||
19
akpaevj
23.08.17
✎
16:53
|
(18) В параметрах - "Метод дополнения". Это несколько другое
|
|||
20
ittaxi
23.08.17
✎
17:05
|
(12) работает спасибо большое
|
|||
21
Tateossian
23.08.17
✎
19:29
|
ОП, не слушай вот этого (10). Вот тебе запрос, сделает календарь за лююой период
ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период ПОМЕСТИТЬ Периоды ИЗ (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК aa, (ВЫБРАТЬ 0 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК bb, (ВЫБРАТЬ 0 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc, (ВЫБРАТЬ 0 КАК d ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd ГДЕ aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) |
|||
22
Tateossian
23.08.17
✎
19:31
|
(21) И этот календарь соединяй по периоду с временной таблицей, выгруженной и проиндексированной по периоду из виртуальной таблицы.
|
|||
23
akpaevj
23.08.17
✎
21:20
|
(22) разница исключительно в объёме кода и в том, что в Вашем варианте расчёт дней происходит средствами базы данных. По поводу индексирования - соглашусь, при значительных объёма.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |