Имя: Пароль:
1C
1С v8
Колонка остатка в динамическом списке
0 OnePrg
 
06.04.22
18:57
До перехода на управляемые формы на форме списка документов была доработка - динамическая колонка в которой считалась сумма остатка товаров документа на позицию этого документа.

Как это реализовать в управляемых формах? Вставить в остаток в запрос динамического списка? Как?
1 lubitelxml
 
06.04.22
19:00
Доработать запрос дин. списка, в котором прописать получение остатка
2 Джинн
 
06.04.22
20:09
(0) Идея очень хреновая по своей сути.
3 Смотрящий
 
06.04.22
20:16
(2) Этого ниможет быть, патаму что этого ниможет быть никада-а ...
4 OnePrg
 
06.04.22
20:33
(1) как в запросе списка получить остаток на момент времени каждого документа?
5 Ёпрст
 
06.04.22
20:49
(4) покажи, для начала, как ты его получал в ОФ, ну так, на..
6 Ёпрст
 
06.04.22
20:50
А так, можешь воткнуть ЭТО в ПриПолученииДанныхНаСервере.
7 Ёпрст
 
06.04.22
20:50
8 Ёпрст
 
06.04.22
20:50
ознакомься
9 AlvlSpb
 
06.04.22
21:17
Вот еще по теме хороший результат https://курсы-по-1с.рф/news/2017-12-26-many-values-in-one-cell/
10 OnePrg
 
07.04.22
21:35
Спасибо. В обоих ссылках используется ПриПолученииДанныхНаСервере, а эта штука, как я понял, работает при режиме определённом режиме совместимости. Не хотелось бы менять режим совместимости, чтобы не затронуть другие меъанизмы.
11 OnePrg
 
07.04.22
22:01
(5) сорян, втупил:

в неуправляемых формах я получал не остаток, а сумму из проводок документа, а это вытащить можно
сейчас попробую
12 Ёпрст
 
07.04.22
22:32
(10) у тя че, режим совместимости ниже чем  8.3.10.2168, начиная с которого это реализовано ?
13 OnePrg
 
07.04.22
22:48
(12) 8.3.4
14 OnePrg
 
07.04.22
22:49
колонку вывел
теперь вопрос как по ней итог вывести? как получить список ссылок в журнале?
15 Ёпрст
 
07.04.22
22:51
(13) ё..

(14) можно, но все эти способы в Уф, через жпо. На нимфостарте кучка решений итога по колонке
16 Ёпрст
 
07.04.22
22:53
набери в поиске итоги в дин списке..есть кучка вариантов
17 vde69
 
07.04.22
22:57
Да все просто, делаешь подписку на событие для всех документов и в ней в каждый элемент справочника пишешь актуальный остаток. А в динамическом списке просто выводишь в колонку.
или сделай им не динамический список а отчет "остатки товара" и будет им счастье....


ну а если серьезно - такое можно делать джойном с регистром остатков, только там нюанс со срезом последнего будет. Если хоть чуток промажешь мимо индесков будут жуткие тормоза. По этому выводить остатки в колонку не рекомендуют. Делать можно но будь готов, что будет ужасно тормозить...
18 Джинн
 
07.04.22
23:11
(17) А потом нужно непременно поменять задним числом документ какой-либо. Без этого жизнь не будет веселой.
19 OnePrg
 
08.04.22
12:16
Подскажите как мне вытащить ссылки, что отображены в журнале.

СКД = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();

а дальше?
20 OnePrg
 
08.04.22
14:25
Получилось


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    НастройкиСписка = "...";//при первом вызове посчитаем
    ПодключитьОбработчикОжидания("ПроверкаИзменения",1);
КонецПроцедуры

&НаКлиенте
Процедура ПроверкаИзменения()
    
    НастройкиСпискаТек = "";
    Для Каждого ЭлементПользНастроек Из    Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
        //тут отборы и сортировка - отловим их
        НастройкиСпискаТек = НастройкиСпискаТек + СокрЛП(ЭлементПользНастроек) + СокрЛП(Элементы.Список.Период.ДатаНачала) + СокрЛП(Элементы.Список.Период.ДатаОкончания);
    КонецЦикла;
    //тут добавим в ловушку период списка (если это список документов)
    НастройкиСпискаТек = НастройкиСпискаТек + СокрЛП(Элементы.Список.Период.ДатаНачала) + СокрЛП(Элементы.Список.Период.ДатаОкончания);
    
    Если не НастройкиСписка = НастройкиСпискаТек Тогда    
    
         //чей-то поменялось
        НастройкиСписка = НастройкиСпискаТек;
        
        СчитаемИтогиНаСервере();    
        
    КонецЕсли;
    
КонецПроцедуры

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



Пример брал тут https://v8book.ru/public/568012/


Всем спасибо.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший