Имя: Пароль:
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 Загрузить ТЗ в ВТ
и все это только для того, чтобы передать готовые ВТ от одного вызова к другому
и в то время как они себе спокойно лежат на диске готовые для использования
Как то это громоздко
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn