Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Итог по колонке "Сумма" в динамическом списке.

Итог по колонке "Сумма" в динамическом списке.
Я
   Sevish
 
04.08.21 - 10:15
Добрый день!
Есть динамический список с отборами и с возможностью пользователя поиском дополнительно отбирать строки. Всё работает.
Создал кнопку "Рассчитать итоги" и в подвал "Суммы" выводится итог.
Хочется это автоматизировать.
Есть событие &НаСервереБезКонтекста ПриПолученииДанныхнаСервере. Там есть строки, я могу посчитать сумму и всё... В подвал разумеется никак не вставить.
Поэтому вопрос: как с &НаСервереБезКонтекста вызвать процедуру на &НаСервере (хотя бы) с параметром, там бы вставил в подвал.
Или есть какие-то иные методики?
   Yardman
 
1 - 04.08.21 - 10:44
>Поэтому вопрос: как с &НаСервереБезКонтекста вызвать процедуру на &НаСервере (хотя бы) с параметром, там бы вставил в подвал.

Ни как.
Суть на &НаСервереБезКонтекста в том что при вызове обновленное состояние формы не передаётся на сервер (из экономии) - т.е. актуального состояния формы в момент вызова на сервере нет - поэтому вызвать &НаСервере ни как не получится.
В ПриПолученииДанныхНаСервере это &НаСервереБезКонтекста потому что динмамический список сам получает данные без передачи контекста (опять же из экономии), а это просто пост обработчик на получении данных.

P.S. Но даже если бы ПриПолученииДанныхНаСервере был контекстным, кажется это бы ни как не помогло в решении озвученной задачи - в обработчик ведь передаются только строки считанные в этом вызове, а не все вообще.
Сейчас озвученная задача хорошо не решается.
   Вафель
 
2 - 04.08.21 - 10:52
только дважды выполнять запрос. но нужно учитывать, что полный запрос по всем строкам может ОЧЕНЬ долго делать. ведь это же фулл скан
   ptiz
 
3 - 04.08.21 - 11:08
(0) Кроме обработки ожидания или системы взаимодействия - ничего другого вроде нет.
   ДенисЧ
 
4 - 04.08.21 - 11:09
(3) Есть. События на изменение отборов - точно есть.
И по нему получать текущий запрос списка, доделать его для получения итогов и вывести - тоже можно. Правда, скорость...
   Мигрень
 
5 - 04.08.21 - 11:14
всё очень просто, вызываешь скд объект динсписка, выгружаешь данные из объекта в ТЗ и считаешь итоги любой колонки
   ptiz
 
6 - 04.08.21 - 11:17
(4) Я именно про передачу данных из процедуры без контекста "наружу".
Сразу уж спрошу: "События на изменение отборов - точно есть." - а какое?
   Sevish
 
7 - 04.08.21 - 11:24
В принципе да, все правы. Я понимал что нет решения, но надеялся что может что-то появилось. По изменении отборов - да, есть событие, но если пользователь в строке поиска пишет "морковк…", то увы нет.
   Sevish
 
8 - 04.08.21 - 11:27
То есть формально то есть - уйти от динамического списка...
   Sevish
 
9 - 04.08.21 - 11:28
Кстати, а как вообще получить все строки динамического списка через СКД, если там нет условий, которые пользователь задал в поиске? С самой формы никак строки не получить?
   ДенисЧ
 
10 - 04.08.21 - 11:29
(9) Получить текущий запрос списка со всеми отборами и выполнить запрос
   ptiz
 
11 - 04.08.21 - 11:33
(9) гуглится легко:
    Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
 
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    
    //если нужен запрос: Запрос = МакетКомпоновки.НаборыДанных.НаборДанныхДинамическогоСписка.Запрос;

    
    
    ТЗ = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТЗ); 
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
   ptiz
 
12 - 04.08.21 - 11:34
(10) Я всё-таки спрошу еще раз про "События на изменение отборов - точно есть. ".
Не могу найти.
   mistеr
 
13 - 04.08.21 - 11:36
(0) Все расчеты итогов и прочего - в отчетах.

Вот и вся методика.
   ptiz
 
14 - 04.08.21 - 11:44
+(12) есть ПриОбновленииСоставаПользовательскихНастроекНаСервере() - но это доступно в форме отчетов на СКД.
А если надо в форме списка справочника?
   Yardman
 
15 - 04.08.21 - 11:47
(12) Это потому что события на самом деле нет, давно просят но не сделали.

ПриОбновленииСоставаПользовательскихНастроекНаСервере - это не совсем не то.

Кажется, единственный гарантированный вариант - сделать свою форму настроек и самому генерировать элементы для пользовательских настроек с дополнительным подвешенным обработчиком (сам никогда не пробовал так делать - может и не получится, но чисто умозрительно кажется может получиться).

Только пользы с этого всё равно не очень много - ведь ещё есть поиск.
   Мигрень
 
16 - 04.08.21 - 11:48
(13) ты методист что ли
   Sevish
 
17 - 04.08.21 - 11:54
Хорошо, конкретизирую задачу. Пользователь имеет желания анализировать все строки "Заказ покупателя" в одной таблице с отбором по периоду. Таких документов допустим 10. Все строки этих документов выводятся в одну таблицу (динамический список). Он поиском выбирает все "морковки" и смотрит разницу в ценах. Затем правой кнопочкой - "изменить цену".
Да, возможно это тянет на отчет, но разве не логичнее именно динамический список?
Зачем итог? Это пользователь, он имеет право хотеть тут же увидеть сумму отгрузки по всем морковкам.

PS: в общем выход один видимо - свой запрос без динамики, но блин все равно как отследить что он в поиск вбил морковки? Как потом получить строки именно "на форме", а не в ТЗ, которая за ней скрывается.
   Мигрень
 
18 - 04.08.21 - 12:01
(17) Ctrl-A на динсписке, затем "получить выделенные строки"
   mistеr
 
19 - 04.08.21 - 12:03
(18) Все равно нужен еще запрос для подсчета итогов. Но уже без динамики.
   mistеr
 
20 - 04.08.21 - 12:04
(17) Что-то странное ваш пользователь делает. Чувствую, задача не раскручена до конца. Скорее всего, есть решение попроще.
   mikecool
 
21 - 04.08.21 - 12:05
кажется в ваедрленде читал о том, что в какой то платформе реализовали получение компоновки или настроек дин списка, чтобы реализовывать сабж
   Sevish
 
22 - 04.08.21 - 12:07
С ума сойти! (11) вставил под кнопку и все отлично, результат с учетом "поиска". В общем скажу что кнопка - иначе никак! Благодарю.
PS: Но все же обидно, что нет события &НаКлиенте.
   ДенисЧ
 
23 - 04.08.21 - 12:08
(21) Я как раз выше писал об этом.
И даже использовал в своей поделке.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.