Имя: Пароль:
1C
1С v8
Запрос к РегиструНакопления по дням....
0 warkan
 
09.06.18
09:20
Всем добра!
В 100500-й раз уже, наверное... но из того, что нашел - не смог слепить рабочий вариант. :(
Подскажите, пожалуйста,
как из РегистраНакопления (остатки) получить начОстаток/Приход/Расход/конОстаток на каждый день, вне зависимости от наличия движений в этот день? Запросом, я полагаю.
Уж и с таблицей, заполненной "днями" соединял... А всё равно: либо ничего, либо только те периоды, когда есть движение...
Подскажите, пожалуйста, направление?...

Большое спасибо!
1 Михаил Козлов
 
09.06.18
09:24
Данные должны быть и по дням, когда есть начальные или конечные остатки.
Т.е. данных не будет, если нет ни остатков, ни оборотов.
Если таковые нужны, выбирайте измерения и соединяйтесь с регистром.
2 d4rkmesa
 
гуру
09.06.18
09:35
Проще всего воспользоваться СКД:
https://its.1c.ru/db/metod8dev/content/1587/hdoc
3 warkan
 
09.06.18
09:36
Передал в Запрос таблицу, заполненную НачалоДня(КаджыйДеньПериода). Создал временную таблицу.
Запрос к РегиструНакопления с левым соединением к предыдущей временной таблице.
Так?

    Запрос.Текст = "ВЫБРАТЬ
                   |    табДат.Период
                   |ПОМЕСТИТЬ втДниПериода
                   |ИЗ
                   |    &табДат КАК табДат
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
                   |    ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
                   |    ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
                   |    ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
                   |    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
                   |    ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
                   |    втДниПериода.Период,
                   |    ТоварыНаСкладахОстаткиИОбороты.Период КАК Период1
                   |ИЗ
                   |    втДниПериода КАК втДниПериода
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
                   |                &ПериодНачало,
                   |                &ПериодОкончание,
                   |                Запись,
                   |                ,
                   |                Склад = &Склад
                   |                    И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстаткиИОбороты
                   |        ПО втДниПериода.Период = ТоварыНаСкладахОстаткиИОбороты.Период
                   |ГДЕ
                   |    ТоварыНаСкладахОстаткиИОбороты.Склад = &Склад
                   |    И ТоварыНаСкладахОстаткиИОбороты.Номенклатура = &Номенклатура
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Склад,
                   |    Номенклатура
                   |ИТОГИ
                   |    СУММА(КоличествоНачальныйОстаток),
                   |    СУММА(КоличествоПриход),
                   |    СУММА(КоличествоРасход),
                   |    СУММА(КоличествоКонечныйОстаток)
                   |ПО
                   |    Склад,
                   |    Номенклатура";
4 warkan
 
09.06.18
09:37
Выдаёт пустоту.
Убираешь связь - дает данные, но только в периоды/дни, когда есть движения...

СКД.... А разве принцип организации запроса не одинаков?
Не куримши пока СКД... :( (ламьё виснутое...)
5 warkan
 
09.06.18
09:42
Может в запросе, как-то, сделать подзапрос... Но как в него передать, как параметры НачалоПериода и КонецПериода
НачалоДня() и КонецДня() текущего значения "Период" из основного запроса....

Ну, либо же СКД... Или цикл по дням с кучей вызовов запроса :(((...
6 hhhh
 
09.06.18
09:44
(5) вот тут

ТоварыНаСкладахОстаткиИОбороты.Период

уверен, что у тебя время документа жестко 0ч 00 мин 00 сек. Во всех документах по всей базе?
7 d4rkmesa
 
гуру
09.06.18
09:50
(5) Простое соединение тут ничего не даст, т.к. нам нужно "спроецировать" остатки в те дни, когда нет оборотов, из предыдущего периода. Т.е. нужно брать начальный или конечный остаток, таблицу с изменениями(оборотами) и тета-соединением добиться желаемого. Вариантов может быть много, вот не самый плохой(с весьма ценными комментами):
http://catalog.mista.ru/public/102435/
8 warkan
 
09.06.18
12:55
(7) !!! МегаОгромное Спасибо !!!!
Изучаю.....
9 warkan
 
09.06.18
12:58
А попутно?....
Пробую на СКД... Отчего-то не выводится "Период" в вот такой группировке:
Склад,
Номенклатура,
Период.

Это от запроса в источнике данных зависит?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший