Имя: Пароль:
1C
1С v8
УТ 11 Передача данных с сервера на форму
0 Pashabr
 
10.07.25
19:35
Приветствую! пытаюсь решить задачку.
Есть справочник Номенклатура, у него форма списка.
При нажатии на элемент списка внизу должна появляться табличка с колонками ДокументПрихода, ДатаПрихода, Контрагент(кто поставил товар), Количество(имеется в виду остаток на текущий момент на складах), Склад(если складов несколько, то по ним разные строки).
Вся информация для таблички находится запросом с регистров в серверной процедуре.
Вот вопрос: как лучше собранную запросом информацию вывести обратно на форму? Я выбрал вариант через Таблицу значений, но может есть более правильный способ? Реквизит на форме и Таблицу на самой форме надо создавать или лучше програмно?
Подскажите, плиз. Буду благодарен. Крайне желательно, для примера, какой-то условный код, чтобы от него оттолкнуться.
1 Волшебник
 
10.07.25
19:35
А ничего, что приходов может быть много, а склад один? И как Вы это планируете показать в одной табличке? Делайте две таблички
2 Волшебник
 
10.07.25
19:36
Вы упёрлись в интерфейс, разделение контекста на клиент/сервер, и забыли про бизнес-логику!
3 Волшебник
 
10.07.25
19:37
Текущие остатки по складам можно показать, это даже приветствуется, но вот выводить все приходы будет напряжно. Для этого есть отчёты.
4 Pashabr
 
10.07.25
19:42
Если приходов было несколько, то и документов несколько. Будет несколько строк. Обычно контрагент один или два. Документов до 5, пока остатки со склада не уходят. Складов несколько, но обычно одни и те же контрагенты на одни и те же склады отгружаются. Строк 10 не больше обычно в табличке. Эта штука работает в УТ 10, другой делал, надо такую же в 11 сделать.
5 Pashabr
 
10.07.25
19:47
(2) Я уперся в интерфейс. Логика мне понятна. Не могу нормально данные запроса на форму передать. Совет бы)
6 Волшебник
 
10.07.25
19:47
(4) Пошёл и сделал!
7 Волшебник
 
10.07.25
19:47
(5) Погуглите
8 timurhv
 
10.07.25
19:51
(0) Какое событие у списка? ПриАктивизацииСтроки и вызываете серверную процедуру\функцию?
Если так, то при открытии большого списка 45 раз будет серверный вызов)

Чтобы такого не было либо заполнение делаете по команде, либо в модуле "ПриАктивизацииСтроки" подключаете обработчик ожидания, пример:
https://ironskills.by/tpost/zi7ytn6co1-kak-izbavitsya-ot-kontekstnogo-vizova-v

Из справки:
ФормаКлиентскогоПриложения (ClientApplicationForm)
ПодключитьОбработчикОжидания (AttachIdleHandler)
Синтаксис:
ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>)
Описание:
Подключает указанную процедуру в качестве обработчика ожидания. Процедура будет вызываться в период ожидания системы каждый раз по истечению указанного интервала времени.

Вызов будет осуществляться только в "состоянии покоя", то есть в тот момент, когда программа не выполняет никаких действий.
9 Mort
 
11.07.25
00:19
По моему опыту оптимальнее будет внизу динамический список с заданным запросом с параметром. При активации строки устанавливать параметры списка или отбор - тут можно поиграть что быстрее, смотря как запрос спика составлен. Вообще по-разному можно поиграться, если база огромная может и не стоить применять такое насилие и выводить эту информацию по запросу пользователя в отдельной кнопке - минус в интерактивности, плюс в оптимизации.
10 Fish
 
гуру
11.07.25
09:12
(0) Показывай код. И опиши, что не получилось.
11 AAA
 
11.07.25
11:43
Мертвая и ненужная задача. Со списком просто нереально будет работать. Получать документы и другую детализацию надо только по кнопкам. И без этого не так чтобы все летает
12 Fish
 
гуру
11.07.25
12:06
(11) Ну почему же. Если подготовить данные в отдельном регистре, то вполне себе можно минимизировать тормоза.
13 AAA
 
11.07.25
13:53
(12)Зачем? Прибыль повысится ?
14 Fish
 
гуру
11.07.25
15:10
(13) Не всё в этом мире определяется прибылью. Не надо быть таким меркантильным :)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший