Фоновый обмен данными.
Показывать по
10
20
40
сообщений
- 1
- 2
15.04.2009
11:34
#11
If you are cleverer than me, inform on this mistake and explain to me as it to solve.
15.04.2009
12:19
#12
> А грубить не надо. Программа 1С с самого начала как имела подобные проблемы, так до сих пор их имеет и надо признавать свои ошибки и помогать в их решении.
а кто грубил, тебе пытаются помочь, а ты начинаешь, что тебя достали, вот я тебе и ответил, что если такой умный, то не лезь с вопросами, сделал, хорошо, выложи решение вопроса на форум, поможешь другим!
З,Ы, Здесь кстати нет разработчиков 1С!
а кто грубил, тебе пытаются помочь, а ты начинаешь, что тебя достали, вот я тебе и ответил, что если такой умный, то не лезь с вопросами, сделал, хорошо, выложи решение вопроса на форум, поможешь другим!
З,Ы, Здесь кстати нет разработчиков 1С!
24.04.2009
12:00
#13
"Товарисчи была точно такая я же проблема!
На сервере не выполнялось Регламентное задание с выводом данных запроса в файл на жестком диске.
Ошибка: Вывод запрещен.
Решение:
Док = Новый ТекстовыйДокумент;
Док.Вывод = ИспользованиеВывода.Разрешить;
...
Док.Записать(...);
И всё работает :)"
На сервере не выполнялось Регламентное задание с выводом данных запроса в файл на жестком диске.
Ошибка: Вывод запрещен.
Решение:
Док = Новый ТекстовыйДокумент;
Док.Вывод = ИспользованиеВывода.Разрешить;
...
Док.Записать(...);
И всё работает :)"
04.05.2009
15:17
#14
"Спасибо большое за ответ про запись файла. Была точно такая же проблема, нигде не могла найти решение.
Подскажите еще один момент: есть предопределенное регламентное задание (клиент-серверный вариант работы). Нужно, чтобы порождаемые им фоновые задания запускались на сервере от имени определенного пользователя. Где лучше задать этого самого пользователя?
Код в процедуре (см.ниже), связанной с этим регламентным заданием, приводит к зацикливанию запуска регламентного задания
Код:
Процедура ВызовРеглЗадания()
ТекРеглЗадание=РегламентныеЗадания.НайтиПредопределенное("РеглЗадание");
//программное задание имени пользователя для регламентного задания
ТекРеглЗадание.ИмяПользователя="ПользовательДляРеглЗадания";
ТекРеглЗадание.Записать();
...
КонецПроцедуры;"
Подскажите еще один момент: есть предопределенное регламентное задание (клиент-серверный вариант работы). Нужно, чтобы порождаемые им фоновые задания запускались на сервере от имени определенного пользователя. Где лучше задать этого самого пользователя?
Код в процедуре (см.ниже), связанной с этим регламентным заданием, приводит к зацикливанию запуска регламентного задания
Код:
Процедура ВызовРеглЗадания()
ТекРеглЗадание=РегламентныеЗадания.НайтиПредопределенное("РеглЗадание");
//программное задание имени пользователя для регламентного задания
ТекРеглЗадание.ИмяПользователя="ПользовательДляРеглЗадания";
ТекРеглЗадание.Записать();
...
КонецПроцедуры;"
04.05.2009
16:49
#16
В смысле чем не устраивает? Всем устраивает. Вы, наверное, не поняли вопрос.
Когда кодом создается фоновое задание - там можно прописать пользователя, от имени которого оно будет запускаться. А так получается, что регламентное задание само порождает фоновые. И если это фоновое выполняется на сервере, то оно получается не привязано ни к какому пользователю. А нужно привязать к определенному пользователю, чтобы отслеживать изменения по объектам, измененным этим фоновым заданием. В общем, вопрос в том, как сделать так, чтобы фоновые задания, порождаемые регламентным запускались от определенного пользователя. Собственно, либо само регламентное нужно запустить под этим пользователем, либо фоновым каким-то образом нужно передать пользователя как параметр.
Должно быть понятно, подробней уже некуда.
Когда кодом создается фоновое задание - там можно прописать пользователя, от имени которого оно будет запускаться. А так получается, что регламентное задание само порождает фоновые. И если это фоновое выполняется на сервере, то оно получается не привязано ни к какому пользователю. А нужно привязать к определенному пользователю, чтобы отслеживать изменения по объектам, измененным этим фоновым заданием. В общем, вопрос в том, как сделать так, чтобы фоновые задания, порождаемые регламентным запускались от определенного пользователя. Собственно, либо само регламентное нужно запустить под этим пользователем, либо фоновым каким-то образом нужно передать пользователя как параметр.
Должно быть понятно, подробней уже некуда.
04.05.2009
18:56
#17
Честно, я все равно не понял.
1. Под фоновым заданием я подразумеваю регламентированное задание запущенное сервером по расписанию.
2. Кодом или обработкой КонсольЗаданий.epf создается задание для запуска, где и определяется имя пользователя. В результате регламентированное задание выполняется от имени этого пользователя (в фоне).
Возникает вопрос:
Процедура ВызовРеглЗадания() в самом регламентированном задании? Если да, то как вы определяете "ПользовательДляРеглЗадания", если задание запущено сервером?
> регламентное нужно запустить под этим пользователем
Вы видели в справке функцию, которая позволяет запустить? Если да - приведите код, а то очень не хватает параллелизма, а так можно было бы выкрутиться.
> либо фоновым каким-то образом нужно передать пользователя как параметр
Опять таки - фоновое задание, реально никому не принадлежит - его выполняет сервер. Там нет клиентских возможностей.
> В общем, вопрос в том, как сделать так, чтобы фоновые задания, порождаемые регламентным запускались от определенного пользователя.
Задать имя пользователя при создании задания.
1. Под фоновым заданием я подразумеваю регламентированное задание запущенное сервером по расписанию.
2. Кодом или обработкой КонсольЗаданий.epf создается задание для запуска, где и определяется имя пользователя. В результате регламентированное задание выполняется от имени этого пользователя (в фоне).
Возникает вопрос:
Процедура ВызовРеглЗадания() в самом регламентированном задании? Если да, то как вы определяете "ПользовательДляРеглЗадания", если задание запущено сервером?
> регламентное нужно запустить под этим пользователем
Вы видели в справке функцию, которая позволяет запустить? Если да - приведите код, а то очень не хватает параллелизма, а так можно было бы выкрутиться.
> либо фоновым каким-то образом нужно передать пользователя как параметр
Опять таки - фоновое задание, реально никому не принадлежит - его выполняет сервер. Там нет клиентских возможностей.
> В общем, вопрос в том, как сделать так, чтобы фоновые задания, порождаемые регламентным запускались от определенного пользователя.
Задать имя пользователя при создании задания.
05.05.2009
13:14
#18
>Честно, я все равно не понял.
>1. Под фоновым заданием я подразумеваю регламентированное задание запущенное сервером по расписанию.
не совсем так.
(из книги "1С:Предприятие от 8.0 к 8.1 Белоусов, Островерх")
Регламентные задания позволяют по расписанию (однократно или с заданной периодичностью) инициализировать исполнение процедур (функций) общих неглобальных модулей. Регламентные задания хранятся в информационной базе и создаются на основе метаданных, определяемых в конфигураторе. Исполняемая процедура (функция) является методом регламентного задания.
...
Регламентное задание выполняется от имени того пользовател, имя которого назначено заданию. Если имя не назначено, регламентное задание выполняется от имени пользователя по умолчанию, имеющего административные права.
При выполнении регламентного задания порождается фоновое задание, которое и исполняет метод, назначенный регламентному заданию.
...
Как для предопределенного, так и для непредопределенного регламентного задания указать имя пользователя, от лица которого оно будет выполняться, и/или задать параметры методу регламентного задания можно только на этапе исполнения (программно или интерактивно).
>2. Кодом или обработкой КонсольЗаданий.epf создается задание для запуска, где и >определяется имя пользователя. В результате регламентированное задание выполняется от >имени этого пользователя (в фоне).
В моем случае, задание для запуска создается автоматически программой, потому как это регламентное задание Предопределенное.
>Возникает вопрос:
>Процедура ВызовРеглЗадания() в самом регламентированном задании? Если да, то как вы >определяете "ПользовательДляРеглЗадания", если задание запущено сервером?
ВызовРеглЗадания() - это процедура, которую и вызывает само регламентированное задание. Она связана с самим заданием, и действительно получается, что в момент исполнения процедуры задание уже запущено. Собственно, вопрос в том - как поймать момент перед запуском регл.задания?.. (чтобы определить/уточнить пользователя)
>> регламентное нужно запустить под этим пользователем
>Вы видели в справке функцию, которая позволяет запустить? Если да - приведите код, а то >очень не хватает параллелизма, а так можно было бы выкрутиться.
функцию такую я, конечно, не видела. Но можно, опять же, перед запуском этого задания сервером, задать ему пользователя, под которым он будет выполняться.
>> либо фоновым каким-то образом нужно передать пользователя как параметр
>Опять таки - фоновое задание, реально никому не принадлежит - его выполняет сервер. Там >нет клиентских возможностей.
Выполняет сервер, но от имени определенного пользователя. Про параметр - это я глупость написала, признаюсь. Не очень внимательно читала книгу.
>> В общем, вопрос в том, как сделать так, чтобы фоновые задания, порождаемые регламентным >>запускались от определенного пользователя.
>Задать имя пользователя при создании задания.
Как его задать? Точнее, где его задать в программе? В процедуре регл.задания нельзя - там оно уже выполняется и происходит зацикливание. В глобальные модули (соединения, приложения, сеанса) сервер не заглядывает, када запускает очередное задание...
>1. Под фоновым заданием я подразумеваю регламентированное задание запущенное сервером по расписанию.
не совсем так.
(из книги "1С:Предприятие от 8.0 к 8.1 Белоусов, Островерх")
Регламентные задания позволяют по расписанию (однократно или с заданной периодичностью) инициализировать исполнение процедур (функций) общих неглобальных модулей. Регламентные задания хранятся в информационной базе и создаются на основе метаданных, определяемых в конфигураторе. Исполняемая процедура (функция) является методом регламентного задания.
...
Регламентное задание выполняется от имени того пользовател, имя которого назначено заданию. Если имя не назначено, регламентное задание выполняется от имени пользователя по умолчанию, имеющего административные права.
При выполнении регламентного задания порождается фоновое задание, которое и исполняет метод, назначенный регламентному заданию.
...
Как для предопределенного, так и для непредопределенного регламентного задания указать имя пользователя, от лица которого оно будет выполняться, и/или задать параметры методу регламентного задания можно только на этапе исполнения (программно или интерактивно).
>2. Кодом или обработкой КонсольЗаданий.epf создается задание для запуска, где и >определяется имя пользователя. В результате регламентированное задание выполняется от >имени этого пользователя (в фоне).
В моем случае, задание для запуска создается автоматически программой, потому как это регламентное задание Предопределенное.
>Возникает вопрос:
>Процедура ВызовРеглЗадания() в самом регламентированном задании? Если да, то как вы >определяете "ПользовательДляРеглЗадания", если задание запущено сервером?
ВызовРеглЗадания() - это процедура, которую и вызывает само регламентированное задание. Она связана с самим заданием, и действительно получается, что в момент исполнения процедуры задание уже запущено. Собственно, вопрос в том - как поймать момент перед запуском регл.задания?.. (чтобы определить/уточнить пользователя)
>> регламентное нужно запустить под этим пользователем
>Вы видели в справке функцию, которая позволяет запустить? Если да - приведите код, а то >очень не хватает параллелизма, а так можно было бы выкрутиться.
функцию такую я, конечно, не видела. Но можно, опять же, перед запуском этого задания сервером, задать ему пользователя, под которым он будет выполняться.
>> либо фоновым каким-то образом нужно передать пользователя как параметр
>Опять таки - фоновое задание, реально никому не принадлежит - его выполняет сервер. Там >нет клиентских возможностей.
Выполняет сервер, но от имени определенного пользователя. Про параметр - это я глупость написала, признаюсь. Не очень внимательно читала книгу.
>> В общем, вопрос в том, как сделать так, чтобы фоновые задания, порождаемые регламентным >>запускались от определенного пользователя.
>Задать имя пользователя при создании задания.
Как его задать? Точнее, где его задать в программе? В процедуре регл.задания нельзя - там оно уже выполняется и происходит зацикливание. В глобальные модули (соединения, приложения, сеанса) сервер не заглядывает, када запускает очередное задание...
- 1
- 2
1С 8.1.12 ЗиУП 2.5.11.2 Отчет "Расчетные листки организации" после начисления аванса.самопроизвольно закрывается 1C
Читают тему
(гостей: 1)