Имя: Пароль:
1C
 
Как передать временные таблицы между вызовами?
↓ (Волшебник 05.08.2024 19:46)
0 СамоСабой
 
03.08.24
22:47
Здравствуйте.
1С 8.3 имеется обработка у которой есть две кнопки:
Первая читает некий файл долго обрабатывает поученные данные и заполняет таблицу на форме.
Вторая кнопка должна выполнить ту же самую обработку и записать в базу некие объекты с учетом того какую строку таблицы пользователь сделал текущей.
Вопрос : Имеется ли возможность при нажатии второй кнопки использовать временные таблицы сформированные при нажатии первой кнопки?
1 vde69
 
03.08.24
22:51
используй менеджер временных таблиц
2 vde69
 
03.08.24
22:52
хотя идея ОЧЕНЬ плохая.

Будет пухнуть темпдб
3 СамоСабой
 
03.08.24
22:54
Менеджер я использую.
не понятно как его передать между вызовами
4 СамоСабой
 
03.08.24
22:57
(2) Если есть лучшая идея - было бы интересно ознакомиться
5 СамоСабой
 
03.08.24
23:31
(2) непонятно также чего бы это ему пухнуть. Таблицы сформированы - еще раз их прочитать не должно быть проблемой
6 DCKiller
 
04.08.24
00:04
(0) Может, лучше по второй кнопке записывать данные из таблицы на форме? А не производить те же процедуры, что и первая кнопка.
7 Garykom
 
04.08.24
00:26
(0) ВТ нормально сохраняются только в одном серверном вызове

Между несколькими серверными вызовами (с клиента) их можно сохранить только извращенным способом в длительном фоновом задании (в цикле которое крутится)
Как обмениваться/общаться с этим длительным фоновым отдельный вопрос, еще более извращенный

Ну или стандартно сохранять данные из ВТ в ТЗ во временное хранилище, затем заново получать ТЗ и загружать в ВТ
8 rphosts
 
04.08.24
07:49
(0) а что не через ХЗ?
9 lEvGl
 
04.08.24
08:56
его на клиенте же нет
ВременноеХранилище
10 СамоСабой
 
04.08.24
14:16
(6) Хранить данные на форме - это понятно, но как-то кривовато
- получили ВТ - переписали их в ТЗ на форме
- потом опять прочитали ТЗ и переписали их в ВТ
Двойной расход памяти и времени
11 Волшебник
 
04.08.24
14:16
(10) >> Двойной расход памяти и времени

А Вы пока не парьтесь на эту тему. Добейтесь рабочего функционала, а оптимизировать будете потом.
12 DCKiller
 
04.08.24
15:19
(10)
>> Первая читает некий файл долго обрабатывает поученные данные и заполняет таблицу на форме.

Я про эту таблицу. Зачем переписывать данные из ТЗ на форме во временную таблицу, если их сразу оттуда можно записать в ИБ, как это требуется по описанному в (0)?
13 lubitelxml
 
04.08.24
17:49
(6) +1. Прочитал, на форму вывел, подождал, разобрал данные с формы. ИМХО - если данных много, тут другой разговор. Сколько колонок и сколько строк?
14 ДедМорроз
 
04.08.24
18:04
Там не двойной расход памяти.
Временное хранилище - это память и диск сервера 1С.
Временные таблицы - это память и диск сервера баз данных.
Таблица на форме - это память клиента.
Таблица на форме хороша,если все данные в ней и можно выбрать все из текущей строки и сделать без контекстный серверный вызов.
Если для каждой записи нужна вся таблица,а пользователю показывается не она вся,а только некоторые строки,то таблицу нужно хранить на сервере.
Если очень хочется хранить в базе данных ,то расширение,расширяющее данные и регистр сведений - тогда,чтение можно сделать в фоновом задании,а пользователь сможет закрыть обработку после начала чтения или вообще завершить свой сеанс.
15 D3O
 
04.08.24
23:28
(0) возможно в данной ситуации будет уместным добавление служебного регистра сведений. и писать в него на каждом промежуточном шаге.
только не забывать чистить по мере заполнения штатного, или периодически (пользователь бросил заполнять).
16 Волшебник
 
04.08.24
23:40
(14) Чушь!
17 Волшебник
 
04.08.24
23:41
(15) Тоже херня получится
18 maxab72
 
05.08.24
08:26
(0) А почему нельзя эти временные таблицы хранить в этом самом объекте, в его табличных частях? И заполнять их по первой кнопке, а по второй только обращаться к ним.
19 DrZombi
 
05.08.24
10:16
(10) Лучше хранить не на форме, и не в обработке, а во временном хранилище Значений.

На форме хранить просто "Адрес ВХ"... При обращении на сервер уже получать ваши временные таблицы и помещать их куда хочется вам, в нужном виде, ведь не все данные вам нужны для каждой обрабатываемой строки.

Далее рассмотреть все это в исполнении через фоновое задание :)
20 DrZombi
 
05.08.24
10:17
+ Во временном хранилище, если строчки не обрабатываются дважды, то можно подчищать из ваших временных таблиц, уменьшая объемы информации.
21 AlexeyKh
 
05.08.24
10:35
в таблицу на форме в невидимые поля добавьте еще нужной информации,
и когда пользователь выберет нужную строку для обработки у вас будут все нужные данные только по этой строке!
вот их и обрабатывайте!
22 СамоСабой
 
05.08.24
10:53
В таблице на форме пользователю достаточно показать 4 колонки
А для записи надо иметь 20 ВТ от 5 до 25 строк.
Причем это все те же таблицы которые были сформированы по первой кнопке.
До боли хочется их заново не формировать.
23 maxab72
 
05.08.24
11:06
(22) Так создай в обработке 20 дополнительных таблиц со структурой как у временных и заполняй их. И по нажатию на вторую кнопку бери данные уже из них.
24 Мультук
 
05.08.24
11:13
(22)

А сколько строк всего в этих 20 ВТ ?
Миллионы ?
Десятки миллионов ?

И если их так усердно и долго формировали, они случаем не успеют "прокиснуть" ?
25 Garykom
 
05.08.24
11:26
(22) пфф, объемы смешные
сохраняй в ТЗ во временные хранилища или в реквизитах формы
каждый раз заново передавай в ВТ
26 DrZombi
 
05.08.24
11:30
(22) 20... да хоть 10000 по 10 строчек...
Это не критично...

Вот 10000 по 100000000 строк, уже существенно :)
27 DrZombi
 
05.08.24
11:31
(25) 👍
28 СвинТуз
 
05.08.24
11:48
(0)
Результат нужно каждый раз ждать при открытии файла, не исключено что пользователь одну строчку обрабатывает. Не смущает?

С методикой точно все хорошо?
Почему результат расчета не хранится для каждого разреза?
Наверняка есть разрезы. Учетный период, Склад etc.
29 СвинТуз
 
05.08.24
11:49
Строку точно нужно выбирать если известен "разрез"?
Или в файле не проверенные данные?

Что за подход любопытный такой? )))
Я туплю.
30 СвинТуз
 
05.08.24
11:49
Квартал закрываете? )
31 asady
 
05.08.24
16:02
(0) напиши скрипт к скулю create temptable my_temptable_12345
и попробуй прочитать эту таблицу из разных сессий 1с
как вариант
32 Anton1307
 
05.08.24
18:37
(10) Зачем ТЗ на форму тащить?

Выгружаешь ВТ в ТЗ и помещаешь ТЗ во временное хранилище. В реквизите формы сохраняешь адрес во временном хранилище.

При повторном вызове из временного хранилища возвращаешь ТЗ, запросом помещаешь в ВТ и работаешь.
33 Волшебник
 
05.08.24
19:45
(32) дурдом! Вы потеряли смысл! Вместо ускорения, Вы будете сериализовать и десериализовать наборы данных. Вы уверены, что это будет быстрее?
34 Anton1307
 
05.08.24
20:46
(33) Нет. Как раз я не предлагаю ничего сериализовать.
Данные остаются на сервере в таблице значений, а на клиент возвращается короткая строка - адрес во временном хранилище.
Собственно для этого временное хранилище и было придумано.
35 Волшебник
 
05.08.24
20:53
(34) Враньё. Данные на сервере гоняются из строки в строку.
36 maxab72
 
06.08.24
07:47
во всяком случае это на порядки быстрее, чем заново долго обрабатывать какой-то файл, как написано в (0).
37 master Yoda
 
06.08.24
08:37
(36) а откуда известно сравнение, что обработка данных происходит существенно большее время, чем перегонка всех данных на сервер туда и обратно, причем, несколько раз подряд.
38 master Yoda
 
06.08.24
08:42
У автора топика есть просто гипотеза, что чтение из файла и обработка - это долго.
А по другому, причем не известно как, т.к. не пробовал и не замерял - это быстро.

Насколько часто требуется обращение и к этой обработке и к этим всем данным? Может и в самом деле:
- свое расширение
- свои структуры данных (регистры, причем, может даже и оборотные, а не сведений)
- свой регистратор для обращения к регистрам и хранения прочей вспомогательной инфы о выполняемой работе пользователя (для отладки может быть весьма полезно фиксировать ссылки на источники, время, ответственного и т.д. и т.п.)
39 master Yoda
 
06.08.24
08:56
А там в продолжение - понятно, что длительное хранение обсуждаемых данных может быть избыточным, но поставить регламентное задание или обработку, которая будет очищать неактуальные наборы записей регистров и прочего всякого.
40 Волшебник
 
06.08.24
09:18
(36) Это ещё надо доказать
41 Конструктор1С
 
06.08.24
10:04
>>читает некий файл долго обрабатывает поученные данные и заполняет таблицу на форме

>>для записи надо иметь 20 ВТ от 5 до 25 строк

Где-то в коде кривизна. Объемы совсем уж мизерные, чтобы на них тормоза словить
42 СамоСабой
 
09.08.24
11:10
1 Выгрузить ВТ в ТЗ
2 Записать ТЗ во временное хранилище
3 Считать из временного хранилища в ТЗ
4 Загрузить ТЗ в ВТ
и все это только для того, чтобы передать готовые ВТ от одного вызова к другому
и в то время как они себе спокойно лежат на диске готовые для использования
Как то это громоздко