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