|
Фоновые задания, работа с файлами | ☑ | ||
---|---|---|---|---|
0
Waterfall1
14.05.18
✎
12:38
|
Реализовал параллельное формирование csv файлов, все вроде бы отлично, формирует 1.5млн записей за 3 мин.
Но когда перенес все на боевую базу столкнулся с тем, что фоновое задание пишет файлы на сервере баз данных, а запуск обработки идет с терминального сервера, в итоге не могу забрать файлы для их объединения в итоговую csv. Пробовал реализовать возврат данных из фонового через хранилище общих настроек, но получал ошибку "bad allocation" при выполнении ЗначениеВСтрокуВнутр(тут текстовый документ). Да и вообще гонять большие объемы данных через хранилищеобщихнастроек не очень хочется. Может у кого есть идея как лучше реализовать такую выгрузку. |
|||
1
D_E_S_131
14.05.18
✎
12:45
|
общая сетевая папка не кашерно?
|
|||
2
Waterfall1
14.05.18
✎
13:07
|
Попробовал на сетевой диск сохранить, 1С его не видит.
|
|||
3
Defender aka LINN
14.05.18
✎
13:10
|
(2) Это не проблема 1С
|
|||
4
Waterfall1
14.05.18
✎
13:25
|
(3) Кажись именно 1С не позволяет. В консоле кода создал документ и сохранил его на клиенте, то файл сохранился, когда выполнил код на сервере, то файл создан не был.
|
|||
5
1Сергей
14.05.18
✎
13:44
|
(4) от имени пользователя сервера 1С
|
|||
6
3achem
14.05.18
✎
13:45
|
(4) С сервера где 1С стоит в папку эту попасть можно?
(0) Используй ХранилищеЗначения |
|||
7
Waterfall1
14.05.18
✎
13:57
|
(6) Да можно попасть. И что мне с этого хранилища значения,
я его из фонового задания не верну, кроме как через хранилище общих настроек или дополнительный регистр сведений. |
|||
8
Cyberhawk
14.05.18
✎
13:58
|
Много букв. Сколько платят за решение вопроса?
|
|||
9
Cool_Profi
14.05.18
✎
14:01
|
ты бы определся... Фоновое задание или "запуск обработки идет с терминального сервера"
|
|||
10
3achem
14.05.18
✎
14:01
|
(7) Посмотри права пользователя, который вызывает фоновое задание, USR1CV82
У тебя точно фоновое задание, а не регламентное? Что делаешь то? |
|||
11
Waterfall1
14.05.18
✎
14:12
|
(9) (10) Запуск обработки создает фоновые задания, результатом которых является создание файлов. По завершении заданий файлы собираются в единый результирующий файл.
В данный момент на тестовом сервере, на котором находится агент сервера и выполняется запуск обработки все отрабатывает корректно. Но когда сервер на котором запускается обработка отличается от сервера на котором находится агент сервера 1С начинаются проблемы. |
|||
12
Franchiser
гуру
14.05.18
✎
14:20
|
(11) сколько серверов?
|
|||
13
timurhv
14.05.18
✎
14:25
|
(2) 1С служба сервера запущена не под учеткой AD. Поэтому на машине с шарой необходимо создать пользователя с таким же именем и паролем.
|
|||
14
Waterfall1
14.05.18
✎
14:26
|
(12) Юзер может выполнять обработку на 4х разных серверах.
|
|||
15
Franchiser
гуру
14.05.18
✎
14:29
|
(14) нужно дать права пользователю 1с на всех 4х серверах, м.б. не все сервера в домене
|
|||
16
Franchiser
гуру
14.05.18
✎
14:31
|
(14) я правильно понимаю у тебе кластер из 4-х серверов. Или же пользователи работают на 4-х компьютерах по RDP ?
|
|||
17
Waterfall1
14.05.18
✎
14:34
|
(16) 4 терминальных сервера с балансировкой.
|
|||
18
qw12225
14.05.18
✎
21:05
|
Создай шару на каком нибудь из серверов. Клиенты которые берут файлы будут брать из этой папки. Для того что бы сервер 1с копировал файлы в эту папку необходимо использовать примерно такую команду (в фоновом задании);
ServerShare = "\\10.215.20.10\PUB"; UserName = "domen\userdomen"; Password = "Qw1234567"; NetworkObject =Новый COMОбъект("WScript.Network"); попытка NetworkObject.MapNetworkDrive("L:", ServerShare, False, UserName, Password); исключение /// не подключили конецпопытки; ПолноеИмяФайлаАрхива="C:\1\имяТвоегоФайла.csv каталогВыгрузок="L:\имяТвоегоФайла.csv" копироватьФайл(ПолноеИмяФайлаАрхива,каталогВыгрузок); NetworkObject.RemoveNetworkDrive("L:", True, False); NetworkObject=""; |
|||
19
qw12225
14.05.18
✎
21:10
|
первая команда подключает твою шару как локальный диск и ты можешь стандартной командой 1с копироватьФайл скопировать файлы куда нужно. Сразу после копирования подключенный диск отключаем. На клиентах можно такой же командой подключить шару и взять файлы. Либо использовать путь \\10.215.20.10\PUB взять файлы так. На клиентах единственно нужно контролировать чтоб несколько человек не пытались одновременно примапить диск L: - будет ошибка
|
|||
20
cons74
15.05.18
✎
08:08
|
Я так понимаю со штатным ПоместитьВоВременноеХранилище никто работать не захотел?
Из управляющей обработки перед запуском каждого фонового создаем адрес, куда потом помещаем результат фонового. Т.к. адрес получаем в сеансе управляющей обработки - данные будут доступны в ней же. И в конце на сервере выполняем сборку. |
|||
21
Fragster
гуру
15.05.18
✎
08:43
|
Глобальный контекст.ПоместитьВоВременноеХранилище (Global context.PutToTempStorage)
Глобальный контекст (Global context) ПоместитьВоВременноеХранилище (PutToTempStorage) Синтаксис: ПоместитьВоВременноеХранилище(<Данные>, <Адрес>) Параметры: <Данные> (обязательный) Тип: Произвольный. Данные, которые необходимо поместить во временное хранилище. <Адрес> (необязательный) Тип: УникальныйИдентификатор; Строка. Уникальный идентификатор формы, во временное хранилище которой надо поместить данные и вернуть новый адрес. Или адрес во временном хранилище, по которому надо поместить данные. Адрес должен быть получен ранее с помощью данного метода. В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы. Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы, то значение будет удалено после завершения сеанса пользователя. Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы. Возвращаемое значение: Тип: Строка. Адрес во временном хранилище. Описание: Сохраняет сериализуемое значение во временное хранилище. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Вызов метода выполняет обращение к серверу. Примечание: Временное хранилище, сформированное в одном сеансе, недоступно из другого сеанса. Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание. Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания. Данные, помещенные в фоновом сеансе в хранилище по сформированному в родительском сеансе адресу, сразу после помещения становятся недоступными в фоновом сеансе. -------------------------------------------------------------------------------- Методическая информация |
|||
22
Fragster
гуру
15.05.18
✎
08:43
|
Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание.
Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания. Данные, помещенные в фоновом сеансе в хранилище по сформированному в родительском сеансе адресу, сразу после помещения становятся недоступными в фоновом сеансе. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |