1с получить номер сеанса фонового задания
При запуске фонового задания создается и проводится документ. При проведеднии он дергает некоторые параметры сеанса. Они, понятное дело, не инициализированы. И задание вываливается, не выполнившись. Кто-нибудь знает, как с этим бороться? Можно ли инициализировать параметры сеанса в фоновом задании?
Параметры сеанса - это параметры сеанса некоторого конкретного пользователя. Для каждого пользователя свои конкретные параметры. А под каким пользователем у вас запускается сеанс? На какие параметры вы расчитываете? Мне кажется надо пересмотреть алгоритм работы задания.
Я извиняюсь, но фоновое задание НЕ запускается под пользователем, оно запускается обособленно. По крайней мере, в случае клиент-сервер.
Отладчиком мне не нужно, я и так знаю, где и почему ошибка. Она в данном случае на строке: Потому что параметр сеанса не инициализирован. Мне надо узнать, можно ли с ней побороться как либо иначе, кроме вставки Попытка. Исключение. Так, наверно я ошибаюсь с терминологией, и перепутал фоновое и регламентное. Я говорю "фоновое" потому что так оно называется в журнале регистрации. 1С запускать для его работы не нужно.
Ещё раз. У каждого пользователя своя граница запрета. На какую границу вы в данном случае расчитываете? Под каким пользователем у вас запустится регламентное задание?
Да блин, ни под каким! В журнале регистрации графа "пользователь" пустая. Вообще никого в базе не было, когда задание отработало, ни одного пользователя.
пост вобше то не совсем верен. параметры сеанса это именно параметры сеанса а не настройки пользователя и тп. упрощенно это некий набор переменных видимость которых ограниченна данным сеансом. наличие пользователя не обязательно и не имеет к этому никакого отношения.
А вот меня мучает вопрос. У каждого пользователя своя граница запрета. Чему у автора будет равна граница запрета, если он даже не знает под каким пользователем запускается сеанс.
так ее выставляет код 1с который отрабатывает при начале работы системы(что кстати не обязательно;)). посмотри код.
В клиент сервере регламентное задание запускается под полными правами. А у полных прав не проверяется дата запрета редактирования.
уверен, что ошибка именно в этой строке? попробуй запустить в файловом варианте из под какого нить юзверя через ВыполнитьОбработкуЗаданий параметры сеанса можно инициировать на сервере. Хотя нигде не написано, что нельзя.
а в чем проблема? Ну не обращайся к параметрам сеанса в своей чудо-обрботке и все. Получай данные как-то иначе
Конфигуратор в режиме отладки позволяет выбрать предмет отладки (Тонкий/Толстый клиенты/HTTP-Сервис/Фоновое задание и т.д.), консоль кластера также отображает тип подключения сеанса (колонка "приложение"), ну и наконец стандартная обработка "Активные пользователи" также умеет это делать.
Контекст сеанса 1С хранит в параметре ИмяПриложения соединениий с информационной базой, для того чтобы получить список сеансов текущей информационной базы можно воспользоваться фунцией ПолучитьСеансыИнформационнойБазы(), а номер текущего соединения - НомерСоединенияИнформационнойБазы().
Для простоты и удобства пример функции, которая получает контекст сеанса:
Вызвать функцию можно так:
Реализация, найденная в интернете и не решающая задачу:
Специальные предложения
Кажется, что предложенное решение тоже не до конца справляется.
Например для толстого клиента оно так и не ответит на вопрос - где же я нахожусь. На сервере толстого клиента, или на клиенте.
Но с оговорками да.. вполне себе вариант.
(3)Почему не скажет? Скажет. Проблема только с файловой базой и толстым клиентом. Но. в этом случае "Серверного контекста" НЕ СУЩЕСТВУЕТ - все вызовы идут только под контекстом "Толстого клиента" (под обычным или управляемым приложением), даже, если в указан переход в контекст сервера (например через общи модуль с вызовом сервера) - контекст останется "Толстый клиент". А зачем Вам иное - ведь - реально контекст именно и будет "Толстый клиент" - никакого серверного контекста ВООБЩЕ не будет - будет доступно всё то, что доступно толстому клиенту - т.е. ВСЁ! В отладчике контекст будет "Толстый клиент". Более того, в толстом клиенте игнорируется не только директива "Вызов сервера", но и директива "Сервер" - т.е. будут доступны и функции чисто серверных модулей - прямо с клиента. Так устроена платформа. Вот, для тонкого клиента в файловой базе - контексты уже будут разделены.
А для толстого клиента остаётся только проверить, что он толстый клиент и это файловая база. Это можно проверить ещё и так
Аналогично толстому клиенту, в файловой базе, ведёт себя и внешнее соединение (только вместо директивы "Клиент" отрабатывает директива "ВнешнееСоединение ", а директива "Сервер" по-прежнему отрабатывает, вернее игнорируется - серверный контекст полностью доступен в контексте внешнего соединения без "вызова сервера"). Разве что интерфейсные вызовы не доступны (доступно всё то, что доступно для внешнего соединения).
Как в 1С производится запуск фоновых заданий, каким образом можно получить список заданий при помощи метода "ПолучитьФоновыеЗадания()?
В одном проекте понадобилось запускать выполнение выгрузки на сайт с сервера.
Пользователь на своем клиенте открывает обработку, устанавливает параметры и нажимает выгрузить.
Выгрузка идет не с компьютера клиента, а создается фоновое задание на сервере!
На клиенте в модуле Кнопки Выгрузить:
ПараметрыФоновогоЗадания - это переменные функции, они задаются по порядку как определены в вызываемой функции.
На сервере в общем модуле МодульРегламентныхЗаданий:
Как Получить фоновые задания?
Напишем в процедуре обработки нажания следующий код:
Текст процедуры на сервере:
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем rphost занимает память и грузит процессор 19
У многих возникают проблемы с rphost.exe, разного вида: rphost занимает всю память rphost грузит процессор rphost жрет память причем 1С даже на запущена, а в диспетчере следующее: ежеминутно расчет на 2-3 мегабайта. Как быть и что делат Посмотреть все результаты поиска похожих
Еще в этой же категории
Регламентные и фоновые задания (создание, настройка, запуск) 41
При работе в 1С встречается много рутинных операций которые должны запускаться или формироваться по расписанию выполняя то или иное действие, например: проведение документов или загрузка данных в 1С с сайта. Недавно я разместил статью: Чтение данн Фоновые задания 1С, примеры работы и параллельного запуска 7
В рамках выполнения проекта столкнулся с интересной задачей ускорения загрузки данных из других информационных баз. Задача загрузки данных предполагала выполнение к внешней базе несвязанных между собой запросов, результаты которых помещаются в одну Посмотреть все в категории Регламентные задания, Фоновые задания
В рамках выполнения проекта столкнулся с интересной задачей ускорения загрузки данных из других информационных баз. Задача загрузки данных предполагала выполнение к внешней базе несвязанных между собой запросов, результаты которых помещаются в одну таблицу значений. Когда на оптимизацию запроса рука уже не поднималась, приступил к ускорению загрузки с помощью распараллеливания процессов. Отмечу, что элементы кода в данном посте приведены для клиент-серверного варианта и укрупнено для общего понимания подхода.
Что у нас в 1с Предприятии 8.2 имеется для распараллеливания & это фоновые задачи. Метод, который будет вызываться в фоновой задаче, должен быть прописан в серверном общем модуле и быть экспортным. Естественно нам понадобиться в фоновую задачу передавать и забирать значения.
Зачем нам в фоновую задачу передавать адрес во временном хранилище. Наша фоновая задача должна куда-то положить результат, причем так чтобы мы знали где его потом взять.
Для того чтобы запустить фоновые задачи выполняется следующий код:
Перед запуском фоновой задачи через ФоновыеЗадания.Выполнить() мы формируем массив параметров. Значения из массива параметров переходят в метод фонового задания в качестве параметров. В МассивЗапущенныхЗаданий хранятся все фоновые задачи, которые мы запустили. Теперь надо подождать их ожидания.
ФоновыеЗадания.ОжидатьЗавершения(МассивЗапущенныхЗаданий);
После того как все задачи были завершены, можем приступить к получению из них данных. Для этого мы проходим по всем адресам в хранилище, которые хранятся в массиве МассивАдресовВХранилище. После получения результата фонового задания перегоняем его в общую таблицу.
Вопрос определения оптимального количества потоков выходит за рамки данного поста. А после получения некоторых результатов на рабочих данных пока что выходит и за рамки моего сознания . Но если у вас есть идеи как посчитать нужное количество потоков, пишите в комментариях, с радостью почитаю.
Похожие FAQ
Еще в этой же категории
Регламентные и фоновые задания (создание, настройка, запуск) 41
При работе в 1С встречается много рутинных операций которые должны запускаться или формироваться по расписанию выполняя то или иное действие, например: проведение документов или загрузка данных в 1С с сайта. Недавно я разместил статью: Чтение данн Фоновые задания: Пример запуска выполнения процедуры / функции на сервере 0
Как в 1С производится запуск фоновых заданий, каким образом можно получить список заданий при помощи метода "ПолучитьФоновыеЗадания()? В одном проекте понадобилось запускать выполнение выгрузки на сайт с сервера. Пользователь на своем клиенте от Посмотреть все в категории Регламентные задания, Фоновые задания
1С фоновое задание позволяет нам производить какие-либо вычисления в системе незаметно для пользователя, то есть в фоне. Более того данный механизм позволяет нам распараллелить процесс вычисления. Распараллелить мы можем даже процедуру, которая будет выполняться. Для этого наше фоновое задание должно запускать еще несколько фоновых заданий. В этом случае процессы распараллеливаются и, если у нас многопроцессорная, многоядерная система, наш алгоритм будет работать эффективно. После запуска нескольких процессов мы можем сказать системе, что необходимо дождаться окончания выполнения этих процессов для того, чтобы потом каким-то образом свести результат.
К примеру, в типовых конфигурациях, в то время как пользователь работает, происходит выполнение различного рода сервисных фоновых заданий. Об этом может свидетельствовать записи журнала регистрации, в котором фиксируется факт выполнения таких действий. Причем на работу пользователя это никак не влияет, он просто их не замечает.
В идеале фоновое задание реализуется в варианте клиент-сервер, в этом случае вся нагрузка переходит на сервер. Что касается файлового варианта, то работа фонового задания возможна, но она имеет некоторые особенности.
Вот что выдаст система если не учесть эти особенности, и запустить фоновое задание в файловом варианте информационной базы.
Обратившись к синтакс-помощнику можно получить более детальные сведения о фоновых заданиях 1С. Здесь следует отметить, что это объект исключительно программный и он никак не сохраняется в базе данных. То есть мы создаем экземпляр класса, инициализируем свойства и запускаем его на выполнение.
Какие же средства мы имеем для управления фоновыми заданиями? Этим средством является объект метаданных"МенеджерФоновыхЗадания". У этого объекта есть метод "Выполнить", с помощью этого метода, как раз и запускается фоновое задание.
Имеет он следующие параметры: "ИмяМетода" - имя процедуры или функции, которую нужно выполнить, причем это должна быть процедура или функция серверного контекста; "Параметры" - массив параметров, количество элементов которого должно соответствовать количеству параметров нашей процедуры/функции, указанной в параметре "ИмяМетода"; "Ключ" - некий ключ уникальности, представляющий из себя строчку, по которой система понимает нужно ли запускать фоновое задание либо такое задание уже запущено; "Наименование" - здесь можно указать произвольное описание нашего метода.
Возвращаемым значением является объект "ФоновоеЗадание", содержащий текущее имя метода, текущий ключ и еще несколько свойств и методов. Одним из таких методов является метод "ОжидатьЗавершения". Его задачей является то, что мы может указать системе, чтобы ничего не производилось пока не будет завершено фоновое задание.
Фоновое задание 1С 8.2, 8.3 - Пример использования
Приведем пример работы с фоновыми заданиями 1С. Сначала создадим простой алгоритм, который будет ненадолго загружать систему 1С таким образом, чтобы мы ничего не могли в это время делать.
Для этого:
1. Создадим общий модуль "ОбработчикиФоновыхЗаданий", который будет компилироваться на стороне сервера;
2. Опишем в нем экспортную процедуру "ПроизветиФоновоеВычисление(Параметр)", которая принимает один параметр строкового типа;
3. Далее создадим внешнюю обработку и в событии нажатия на кнопку поместим код, запускающий наш алгоритм;
Готово. Теперь при запуске обработки и нажатии на кнопку происходит подвисание системы на несколько секунд, в процессе которого ничего нельзя сделать. Это как раз то, что нам и нужно было сделать.
Теперь обеспечим произведение этих вычислений в фоне, то есть чтобы фоновое задание 1С 8.2, 8.3 выполнялось, но нам не мешало.
Для этого:
1. В обработке, в событии нажатия кнопки пропишем следующий код.
Здесь первым параметром мы передаем имя процедуры общего модуля, а вторым - массив параметров. Третьим параметром нужно передать уникальный ключ и четвертым некоторое описание нашей процедуры.
Готово. Теперь можем проверять. Перезапускаем нашу обработку нажимаем кнопку, система не подвисает и мы работаем беспрепятственно.
Кстати, убедиться в том, что 1С фоновое задание работало можно посмотрев в записи журнала регистрации. В этих записях фиксируется когда производился запуск фонового задания.
Приведенный выше пример показывает, как работает фоновое задание 1С 8.2, 8.3. То, каким полезным оно может быть в разработке ваших алгоритмов.
Вы еще не читали? Вам это будет интересно.
Пример работы с деревом значений в 1С. Часть вторая - Добавление возможности проставления галок и сопоставление строке картинки.Рассмотрим на примере, как в дерево значений добавить возможность проставления галок и сопоставлять каждой конкретной строке требуемую нам картинку.
Пример работы с деревом значений в 1С. Часть первая - добавление строк.Работа с деревом значений немного отличается от работы с таблицей значений, в частности это видно на операции добавления строк. Смотрим на примере.
Отладка фоновых (регламентных) заданий в 1С 8Иногда возникает необходимость отладить фоновое (регламентное) задание. Как раз с этим-то, зачастую, и возникает проблема.
Удаленное программирование в 1С. Какие преимущества?Выбирая сотрудничество с удаленным программистом 1С, вы выбираете правильную экономию ваших средств и высокое качество выполнения задач.
Читайте также: