Имя: Пароль:
1C
1С v8
Загрузка в табличное поле без зависания + сортировка по алфавиту
0 never_be
 
27.03.13
15:15
На форме в табличное поле загружаю список номенклатуры с остатками, это занимает какое-то время и в этот момент форма просто висит, можно ли как-то сделать чтоб загрузка была видимой, было видно как появляется каждое новое поле ?

Также не могу найти как сделать чтоб после загрузки применилась сортировка по алфавиту.
1 salvator
 
27.03.13
15:17
1. Нафига?
2. Метод Сортировать, смотри СП
2 never_be
 
27.03.13
15:24
(1) Бесит, при загрузки было бы видно что список загружается, удобней.
3 Reset
 
27.03.13
15:25
(2) Сделай
Состояние("Список загружается епта");
4 Reset
 
27.03.13
15:26
Построчное добавление строк в ТЗ и постоянное обновление формы - вредительство, я считаю
5 never_be
 
27.03.13
15:27
(4) Зато пользователь спокоен, а не напрягает почему у меня висит.
6 salvator
 
27.03.13
15:29
(2) У тебя скорее всего 99% времени выполянется запрос по остаткам. Поверь, визуально добавление строк отследить невозможно. Так что не занимайся ерундой.
(5) Пользователю посоветуй сделать зарядку в это время, полезно.
7 never_be
 
27.03.13
15:31
(6) Буду пробовать как-то оптимизировать.
8 salvator
 
27.03.13
15:33
(7) Кинь-ка код
9 never_be
 
27.03.13
15:36
(8) Просьба не лошить я в 1С новичек.


Результат.Очистить();

    //----Загрузка остатка на начало-------//
    Фильтр = Новый Структура;
    Фильтр.Вставить("Склад",СкладПВ);
    СумОст = РегистрыНакопления.уатПартииТоваровНаСкладах.Остатки(НачалоДня(НачПериода),Фильтр);
    Для каждого строка из СумОст Цикл
    ПР = Ложь;
   
        Для Каждого Тек из Результат Цикл
           
            Если Тек.НаименованиеРус = строка.Номенклатура Тогда
             ПР = Истина;
             Тек.ОстатокНаНачало = Тек.ОстатокНаНачало + строка.Количество;
            КонецЕсли;    
           
        КонецЦикла;    
       
     Если НЕ ПР Тогда        
     НоваяСтрока = Результат.Добавить();
     НоваяСтрока.НаименованиеТур = строка.Номенклатура.НаименованиеТур;
     НоваяСтрока.НаименованиеРус = строка.Номенклатура;
     НоваяСтрока.Код1 = строка.Номенклатура.Артикул;
     НоваяСтрока.Код2 = строка.Номенклатура.Артикул2;
     НоваяСтрока.ОстатокНаНачало = строка.Количество;
     КонецЕсли;
    КонецЦикла;
    //-------------------------------------------//
10 salvator
 
27.03.13
15:43
А зачем ты перебираешь "Результат", если перед этим его очищаешь?
11 H A D G E H O G s
 
27.03.13
15:43
НоваяСтрока.НаименованиеТур = строка.Номенклатура.НаименованиеТур;
     НоваяСтрока.НаименованиеРус = строка.Номенклатура;
     НоваяСтрока.Код1 = строка.Номенклатура.Артикул;
     НоваяСтрока.Код2 = строка.Номенклатура.Артикул2;

Четкая денормализация, респект таким поцанам.
12 H A D G E H O G s
 
27.03.13
15:45
Читаем сп, неофит

<Измерения> (необязательный)

Тип: Строка.
Список измерений, для которых надо получить остатки. Строка, содержащая имена измерений, разделенные запятыми.
Если параметр не указан или указана пустая строка, то остатки будут сформированы по всем измерениям.
13 H A D G E H O G s
 
27.03.13
15:45
И привыкаем делать все запросом.
14 H A D G E H O G s
 
27.03.13
15:46
Короче, парень, найди себе взрослого дяденьку и на пару лет к нему в ученики строгать кот. Ну как в Древней Спарте! И будет толк.
15 Михаил Козлов
 
27.03.13
15:47
(0) Можно индикатор на форму поместить. Например, на нижнюю командную панель.
16 H A D G E H O G s
 
27.03.13
15:49
(15) остатки заполнятся за 1 секунду. Индекатор непоможет.
17 H A D G E H O G s
 
27.03.13
15:51
У него СумОст - толпа номенклатур в разрезе серий, характеристик, организации, партий и прочей мутотени.
18 never_be
 
27.03.13
15:54
(14) Да сам уже дядька, поздно мне в ученики. Я не зарабатываю этим.
(10) (17) Из-за непонимания сделал так как есть, просто в полученной таблице СумОст есть одинаковые записи я их так объединаяю ))

Понял что надо все переделать на запросы и будет все быстро.
19 never_be
 
27.03.13
15:55
Да и еще, я не хочу проверять для каждой номенклатуры есть ли по ней остаток, так как сделал я хоть и очень криво но я получаю остаток только по номенклатуре по которой были движения.
20 salvator
 
27.03.13
16:04
(19) Это все можно сделать в одном запросе без условий и циклов.
21 never_be
 
27.03.13
16:09
(20) Я вывожу еще остатки на конец периода и приход, расход, полный код страшно показывать :)
22 H A D G E H O G s
 
27.03.13
16:22
(21) ОстаткиИОбороты - это твой идеальный вариант.
23 never_be
 
27.03.13
17:00
Добавил параметров в выборку остатков, ушел 1 цикл но на время загрузки это не повлияло :)


    //----Загрузка остатка на начало-------//
    Фильтр = Новый Структура;
    Фильтр.Вставить("Склад",СкладПВ);
    СумОст = РегистрыНакопления.уатПартииТоваровНаСкладах.Остатки(НачалоДня(НачПериода),Фильтр,"Номенклатура, Склад","Количество");
    Для каждого строка из СумОст Цикл        
     НоваяСтрока = Результат.Добавить();
     НоваяСтрока.НаименованиеТур = строка.Номенклатура.НаименованиеТур;
     НоваяСтрока.НаименованиеРус = строка.Номенклатура;
     НоваяСтрока.Код1 = строка.Номенклатура.Артикул;
     НоваяСтрока.Код2 = строка.Номенклатура.Артикул2;
     НоваяСтрока.ОстатокНаНачало = строка.Количество;
    КонецЦикла;
    //-------------------------------------------//
24 never_be
 
27.03.13
17:03
(22) Щас разбираюсь с ними. Спасибо.