Имя: Пароль:
1C
1С v8
Начальные и конечные остатки в запросе
,
0 Deahianaianyrto
 
29.07.14
16:05
Делаю запрос по регистру, приход и расход. Как мне получить из запроса начальный и конечный остаток?
1 Maxus43
 
29.07.14
16:05
регистр остаточный? там спец таблицы есть по сотаткам
2 DmitriyDI
 
29.07.14
16:06
(0) Бери виртуальную таблицу ОстаткиИОброты!
3 Крошка Ру
 
29.07.14
16:06
(0) Будь мужиком, складывай в цикле!
4 Deahianaianyrto
 
29.07.14
16:06
Делаю


        Результат = Запрос.Выполнить();
        Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Регистратор");
        Строка = Макет.ПолучитьОбласть("Строка");
        НачОст.Параметры.НачОст = Выборка.НачОст;
        Таб.Вывести(НачОст);
        Пока Выборка.Следующий() Цикл
            Строка.Параметры.Документ = Выборка.Регистратор;
            Строка.Параметры.Приход = Выборка.Приход;
            Строка.Параметры.Расход = Выборка.Расход;
            Строка.Параметры.ДокументРасш = Выборка.Регистратор;
            Таб.Вывести(Строка);
            
            
        КонецЦикла;
        КонОст.Параметры.КонОст = Выборка.КонОст;
        Таб.Вывести(КонОст);



Не выводит в таблицу начальный и конечный остаток
5 Deahianaianyrto
 
29.07.14
16:07
Запрос:

        Запрос.Текст = "ВЫБРАТЬ
                       |    СвободныеОстаткиОстаткиИОбороты.Номенклатура КАК Номенклатура,
                       |    СвободныеОстаткиОстаткиИОбороты.Регистратор КАК Регистратор,
                       |    СвободныеОстаткиОстаткиИОбороты.Склад КАК Склад,
                       |    СУММА(СвободныеОстаткиОстаткиИОбороты.ВРезервеСоСкладаНачальныйОстаток) КАК НачОст,
                       |    СУММА(СвободныеОстаткиОстаткиИОбороты.ВРезервеСоСкладаКонечныйОстаток) КАК КонОст,
                       |    СУММА(СвободныеОстаткиОстаткиИОбороты.ВРезервеСоСкладаПриход) КАК Приход,
                       |    СУММА(СвободныеОстаткиОстаткиИОбороты.ВРезервеСоСкладаРасход) КАК Расход
                       |ИЗ
                       |    РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , ) КАК СвободныеОстаткиОстаткиИОбороты
                       |ГДЕ
                       |    СвободныеОстаткиОстаткиИОбороты.Номенклатура = &Номенклатура
                       |    И СвободныеОстаткиОстаткиИОбороты.Склад = &Склад
                       |
                       |СГРУППИРОВАТЬ ПО
                       |    СвободныеОстаткиОстаткиИОбороты.Регистратор,
                       |    СвободныеОстаткиОстаткиИОбороты.Номенклатура,
                       |    СвободныеОстаткиОстаткиИОбороты.Склад
                       |ИТОГИ
                       |    СУММА(НачОст),
                       |    СУММА(КонОст),
                       |    СУММА(Приход),
                       |    СУММА(Расход)
                       |ПО
                       |    ОБЩИЕ,
                       |    Номенклатура,
                       |    Склад,
                       |    Регистратор";
6 Deahianaianyrto
 
29.07.14
16:07
(3) А начальный остаток?
7 Maxus43
 
29.07.14
16:12
чем тебя не устраивает нач и кон остаток?
Группировка не нужна, убирай.
8 DmitriyDI
 
29.07.14
16:13
(6) выгрузи результат в ТЗ и посмотри и прикинь как он тебе должен выводить,
пока ты не обратился к Выборка.Следующий() ты не можешь брать данные из ВЫборка
9 Крошка Ру
 
29.07.14
16:14
(4)Странно. Вообще вот на эти штуки ругаться должен:

НачОст.Параметры.НачОст = Выборка.НачОст;
КонОст.Параметры.КонОст = Выборка.КонОст;
10 Крошка Ру
 
29.07.14
16:14
Выборка-то не спозиционирована
11 DmitriyDI
 
29.07.14
16:17
(4)         Результат = Запрос.Выполнить();
        ТЗ = Результат.Выгрузить();
        Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Регистратор");
        Строка = Макет.ПолучитьОбласть("Строка");
        НачОст.Параметры.НачОст = ТЗ[0].НачОст;
        Таб.Вывести(НачОст);
        Пока Выборка.Следующий() Цикл
            Строка.Параметры.Документ = Выборка.Регистратор;
            Строка.Параметры.Приход = Выборка.Приход;
            Строка.Параметры.Расход = Выборка.Расход;
            Строка.Параметры.ДокументРасш = Выборка.Регистратор;
            Таб.Вывести(Строка);
            
            
        КонецЦикла;
        КонОст.Параметры.КонОст = ТЗ[ТЗ.Количество()-1].КонОст;
        Таб.Вывести(КонОст);

Так будет как ты хочешь, но криво и коряво)
12 Wobland
 
29.07.14
16:18
(9) там неопределено. ну хочет человек неопределену
13 Wobland
 
29.07.14
16:19
(11) хорошо, если в ТЗ что-то будет
14 DmitriyDI
 
29.07.14
16:21
(13) Если что-то выдает ему код в (4), то что-то в ТЗ будет полюбому)
15 DmitriyDI
 
29.07.14
16:21
(14) полюбому = по любому
16 Wobland
 
29.07.14
16:22
(14) вообще не повод г-кодить
17 Рэйв
 
29.07.14
16:23
аминь
18 Крошка Ру
 
29.07.14
17:06
(15) В данном случае "по любому" = "по-любому"
19 DmitriyDI
 
29.07.14
17:10
(18) спасибо за подсказку)