Имя: Пароль:
1C
 
"Мягкое" обновление табличного поля
0 extrim-style
 
15.01.15
16:20
Появилась необходимость добавить в справочник Номенклатуры табличное поле с остатками в разрезе складов для текущей номенклатуры. Обычные формы. Выбрал запросом данные, выгрузил в ТЗ, присвоил ТЗ данным табличного поля. При таком подходе при навигации по позициям номенклатуры каждый раз происходит "моржок", даже если данные по складам и остаткам не изменились. Написал такую "плюху":

        ТЗ = Запрос.Выполнить().Выгрузить();
        Колво = ОстаткиПоСкладам.Количество();
        Для Сч = 1 по Колво Цикл
            Если ТЗ.Найти(ОстаткиПоСкладам[Колво - Сч].Склад, "Склад") = Неопределено Тогда
                 ОстаткиПоСкладам.Удалить(Колво - Сч);
            КонецЕсли;
        КонецЦикла;        
        Для каждого Стр из ТЗ Цикл
            СтрСклад = ОстаткиПоСкладам.Найти(Стр.Склад, "Склад");
            Если СтрСклад <> Неопределено Тогда
                Если СтрСклад.Количество <> Стр.Количество Тогда
                    СтрСклад.Количество = Стр.Количество;
                КонецЕсли;
            Иначе
                НовСтр = ОстаткиПоСкладам.Добавить();
                НовСтр.Склад = Стр.Склад;
                НовСтр.Количество = Стр.Количество;
            КонецЕсли;
        КонецЦикла;
        ОстаткиПоСкладам.Сортировать("Склад, Количество");

Текущий вариант визуально устраивает, но "плюха" не устраивает. Может, можно решить эту задачу проще? Спасибо).
1 Garykom
 
гуру
15.01.15
16:28
(0) вы извращенец батенька

1. Если остатки меняются не так часто или понемногу то в спр. номенклатура сделать таблчасть остатки по складам и перезаполнять ее периодически (когда нужны такие по всем) или при движениях (приход/расход - тут быстрее будет тольк для затронутой номенклатуры)
т.к. данные уже готовые и у номенклатуры то показ мгновенно

2. Задержка расчета остатков пока движемся по номенклатуре )) Т.е. пока не постояли на номенклатуре 1 сек ничего не берем ниоткуда = сделать кнопку "Показать остатки"
2 mehfk
 
15.01.15
16:31
(0) В типовой УТ ничего не моргает.
3 extrim-style
 
15.01.15
16:32
(2) я знаю, что это реализовано в типовой УТ. Но у меня её нет на посмотреть.
4 extrim-style
 
15.01.15
16:35
(1) обновлять открытые формы - еще тот гемор
5 DexterMorgan
 
15.01.15
16:36
(1) Сам извращенец для таких задач таб часть юзать. При каждом изменении остатков ловить перезапись объекта и т.д. Если уж и хранить то в РС.
6 Garykom
 
гуру
15.01.15
16:39
(5) изврат да, но табчасть быстрее будет и проще

ЗЫ доп.реквизиты же хранят в табчасти в типовых ))
7 DexterMorgan
 
15.01.15
16:40
(6) есть доп реквизиты, а есть доп сведения которые хранятся в РС. Ничего она не быстрее и не проще. Правда хз, может ты только таб части можешь добавлять, тогда тебе проще
8 DexterMorgan
 
15.01.15
16:42
(6) соответственно изменения доп сведения не вызывают перезаписи объекта в отличии от доп реквизитов. Что юзать от прикладной задачи зависит
9 Garykom
 
гуру
15.01.15
16:43
(7) да согласен что в РС будет правильнее, но написал же в (1) что "если остатки меняются не так часто или понемногу"

если потом еще что захочется, не только по складам но и цены или срок годности там видеть, то однозначно РС
10 DexterMorgan
 
15.01.15
16:43
(6) кстати пример РС "ДоступныеОстаткиПланируемыхПоступлений", который выводится в частности в панели навигации номенклатуры в УТ11
11 extrim-style
 
15.01.15
16:45
(2) как в УТ сделано?