|
Как передать временные таблицы между вызовами? 🠗 (Волшебник 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 Загрузить ТЗ в ВТ и все это только для того, чтобы передать готовые ВТ от одного вызова к другому и в то время как они себе спокойно лежат на диске готовые для использования Как то это громоздко |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |