Имя: Пароль:
1C
1С v8
Получить аналог ОСВ запросом
0 Kifsif
 
05.01.15
21:07
Хочу получить запросом нечто аналогичное ОСВ без детализации по субсчетам.

Т.е. Счет, СальдоНачДТ, СальдоНачКТ, ОборотДТ, ОборотКТ, СальдоКонДТ, СальдоКонКт.

Запрос такой:

ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачГраница, &КонГраница, Период, ДвиженияИГраницыПериода, Счет В ИЕРАРХИИ (&МассивСчетов), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты

УПОРЯДОЧИТЬ ПО
    ХозрасчетныйОстаткиИОбороты.Счет
ИТОГИ
    СУММА(СуммаНачальныйОстатокДт),
    СУММА(СуммаНачальныйОстатокКт),
    СУММА(СуммаОборотДт),
    СУММА(СуммаОборотКт),
    СУММА(СуммаКонечныйОстатокДт),
    СУММА(СуммаКонечныйОстатокКт)
ПО
    ОБЩИЕ

Проблемы такие:
1. Итоги получены только по оборотам за период. Почему не получены для начальных и конечных остатков?
2. Это ведь только то, что участвует в проводках. А как мне укрупнить до счетов, которые являются группами и не участвуют в проводках? Т.е. мне надо получить данные для счета 01, а не для 01.1 и прочих субсчетов.

Был бы признателен за помощь.
1 GANR
 
05.01.15
21:34
(0) Первое, что пришло в голову: итоги по Счет ИЕРАРХИЯ, а не по ОБЩИЕ как в топике. Ну а далее - выполнить запрос, сделать выборку с обходом результата запроса по группировкам с иерархией и выбрать из результата запроса только первый уровень. Ну и тупо пройтись Выборка.Следующий() до конца - должны вывалиться синтетические счета и только они. Идея понятна? Я ничего не упустил?
2 Kifsif
 
05.01.15
21:45
(1) Спасибо. Со вторым вопросом полегчало.

А с первым что? Почему не по общие?

Сейчас сделал вот так:

ИТОГИ
    СУММА(СуммаНачальныйОстатокДт),
    СУММА(СуммаНачальныйОстатокКт),
    СУММА(СуммаОборотДт),
    СУММА(СуммаОборотКт),
    СУММА(СуммаКонечныйОстатокДт),
    СУММА(СуммаКонечныйОстатокКт)
ПО
    общие,
    Счет Иерархия


То же самое - итоги по начальным и конечным остаткам не считаются.
3 GANR
 
05.01.15
21:46
(2) ОБЩИЕ убрать
4 GANR
 
05.01.15
21:47
+(3) и обходить только корневой уровень иерархии (синтетические счета)
5 Kifsif
 
05.01.15
21:51
(4) Не понимаю. Сальдо есть ведь. Почему бы итоги не взять.

Не то чтобы я против твоего способа. Просто разобраться хочу. Вот если пойму - почему не считает итоги, то здорово. А так - ну, непонятно ничего.
6 GANR
 
05.01.15
22:20
(5) Можно ОБЩИЕ оставить - будут общие итоги по всей синтетике. Тогда надо будет сначала по ОБЩИЕ выборку сделать, а потом внутри нее - по Счет и задать способ обхода ПоГруппировкамСИерархией - ну и методом Следующий обойти. Если не понятно внимательно проанализируй в синтаксис-помощнике типы данных РезультатЗапроса, ВыборкаИзРезультатаЗапроса и их метод Выбрать(...).
7 Kifsif
 
05.01.15
22:23
(6) Да, хорошо бы Общие оставить. Только - вот беда - цифры-то выдает не те, что я ожидаю. Еще раз - итоги по оборотам посчитал хорошо. А итоги по сальдо начальному и конечному пустые оказались.
8 GANR
 
05.01.15
22:24
(7) Код выложи в ветку
9 GANR
 
05.01.15
22:24
+(8) Вместе с алгоритмом обхода результата запроса!!!
10 GANR
 
05.01.15
22:26
А счета/субконто, случайно не оборотные???
11 Kifsif
 
05.01.15
22:37
Нет. Счета 01, 02 и т.п.

Вот как все выглядит:
https://drive.google.com/file/d/0B9-evERgNlKUczdsbV9HZW5mdEU/view?usp=sharing

Не видно последнюю колонку. Там есть цифры по некоторым счетам. Но общих итогов нет.
12 GANR
 
05.01.15
22:49
(11) Хм... Интересно, а как в типовой 1С:Бухгалтерии выглядит этот самый алгоритм получения начальных/конечных сальдо? Просто под рукой нету конфы - посмотрел бы.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.