Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Фоновые задания, работа с файлами

Фоновые задания, работа с файлами
Я
   Waterfall1
 
14.05.18 - 12:38
Реализовал параллельное формирование csv файлов, все вроде бы отлично, формирует 1.5млн записей за 3 мин.
Но когда перенес все на боевую базу столкнулся с тем, что фоновое задание пишет файлы на сервере баз данных, а запуск обработки идет с терминального сервера, в итоге не могу забрать файлы для их объединения в итоговую csv.
Пробовал реализовать возврат данных из фонового через хранилище общих
настроек, но получал ошибку "bad allocation" при выполнении ЗначениеВСтрокуВнутр(тут текстовый документ).
Да и вообще гонять большие объемы данных через хранилищеобщихнастроек
не очень хочется.
Может у кого есть идея как лучше реализовать такую выгрузку.
 
 
   D_E_S_131
 
1 - 14.05.18 - 12:45
общая сетевая папка не кашерно?
   Waterfall1
 
2 - 14.05.18 - 13:07
Попробовал на сетевой диск сохранить, 1С его не видит.
   Defender aka LINN
 
3 - 14.05.18 - 13:10
(2) Это не проблема 1С
   Waterfall1
 
4 - 14.05.18 - 13:25
(3) Кажись именно 1С не позволяет. В консоле кода создал документ и сохранил его на клиенте, то файл сохранился, когда выполнил код на сервере, то файл создан не был.
   1Сергей
 
5 - 14.05.18 - 13:44
(4) от имени пользователя сервера 1С
   3achem
 
6 - 14.05.18 - 13:45
(4) С сервера где 1С стоит в папку эту попасть можно?

(0) Используй ХранилищеЗначения
   Waterfall1
 
7 - 14.05.18 - 13:57
(6) Да можно попасть. И что мне с этого хранилища значения,
я его из фонового задания не верну, кроме как через хранилище общих настроек или дополнительный регистр сведений.
   Cyberhawk
 
8 - 14.05.18 - 13:58
Много букв. Сколько платят за решение вопроса?
   Cool_Profi
 
9 - 14.05.18 - 14:01
ты бы определся... Фоновое задание или "запуск обработки идет с терминального сервера"
   3achem
 
10 - 14.05.18 - 14:01
(7) Посмотри права пользователя, который вызывает фоновое задание, USR1CV82

У тебя точно фоновое задание, а не регламентное? Что делаешь то?
 
 Рекламное место пустует
   Waterfall1
 
11 - 14.05.18 - 14:12
(9) (10) Запуск обработки создает фоновые задания, результатом которых является создание файлов. По завершении заданий файлы собираются в единый результирующий файл.
В данный момент на тестовом сервере, на котором находится агент сервера и выполняется запуск обработки все отрабатывает корректно. Но когда сервер на котором запускается обработка отличается от сервера на котором находится агент сервера 1С начинаются проблемы.
   Franchiser
 
12 - 14.05.18 - 14:20
(11) сколько серверов?
   timurhv
 
13 - 14.05.18 - 14:25
(2) 1С служба сервера запущена не под учеткой AD. Поэтому на машине с шарой необходимо создать пользователя с таким же именем и паролем.
   Waterfall1
 
14 - 14.05.18 - 14:26
(12) Юзер может выполнять обработку на 4х разных серверах.
   Franchiser
 
15 - 14.05.18 - 14:29
(14) нужно дать права пользователю 1с на всех 4х серверах, м.б. не все сервера в домене
   Franchiser
 
16 - 14.05.18 - 14:31
(14) я правильно понимаю у тебе кластер из 4-х серверов. Или же пользователи работают на 4-х компьютерах по RDP ?
   Waterfall1
 
17 - 14.05.18 - 14:34
(16) 4 терминальных сервера с балансировкой.
   qw12225
 
18 - 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="";
   qw12225
 
19 - 14.05.18 - 21:10
первая команда подключает твою шару как локальный диск и ты можешь стандартной командой 1с копироватьФайл скопировать файлы куда нужно. Сразу после копирования подключенный диск отключаем.  На клиентах можно такой же командой подключить шару и взять файлы. Либо использовать путь \\10.215.20.10\PUB взять файлы так. На клиентах единственно нужно контролировать чтоб несколько человек не пытались одновременно примапить диск L: - будет ошибка
   cons74
 
20 - 15.05.18 - 08:08
Я так понимаю со штатным ПоместитьВоВременноеХранилище никто работать не захотел?
Из управляющей обработки перед запуском каждого фонового создаем адрес, куда потом помещаем результат фонового. Т.к. адрес получаем в сеансе управляющей обработки - данные будут доступны в ней же. И в конце на сервере выполняем сборку.
   Fragster
 
21 - 15.05.18 - 08:43
Глобальный контекст.ПоместитьВоВременноеХранилище (Global context.PutToTempStorage)
Глобальный контекст (Global context)
ПоместитьВоВременноеХранилище (PutToTempStorage)
Синтаксис:

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

<Данные> (обязательный)

Тип: Произвольный.
Данные, которые необходимо поместить во временное хранилище. 
<Адрес> (необязательный)

Тип: УникальныйИдентификатор; Строка.
Уникальный идентификатор формы, во временное хранилище которой надо поместить данные и вернуть новый адрес. Или адрес во временном хранилище, по которому надо поместить данные. Адрес должен быть получен ранее с помощью данного метода.
В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы.
Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы, то значение будет удалено после завершения сеанса пользователя.
Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
Возвращаемое значение:

Тип: Строка.
Адрес во временном хранилище.
Описание:

Сохраняет сериализуемое значение во временное хранилище.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Вызов метода выполняет обращение к серверу.

Примечание:

Временное хранилище, сформированное в одном сеансе, недоступно из другого сеанса.
Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание.
Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания.
Данные, помещенные в фоновом сеансе в хранилище по сформированному в родительском сеансе адресу, сразу после помещения становятся недоступными в фоновом сеансе.
--------------------------------------------------------------------------------

     Методическая информация
   Fragster
 
22 - 15.05.18 - 08:43
Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание.
Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания.
Данные, помещенные в фоновом сеансе в хранилище по сформированному в родительском сеансе адресу, сразу после помещения становятся недоступными в фоновом сеансе.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует