Можно ли запустить обработку в отдельном процессе/потоке? #623295


#0 by Lex_Liven
Собственно, сабж. Есть некая обработка, которая выполняется 10-15 минут. Она должна стартовать сразу при запуске тонкого клиента 1С. Проблема в том, что пока она работает, пользоваться 1С нельзя. А хотелось бы. Это возможно?
#0 by Lex_Liven
Собственно, сабж. Есть некая обработка, которая выполняется 10-15 минут. Она должна стартовать сразу при запуске тонкого клиента 1С. Проблема в том, что пока она работает, пользоваться 1С нельзя. А хотелось бы. Это возможно?
#1 by DrShad
открывай еще одно Предприятие и работай
#2 by Lex_Liven
автозапуск при КАЖДОМ старте тонкого клиента. Второе предприятие повиснет также.
#3 by ДенисЧ
фоновое задание.
#4 by Lex_Liven
окно обработки должно остаться открытым, в нем потом будет вестись работа. Это платежная система QIWI. Она очень долго стартует.
#5 by DrShad
какая-то жестяная жесть выходит
#6 by Coldboy
Кстати интересовал такой вопрос, а можно обработки в фон кидать, и работать дальше, пока они делаются, просто где-то видел, что такое 1С будет рассматривать делать, но че то не увидел реализацию как это делать, новичкам программистам...
#7 by Lex_Liven
жесть, как она есть. Но вот такие рамки. Обработку переписать можно, но чем меньше в ней будет изменений, тем лучше. собсно, об том и вопрос :)
#8 by Rovan
что конкретно там долго делается ?
#9 by Lex_Liven
связь с интернетом, загрузка данных с сервера Киви.
#10 by Coldboy
видел в 8.2.14, 15 обещали вроде бы сделать, инструмент, для закидывания бработки в фон и работать дальше.
#11 by H A D G E H O G s
Еще раз. Медленно. Что мешает запустить ФОновое задание, запустить обработчик ожидания в форме обработки и каждую чекунду дергать Фоновое, узнавая, завершено оно или нет. И когда оно завершиться - считать результат из регистра сведений?
#12 by Coldboy
еще бы знать, что вы хотели сказать, можно описание этого и как и что?
#13 by Coldboy
я представляю себе такое механизм, запускаешь, обработку, программно ее кидаешь в режим работы фона, и когда она уже будет на конце выводишь из фона и все.
#14 by Lex_Liven
привет из вчерашней темы про константы в тонком. Мешает то, что обработка ничего не пишет в регистры сведений. Связь с базой чисто символическая - ссылками на документы ЧекККМ. Все загруженные данные хранятся в реквизитах формы "ТаблицаЗначений".
#15 by le_
Более правильное решение - сделать фоновое задание, которое будет отрабатывать с определенным тобой интервалом. А в интерфейсе пользователя сделать кнопку для ручного запуска обновления - когда им приспичит, они смогут вручную запустить.
#17 by H A D G E H O G s
Пусть пишет.
#18 by le_
В случае с фоновым заданием данные можно сохранять в регистре сведений.
#19 by H A D G E H O G s
Это его напрягает.
#20 by H A D G E H O G s
Ну да ладно, есть рассово верный способ передачи через "Хранилища Настроек". И овцы сыты (контроль ссылочной целостности, новых табличек нет, роли не напрягаются, и.т.д.) и волки целы (достаточно быстро).
#21 by Coldboy
а еще есть, я че то не понял, эт в конфигураторе ты лупсуешь, последовательность, порядок допустим обработок, а затем, еще и время или в 1С предприятие как блин справочник создаешь. Тока типа 1С всегда должна  робить в этим моменты да?
#22 by H A D G E H O G s
А вот еще проще! Глобальный контекст (Global context) ПоместитьВоВременноеХранилище (PutToTempStorage) Синтаксис: и главное: Также позволяет поместить данные из фонового задания в родительский сеанс. Для этого следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание.
#23 by Lex_Liven
Фоновое задание выполняется на стороне сервера? Тогда этот вариант не подходит. Работа должна максимально выполняться на клиенте.
#24 by le_
Зачем? Помимо прочего, решение из плохо тем, что запрос к базе Киви выполняется при каждом запуске 1С (для каждого пользователя, да еще если он несколько раз решит войти), думается мне, это вовсе не нужно. Достаточно один раз получить данные сохранить их и пользовать по необходимости.
#25 by Rebelx
не очень хорошая практика удаления гланд через жпо. хотя конечно кардиошунтирование делают через разрез на ноге
#26 by Lex_Liven
если начать гонять данные на сервер (связь плохая), то каждый чек на каждый платеж выводится около 5-10 минут. Так, как работает сейчас - 5-10 секунд. Что и требуется. Запрос к базе Киви выполняется при каждом запуске, потому что данные в ней могут менять по несколько раз в день и узнать об этих изменениях можно только запросив все данные снова. Вот так шикарно оно работает. Это не удаление гланд через жпо, это работа в полевых условиях, когда нельзя менять протоколы сообщения с киви и желательно не трогать их обработку.
#27 by Coldboy
можно сделать так, создать константу, константа это дата выполненния твоей обработки при первом запуске, после успешного выполнения работы твоей обработки, константа примет значение текущего дня, и сделать проверку если дата = текущего дня, то больше не запускать, тобишь, я хотел сказать, обработка сработает 1 раз и все. Примерно такой механизм, я реализовал, тьфу-тьфу, нет нареканий, хочу вот сделать, типа регламент или фоном.
#28 by Lex_Liven
Связь реально плохая, потому и грузится долго. Это понятно, других провайдеров и другие тарифы интернета не предлагайте. Вернемся к теме. Возможно ли запустить обработку в фоне? А теперь прикиньте - таких пользователей около 50. Сколько мне нужно констант? Повторюсь - обработка ДОЛЖНА выполняться на клиенте.
#29 by le_
Фоном получать данные можно с пом. внешней компоненты.
#30 by Lex_Liven
остается только написать ее, эту компоненту))
#31 by H A D G E H O G s
Никуа не понял. Че там за гигабайты данных гонятся?
#32 by Lex_Liven
список провайдеров, список агентов, настройки, еще чего-то там... все в виде несжатых XML. При каждом старте около 2-3 мегабайт набегает.
#33 by H A D G E H O G s
Запустите еще одного Тонкого, и из него под Com-у вытяните.
#34 by H A D G E H O G s
Pfffff Веб сервер это все сожмет и не подавиться.
#35 by H A D G E H O G s
Или распарсите на сервере, на клиент отсылайте самую мякотку.
#36 by Lex_Liven
дык в том-то и дело, что давится. это требует полного разбора обработки.
#37 by H A D G E H O G s
В каком виде ползет? Строковая переменаая?
#38 by Lex_Liven
куда ползет? с сервера на клиент? да, в строковой.
#39 by AAlexandra
Гм.. а запускать получение данных не автоматом при входе пользователя, а по кнопке? Захотел - запустил. Не захотел - так работает. Или фиксить где-нить в РС время старта получения данных для каждого пользователя, чтобы пользователь открывал подряд 2 сеанса, но загрузка срабатывала только в первом сеансе.
#40 by Lex_Liven
без получения данных работать нельзя.
#41 by AAlexandra
так нельзя? Или как заявлено в "хотелось бы" ?
#42 by H A D G E H O G s
Бида у вас
#43 by H A D G E H O G s
Зарегте базу, запустите из Тонкого и замером вызовов посмотрите. Будет 170 Кбайт на 1,5 мегабайтный XML файл
#44 by H A D G E H O G s
Файл biolife.xml из примеров RAD Studio Delphi 2010
#45 by Lex_Liven
в заявлено хотелось бы пользоваться документами 1С, пока обработка загружает от киви свои данные. Без получения данных нельзя работать в Киви.
#46 by H A D G E H O G s
Текст получается на раз, тормоза при отображении на формочке.
#47 by H A D G E H O G s
Режим: Веб-сервер (сжатие: усиленное)
#48 by AAlexandra
А вообще, имхо, 10 минут для 3 мегабайт - это ненормально. И задуматься лучше бы как эти 10 минут превратить в 10 секунд. Да и в принципе, если данные в КИВИ меняются на столько часто, что необходимо обновление при каждом запуске 1с-ки, где гарантия, что они не поменяются во время одного сеанса 1ски? Обновлять их тогда нужно чаще, чем при старте клиента. Т.е. не привязываться к старту клиента вообще. ну и в чем проблема? В одном сеансе ждешь свою обработку с Киви, в другом - "пользуешься документами".
#49 by Stepa86
посмотреть УТ11 с ее подсистемой длительных операций уже предлагали?
#50 by Lex_Liven
еще нет. красивая подсистема?
#51 by milan
месье не ищет легких путей, ему все на клиенте надо
#52 by H A D G E H O G s
Так че с траффиком XML? Че, игнорируешь?
#53 by Lex_Liven
трафик красиво обрабатывается. Спасибо, но : это требует полного разбора обработки.
#54 by H A D G E H O G s
Опять тебя не понял. Ну не парсь на сервере, что мешает послать XML полностью на клиент? Отлично жмется же.
#55 by H A D G E H O G s
I see the bad moon arising. I see trouble on the way. I see earthquakes and lightnin'. I see bad times today.
#56 by Lex_Liven
Мешает тот факт, что в случае обновления обработки (это примерно раз в 2-3 месяца происходит) снова придется разбирать ее на части - это на клиент, это на сервер, это передать, это обработать на месте.
#57 by neckto
Так что мешает запускать два сеанса 1С?
#58 by H A D G E H O G s
Ну уж извините тогда.
#59 by Lex_Liven
Ничего. Вопрос был в запуске с одного сеанса, но остался открытым. Или ответ - в рамках вопроса нельзя и все?
#60 by H A D G E H O G s
Можно ВК-шку написать, но мне лениво.
#61 by Lex_Liven
А я и не требую, мне тоже лениво. Ибо ВК тоже придется обновлять с изменениями в протоколе. Вопрос закрыт. Нельзя.
#62 by Coldboy
проблему можно решить не константой, база единая или же разделенная у каждого своя и потмо идет обмен?
#63 by Никола_Питерский
Можно гляди как отчеты формируются в БП 3.0 они там фоновым заданиями делаются !
#64 by Coldboy
еще бы где нит ьвзять эту БП 3.0 чтобы посмотреть )
#65 by Никола_Питерский
юзерс 1с не предлагать ?
#66 by Lex_Liven
база единая на всех 50 юзеров. Константа или регистрсведений - маловажно все равно два клиента запускать ручками. Нельзя. Задача выполнить в фоне НА КЛИЕНТЕ, а не фоновым заданием на сервере.
#67 by Coldboy
придется, им подлождать 10 минут, пока твоя штука отработает ...
#68 by Lex_Liven
Так они и делают... Бида, что в течение этих 10 минут они мне на мозги капают - че так долго?
#69 by Coldboy
а запуск идет один раз в день и все?
#70 by Lex_Liven
если соединение с сервером не обрывается, то один раз в день. А соединение обрывается иногда.
#71 by Coldboy
ну все твоя проблема решена в моем посте... Смотри как тебе такой вариант, первый запуск сделать, пока пользователя нет у компьютера, где то за 30 минут, эт ты запустишь 1С через командую строку, с помощью .bat, и через расписания виндовс, но также ты сделай регламентное задание, которое будет проверять, был ли обрыв и если был то выполнит ее повторно, и периодически будет пытаться сделать.
#72 by rool
У человека связь кривая и во время работы юзверей может падать. И все же не совсем понятно почему все это нельзя разобрать на сервере и передать клиенту уже готовый пакет данных тем же хранилищем значений?
#73 by Lex_Liven
Пользователь приходит на работу, включает комп и запускает 1С. Его не бывает "не за компом". Единственное, посоветовать им запустить и пойти пыль на витринах протереть :) устал повторять: потому что .
#74 by Coldboy
обработку кто пишет и добавляет да?
#75 by Lex_Liven
к конфиге привязываю я, пишут разрабы Киви
#76 by Coldboy
понятно. ну тогда вариант не понятен их ожидания и все.
#77 by Адимр
"И когда оно завершиться - считать результат из регистра сведений?" Из "временного хранилища" в смысле?
#78 by H A D G E H O G s
Откуда будет угодно мсье.
#79 by Lex_Liven
скажем, не откуда угодно мсье, а оттуда, куда оно было сохранено заданием.
#80 by Torquader
Непонятно для чего обновлять при запуске каждого пользователя ? Там же данные поди для всех одинаковые. Есть мнение, что нужно сделать одного виртуального пользователя, который будет запускаться клиентом и автоматом открывать эту обработку и обновлять всё, что надо, а остальные будут работать.
#81 by kotletka
филиалы
#82 by Torquader
Так если они все в одной базе, то какая разница, как их будут грузить - через клиентов или сразу в базу. Или там используется директория пользователя и текстовые файлы для хранения информации ?
#83 by Lex_Liven
Нет, данные разные для каждого пользователя, еще и меняются часто. И хранятся да, в директории юзера, в текстовом виде.
#84 by iceman2112
А написать регламетное задание, которое будет дергать обработку предлагали?
#85 by shamashs
Конкретно в вашем случая я предложил бы если уж на сервере никак, сделать пользователя "Робот" допустим, на нем запустить консоль регламентных заданй, и забирать данные раз в 5 минут в переферийку в одну локальную сеть с терминалами, а терминалы при отбитии чека не обновляют данные с киви или центрального сервера, а смотрят внутрь переферийки.
#86 by shamashs
Это в случае если на объекте несколько тонких клиентов, если же он у нас один то делаем job с get скриптом который скидывает в csv данные базы киви, и при отбитии чека сравнивается предидущая база с текущим файлом в 1с, находятся различия итп.
#87 by shamashs
тут я учитываю тот факт, надо понять, что 90% времени занимает загрузка базы киви, а не ее обработка в 1с
#88 by Lex_Liven
а почитать ветку? предлагали. Данные получаются и обрабатываются клиентом. 99,99% времени - это загрузка. Обработка стремительна, как после пургена. Обмен с сервером не нужен.
#89 by Lex_Liven
Ладно. Поставим вопрос по-другому. Как программно из тонкого клиента запустить второй сеанс?
#90 by Lex_Liven
Тоже тонкий клиент, тот же юзер, тот же пароль. Желательно без главного окна, только обработку.
#91 by H A D G E H O G s
Новый ComОбъект("v82с.Application")
#92 by shamashs
там пути к базам итп надо с ключами запуска ему надо
#93 by shamashs
#94 by shamashs
ЗапуститьПриложение (RunApp) Синтаксис:
#95 by Никола_Питерский
Так может пускай в фоне грузит сервер эти данные и ты их потом на серваке обработаешь и по пырому вернешь резалт на клиента ? Самый верняк.
#96 by shamashs
быстренько ему надо)
#97 by H A D G E H O G s
Автору ЛЕНИВО и БОЯЗНО чето трогать в обработке.
#98 by H A D G E H O G s
Нет, см
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С