Имя: Пароль:
1C
1C 7.7
v7: Как получить остатки и измерения из регистра остатки.
0 botman4
 
23.07.16
18:48
Суть такая, есть регистр остатков "Остатки":

Измерения:
-Номенклатура
-Склад
-ВсеСоВставкой
-ВесВставки
-ВесБезВставки
-ВесПотерь

Ресурсы:
-Количество.

хочется, знаЯ Номенклатуру и Склад получить остатки и остальные остатки по этим измерениям.
Я сделал вот такой выкрутас:

    Рег=СоздатьОбъект("Регистр.Остатки");
    Рег.УстановитьЗначениеФильтра("Номенклатура", НужноеИзделие);
    Рег.УстановитьЗначениеФильтра("МестоХранения", МХ);
    Рег.ВременныйРасчет();
    Если (ТекДок.Выбран() = 1 ) И (ТекДок.ПолучитьПозицию() <= ПолучитьПозициюТА()) Тогда
        РассчитатьРегистрыНа(ТекДок);
    Иначе  
        ПоследнийДок = ПолучитьПозициюТА();
        РассчитатьРегистрыПо(ПоследнийДок);
    КонецЕсли;

    Рег.ВыбратьИтоги();        
    Пока Рег.ПолучитьИтог()=1 Цикл        
        ТзОстатки.НоваяСтрока();
        ТзОстатки.Изделие     = НужноеИзделие;    
        ТзОстатки.ВесСоВставкой = Рег.ВесСоВставкой;
        ТзОстатки.ВесВставки     = Рег.ВесВставки;
        ТзОстатки.ВесБезВставки = Рег.ВесБезВставки;
        ТзОстатки.ВесПотерь     = Рег.ВесПотерь;
        ТзОстатки.Остатки     = Рег.Количество;        
    КонецЦикла;
    
    ТзОстатки.Свернуть("1,2,3,4,5",6);
    
    ТзОстатки.ВыбратьСтроки(); // Удаляем строки в которых количество = 0
    Пока ТзОстатки.ПолучитьСтроку() = 1 Цикл
        Пока (ТзОстатки.Остатки = 0) и (ТзОстатки.НомерСтроки <> 0)  Цикл
            ТзОстатки.УдалитьСтроку();            
        КонецЦикла;
    КонецЦикла;

По итогу я получаю нужную мне инфу, можно ли как-то сделать проще?
СПАСИБО.
1 botman4
 
23.07.16
18:49
Поправочка:
хочется, знаЯ Номенклатуру и Склад получить остатки и остальные измерениям.
2 Vladal
 
23.07.16
18:51
Можно это сделать запросом. Правда, в 7.7 запросы работают медленно, как и выборка.

Создай конструктором запросов запрос к регистру, посмотри, что получится - меньше кода, не нужно будет проверять на нулевой остаток - все данные готовы и красивы.
3 Злопчинский
 
23.07.16
22:26
Нельзя так удалять строки как в примере
Баянище страшный
Задумайся о чайник бесстрашный какой строкой станет строка после удаления текущей и что будет с этой строкой после получитьстроку по циклу
4 vcv
 
24.07.16
09:04
Короче будет не цикл с ВыбратьИтоги и ПолучитьИтог, а одна строчка ВыгрузитьИтоги.
5 impulse9
 
24.07.16
09:12
(0) цикл с удалением строк по условию надо делать С КОНЦА
6 botman4
 
24.07.16
09:15
(4) Точняк, спасибо.
7 Это_mike
 
24.07.16
11:36
(2) запрос делает примерно то же самое, что и расчет итогов на какой-то момент.
(6) читай СП, и тебе воздастся...