Имя: Пароль:
1C
1С v8
Можно ли запустить обработку в отдельном процессе/потоке?
,
0 Lex_Liven
 
02.08.12
12:22
Собственно, сабж.

Есть некая обработка, которая выполняется 10-15 минут. Она должна стартовать сразу при запуске тонкого клиента 1С. Проблема в том, что пока она работает, пользоваться 1С нельзя. А хотелось бы. Это возможно?
3 ДенисЧ
 
02.08.12
12:24
фоновое задание.
4 Lex_Liven
 
02.08.12
12:25
(3) окно обработки должно остаться открытым, в нем потом будет вестись работа. Это платежная система QIWI. Она очень долго стартует.
5 DrShad
 
02.08.12
12:26
какая-то жестяная жесть выходит
6 Coldboy
 
02.08.12
12:28
Кстати интересовал такой вопрос, а можно обработки в фон кидать, и работать дальше, пока они делаются, просто где-то видел, что такое 1С будет рассматривать делать, но че то не увидел реализацию как это делать, новичкам программистам...
7 Lex_Liven
 
02.08.12
12:30
(5) жесть, как она есть. Но вот такие рамки. Обработку переписать можно, но чем меньше в ней будет изменений, тем лучше.
(6) собсно, об том и вопрос :)
8 Rovan
 
гуру
02.08.12
12:30
(4) что конкретно там долго делается ?
9 Lex_Liven
 
02.08.12
12:30
(8) связь с интернетом, загрузка данных с сервера Киви.
10 Coldboy
 
02.08.12
12:31
видел в 8.2.14, 15 обещали вроде бы сделать, инструмент, для закидывания бработки в фон и работать дальше.
11 H A D G E H O G s
 
02.08.12
12:32
Еще раз. Медленно.
Что мешает запустить ФОновое задание, запустить обработчик ожидания в форме обработки и каждую чекунду дергать Фоновое, узнавая, завершено оно или нет.
И когда оно завершиться - считать результат из регистра сведений?
12 Coldboy
 
02.08.12
12:34
(11) еще бы знать, что вы хотели сказать, можно описание этого и как и что?
13 Coldboy
 
02.08.12
12:35
(11) я представляю себе такое механизм, запускаешь, обработку, программно ее кидаешь в режим работы фона, и когда она уже будет на конце выводишь из фона и все.
14 Lex_Liven
 
02.08.12
12:35
(11) привет из вчерашней темы про константы в тонком.
Мешает то, что обработка ничего не пишет в регистры сведений. Связь с базой чисто символическая - ссылками на документы ЧекККМ. Все загруженные данные хранятся в реквизитах формы "ТаблицаЗначений".
15 le_
 
02.08.12
12:35
(0) Более правильное решение - сделать фоновое задание, которое будет отрабатывать с определенным тобой интервалом. А в интерфейсе пользователя сделать кнопку для ручного запуска обновления - когда им приспичит, они смогут вручную запустить.
16 Rovan
 
гуру
02.08.12
12:36
17 H A D G E H O G s
 
02.08.12
12:38
(14) Пусть пишет.
18 le_
 
02.08.12
12:38
(14) В случае с фоновым заданием данные можно сохранять в регистре сведений.
19 H A D G E H O G s
 
02.08.12
12:38
(18) Это его напрягает.
20 H A D G E H O G s
 
02.08.12
12:40
Ну да ладно, есть рассово верный способ передачи через "Хранилища Настроек".
И овцы сыты (контроль ссылочной целостности, новых табличек нет, роли не напрягаются, и.т.д.) и волки целы (достаточно быстро).
21 Coldboy
 
02.08.12
12:40
а еще есть, я че то не понял, эт в конфигураторе ты лупсуешь, последовательность, порядок допустим обработок, а затем, еще и время или в 1С предприятие как блин справочник создаешь. Тока типа 1С всегда должна  робить в этим моменты да?
22 H A D G E H O G s
 
02.08.12
12:42
А вот еще проще!

Глобальный контекст (Global context)
ПоместитьВоВременноеХранилище (PutToTempStorage)
Синтаксис:

ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)

<бла-бла-бла>
и главное:

Также позволяет поместить данные из фонового задания в родительский сеанс. Для этого следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание.
23 Lex_Liven
 
02.08.12
12:45
(15) Фоновое задание выполняется на стороне сервера? Тогда этот вариант не подходит. Работа должна максимально выполняться на клиенте.
24 le_
 
02.08.12
12:46
(23) Зачем?

Помимо прочего, решение из (0) плохо тем, что запрос к базе Киви выполняется при каждом запуске 1С (для каждого пользователя, да еще если он несколько раз решит войти), думается мне, это вовсе не нужно. Достаточно один раз получить данные сохранить их и пользовать по необходимости.
25 Rebelx
 
02.08.12
12:48
(23) не очень хорошая практика удаления гланд через жпо.
хотя конечно кардиошунтирование делают через разрез на ноге
26 Lex_Liven
 
02.08.12
12:51
(24) если начать гонять данные на сервер (связь плохая), то каждый чек на каждый платеж выводится около 5-10 минут. Так, как работает сейчас - 5-10 секунд. Что и требуется.

Запрос к базе Киви выполняется при каждом запуске, потому что данные в ней могут менять по несколько раз в день и узнать об этих изменениях можно только запросив все данные снова. Вот так шикарно оно работает.

(25) Это не удаление гланд через жпо, это работа в полевых условиях, когда нельзя менять протоколы сообщения с киви и желательно не трогать их обработку.
27 Coldboy
 
02.08.12
12:52
(0) можно сделать так, создать константу, константа это дата выполненния твоей обработки при первом запуске, после успешного выполнения работы твоей обработки, константа примет значение текущего дня, и сделать проверку если дата = текущего дня, то больше не запускать, тобишь, я хотел сказать, обработка сработает 1 раз и все.
Примерно такой механизм, я реализовал, тьфу-тьфу, нет нареканий, хочу вот сделать, типа регламент или фоном.
28 Lex_Liven
 
02.08.12
12:54
(24) Связь реально плохая, потому и грузится долго. Это понятно, других провайдеров и другие тарифы интернета не предлагайте. Вернемся к теме. Возможно ли запустить обработку в фоне?

(27) А теперь прикиньте - таких пользователей около 50. Сколько мне нужно констант?

Повторюсь - обработка ДОЛЖНА выполняться на клиенте.
29 le_
 
02.08.12
12:55
(28) Фоном получать данные можно с пом. внешней компоненты.
30 Lex_Liven
 
02.08.12
12:56
(29) остается только написать ее, эту компоненту))
31 H A D G E H O G s
 
02.08.12
12:57
Никуа не понял.
Че там за гигабайты данных гонятся?
32 Lex_Liven
 
02.08.12
12:59
(31) список провайдеров, список агентов, настройки, еще чего-то там... все в виде несжатых XML. При каждом старте около 2-3 мегабайт набегает.
33 H A D G E H O G s
 
02.08.12
12:59
Запустите еще одного Тонкого, и из него под Com-у вытяните.
34 H A D G E H O G s
 
02.08.12
13:00
(32) Pfffff
Веб сервер это все сожмет и не подавиться.
35 H A D G E H O G s
 
02.08.12
13:00
Или распарсите на сервере, на клиент отсылайте самую мякотку.
36 Lex_Liven
 
02.08.12
13:01
(33) дык в том-то и дело, что давится.
(35) это требует полного разбора обработки.
37 H A D G E H O G s
 
02.08.12
13:02
(36) В каком виде ползет? Строковая переменаая?
38 Lex_Liven
 
02.08.12
13:04
(37) куда ползет? с сервера на клиент? да, в строковой.
39 AAlexandra
 
02.08.12
13:10
(0) Гм.. а запускать получение данных не автоматом при входе пользователя, а по кнопке? Захотел - запустил. Не захотел - так работает.
Или фиксить где-нить в РС время старта получения данных для каждого пользователя, чтобы пользователь открывал подряд 2 сеанса, но загрузка срабатывала только в первом сеансе.
40 Lex_Liven
 
02.08.12
13:11
(39) без получения данных работать нельзя.
41 AAlexandra
 
02.08.12
13:12
(40) так нельзя? Или как заявлено в (0) "хотелось бы" ?
42 H A D G E H O G s
 
02.08.12
13:14
Бида у вас
43 H A D G E H O G s
 
02.08.12
13:15
http://78.46.67.141/InfoBase

Зарегте базу, запустите из Тонкого и замером вызовов посмотрите. Будет 170 Кбайт на 1,5 мегабайтный XML файл
44 H A D G E H O G s
 
02.08.12
13:16
Файл biolife.xml из примеров RAD Studio Delphi 2010
45 Lex_Liven
 
02.08.12
13:17
(41) в (0) заявлено хотелось бы пользоваться документами 1С, пока обработка загружает от киви свои данные. Без получения данных нельзя работать в Киви.
46 H A D G E H O G s
 
02.08.12
13:18
Текст получается на раз, тормоза при отображении на формочке.
47 H A D G E H O G s
 
02.08.12
13:20
Режим: Веб-сервер (сжатие: усиленное)
48 AAlexandra
 
02.08.12
13:21
А вообще, имхо, 10 минут для 3 мегабайт - это ненормально. И задуматься лучше бы как эти 10 минут превратить в 10 секунд.

Да и в принципе, если данные в КИВИ меняются на столько часто, что необходимо обновление при каждом запуске 1с-ки, где гарантия, что они не поменяются во время одного сеанса 1ски? Обновлять их тогда нужно чаще, чем при старте клиента. Т.е. не привязываться к старту клиента вообще.

(45) ну и в чем проблема? В одном сеансе ждешь свою обработку с Киви, в другом - "пользуешься документами".
49 Stepa86
 
02.08.12
13:25
посмотреть УТ11 с ее подсистемой длительных операций уже предлагали?
50 Lex_Liven
 
02.08.12
13:25
(49) еще нет. красивая подсистема?
51 milan
 
02.08.12
13:26
(49) месье не ищет легких путей, ему все на клиенте надо
52 H A D G E H O G s
 
02.08.12
13:48
(50) Так че с траффиком XML? Че, игнорируешь?
53 Lex_Liven
 
02.08.12
13:49
(52) трафик красиво обрабатывается. Спасибо, но :(35) это требует полного разбора обработки.
54 H A D G E H O G s
 
02.08.12
13:50
(53) Опять тебя не понял. Ну не парсь на сервере, что мешает послать XML полностью на клиент? Отлично жмется же.
55 H A D G E H O G s
 
02.08.12
13:52
I see the bad moon arising.
I see trouble on the way.
I see earthquakes and lightnin'.
I see bad times today.
56 Lex_Liven
 
02.08.12
13:57
(54) Мешает тот факт, что в случае обновления обработки (это примерно раз в 2-3 месяца происходит) снова придется разбирать ее на части - это на клиент, это на сервер, это передать, это обработать на месте.
57 neckto
 
02.08.12
14:01
(56) Так что мешает запускать два сеанса 1С?
58 H A D G E H O G s
 
02.08.12
14:02
(56) Ну уж извините тогда.
59 Lex_Liven
 
02.08.12
14:04
(57) Ничего.

Вопрос был в запуске с одного сеанса, но остался открытым.
Или ответ - в рамках вопроса нельзя и все?
60 H A D G E H O G s
 
02.08.12
14:05
Можно ВК-шку написать, но мне лениво.
61 Lex_Liven
 
02.08.12
14:10
(60) А я и не требую, мне тоже лениво. Ибо ВК тоже придется обновлять с изменениями в протоколе.

Вопрос закрыт. Нельзя.
62 Coldboy
 
02.08.12
14:59
(61) проблему можно решить не константой, база единая или же разделенная у каждого своя и потмо идет обмен?
63 Никола_
Питерский
 
02.08.12
15:00
(61) Можно
гляди как отчеты формируются в БП 3.0 они там фоновым заданиями делаются !
64 Coldboy
 
02.08.12
15:01
(63) еще бы где нит ьвзять эту БП 3.0 чтобы посмотреть )
65 Никола_
Питерский
 
02.08.12
15:01
(64) юзерс 1с не предлагать ?
66 Lex_Liven
 
02.08.12
15:04
(62) база единая на всех 50 юзеров. Константа или регистрсведений - маловажно все равно два клиента запускать ручками.
(63) Нельзя. Задача выполнить в фоне НА КЛИЕНТЕ, а не фоновым заданием на сервере.
67 Coldboy
 
02.08.12
15:39
(66) придется, им подлождать 10 минут, пока твоя штука отработает ...
68 Lex_Liven
 
02.08.12
15:40
(67) Так они и делают... Бида, что в течение этих 10 минут они мне на мозги капают - че так долго?
69 Coldboy
 
02.08.12
15:41
(68) а запуск идет один раз в день и все?
70 Lex_Liven
 
02.08.12
15:43
(69) если соединение с сервером не обрывается, то один раз в день. А соединение обрывается иногда.
71 Coldboy
 
02.08.12
15:45
(70) ну все твоя проблема решена в моем посте...
Смотри как тебе такой вариант, первый запуск сделать, пока пользователя нет у компьютера, где то за 30 минут, эт ты запустишь 1С через командую строку, с помощью .bat, и через расписания виндовс, но также ты сделай регламентное задание, которое будет проверять, был ли обрыв и если был то выполнит ее повторно, и периодически будет пытаться сделать.
72 rool
 
02.08.12
15:48
(71) У человека связь кривая и во время работы юзверей может падать. И все же не совсем понятно почему все это нельзя разобрать на сервере и передать клиенту уже готовый пакет данных тем же хранилищем значений?
73 Lex_Liven
 
02.08.12
15:50
Пользователь приходит на работу, включает комп и запускает 1С. Его не бывает "не за компом".
Единственное, посоветовать им запустить и пойти пыль на витринах протереть :)

(72) устал повторять: потому что (56).
74 Coldboy
 
02.08.12
16:03
(73) обработку кто пишет и добавляет да?
75 Lex_Liven
 
02.08.12
16:04
(74) к конфиге привязываю я, пишут разрабы Киви
76 Coldboy
 
02.08.12
16:07
понятно. ну тогда вариант не понятен их ожидания и все.
77 Адимр
 
02.08.12
16:16
(11) "И когда оно завершиться - считать результат из регистра сведений?"

Из "временного хранилища" в смысле?
78 H A D G E H O G s
 
02.08.12
16:38
(77) Откуда будет угодно мсье.
79 Lex_Liven
 
02.08.12
16:39
(77) (78) скажем, не откуда угодно мсье, а оттуда, куда оно было сохранено заданием.
80 Torquader
 
03.08.12
00:05
Непонятно для чего обновлять при запуске каждого пользователя ? Там же данные поди для всех одинаковые.
Есть мнение, что нужно сделать одного виртуального пользователя, который будет запускаться клиентом и автоматом открывать эту обработку и обновлять всё, что надо, а остальные будут работать.
81 kotletka
 
03.08.12
00:17
(80)филиалы
82 Torquader
 
03.08.12
00:26
(81) Так если они все в одной базе, то какая разница, как их будут грузить - через клиентов или сразу в базу.
Или там используется директория пользователя и текстовые файлы для хранения информации ?
83 Lex_Liven
 
03.08.12
06:52
(80) Нет, данные разные для каждого пользователя, еще и меняются часто. И хранятся да, в директории юзера, в текстовом виде.
84 iceman2112
 
03.08.12
08:13
А написать регламетное задание, которое будет дергать обработку предлагали?
85 shamashs
 
03.08.12
08:27
(0) Конкретно в вашем случая я предложил бы если уж на сервере никак, сделать пользователя "Робот" допустим, на нем запустить консоль регламентных заданй, и забирать данные раз в 5 минут в переферийку в одну локальную сеть с терминалами, а терминалы при отбитии чека не обновляют данные с киви или центрального сервера, а смотрят внутрь переферийки.
86 shamashs
 
03.08.12
08:28
(85) Это в случае если на объекте несколько тонких клиентов, если же он у нас один то делаем job с get скриптом который скидывает в csv данные базы киви, и при отбитии чека сравнивается предидущая база с текущим файлом в 1с, находятся различия итп.
87 shamashs
 
03.08.12
08:30
(86) тут я учитываю тот факт, надо понять, что 90% времени занимает загрузка базы киви, а не ее обработка в 1с
88 Lex_Liven
 
03.08.12
08:34
(84) а почитать ветку? предлагали.
(85)(86)(87) Данные получаются и обрабатываются клиентом. 99,99% времени - это загрузка. Обработка стремительна, как после пургена. Обмен с сервером не нужен.
89 Lex_Liven
 
03.08.12
08:35
Ладно. Поставим вопрос по-другому. Как программно из тонкого клиента запустить второй сеанс?
90 Lex_Liven
 
03.08.12
08:36
Тоже тонкий клиент, тот же юзер, тот же пароль. Желательно без главного окна, только обработку.
91 H A D G E H O G s
 
03.08.12
08:36
Новый ComОбъект("v82с.Application")
92 shamashs
 
03.08.12
08:37
там пути к базам итп надо с ключами запуска ему надо
93 shamashs
 
03.08.12
08:38
94 shamashs
 
03.08.12
08:39
<Code>
ЗапуститьПриложение (RunApp)
Синтаксис:
ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>)
<Code>
95 Никола_
Питерский
 
03.08.12
08:39
Так может пускай в фоне грузит сервер эти данные и ты их потом на серваке обработаешь и по пырому вернешь резалт на клиента ? Самый верняк.
96 shamashs
 
03.08.12
08:40
быстренько ему надо)
97 H A D G E H O G s
 
03.08.12
08:41
(95) Автору ЛЕНИВО и БОЯЗНО чето трогать в обработке.
98 H A D G E H O G s
 
03.08.12
08:41
(96) Нет, см (97)
99 Lex_Liven
 
03.08.12
08:46
(94) не пойдет. Пароль юзера доступен только на запись, я не могу передать его в комстроку.
(91) покопаем.
100 Lex_Liven
 
03.08.12
09:04
(91) что-то я не могу найти документацию по COM объекту "v82c.Application". Не ткнете носом? Пожалуйста...
101 shamashs
 
03.08.12
09:07
(99) Что?
102 H A D G E H O G s
 
03.08.12
09:08
Яндекс в помочь.