Ошибка доступа к файлу планировщика регламентных заданий

Обновлено: 07.07.2024

При работе в 1С встречается много рутинных операций которые должны запускаться или формироваться по расписанию выполняя то или иное действие, например: проведение документов или загрузка данных в 1С с сайта.

Недавно я разместил статью: Чтение данных с сайта в формате XML и загрузка в 1С пришло время это автоматизировать:

Регламентные и фоновые задания

Механизм заданий предназначен для выполнения какой-либо прикладной или функциональности по расписанию или асинхронно.

Механизм заданий решает следующие задачи:

  • Возможность определения регламентных процедур на этапе конфигурирования системы;
  • Выполнение заданных действий по расписанию;
  • Выполнение вызова заданной процедуры или функции асинхронно, т.е. без ожидания ее завершения;
  • Отслеживание хода выполнения определенного задания и получение его статуса завершения (значения, указывающего успешность или не успешность его выполнения);
  • Получение списка текущих заданий;
  • Возможность ожидания завершения одного или нескольких заданий;
  • Управление заданиями (возможность отмены, блокировка выполнения и др.).

Механизм заданий состоит из следующих компонентов:

  • Метаданных регламентных заданий;
  • Регламентных заданий;
  • Фоновых заданий;
  • Планировщика заданий.

Фоновые задания & предназначены для выполнения прикладных задач асинхронно. Фоновые задания реализуются средствами встроенного языка.

Регламентные задания & предназначены для выполнения прикладных задач по расписанию. Регламентные задания хранятся в информационной базе и создаются на основе метаданных, определяемых в конфигурации. Метаданные регламентного задания содержат такую информацию как наименование, метод, использование и т.д.

Регламентное задание имеет расписание, которое определяет, в какие моменты времени нужно выполнять связанный с регламентным заданием метод. Расписание, как правило, задается в информационной базе, но может быть задано и на этапе конфигурирования (например, для предопределенных регламентных заданий).

Планировщик заданий используется для планирования выполнения регламентных заданий. Для каждого регламентного задания планировщик периодически проверяет, соответствует ли текущая дата и время расписанию регламентного задания. Если соответствует, планировщик назначает такое задание на выполнение. Для этого по данному регламентному заданию планировщик создает фоновое задание, которое и выполняет реальную обработку.

С описанием, думаю, хватит - приступим к реализации:

Создание регламентного задания


Имя метода – путь к процедуре, которая будет выполняться в фоновом задании по заданному расписанию. Процедура должна находиться в общем модуле. Рекомендуется не использовать типовые общие модули, а создать свой. Не забудьте, что фоновые задания исполняются на сервере!

Использование – признак использования регламентного задания.

Предопределенное – указывает, является ли регламентное задание предопределенным.

Если хотите что бы регламентное задание заработало сразу после помещения в БД, укажите признак Предопределенное. В противном случае вам необходимо будет использовать обработку “Консоль заданий” или вызывать запуск задания программно.

Количество повторов при аварийном завершении задания – сколько раз выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.

Интервал повтора при аварийном завершении задания – с какой периодичностью будет выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.

Настройка расписания

Расписание выполнения задания:


Особенности выполнения фоновых заданий файловом и клиент-серверном вариантах

Механизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются.

В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.

После того, как клиентский процесс, выполняющий обработку фоновых заданий, запущен, остальные клиентские процессы получают возможность программного доступа к механизму фоновых заданий, т.е. могут запускать и управлять фоновыми заданиями.

В клиент-серверном варианте для выполнения фоновых заданий используется планировщик заданий, который физически находится в менеджере кластера. Планировщик для всех поставленных в очередь на выполнение фоновых заданий получает наименее загруженный рабочий процесс и использует его для выполнения соответствующего фонового задания. Рабочий процесс выполняет задание и уведомляет планировщик о результатах выполнения.

В клиент-серверном варианте имеется возможность блокирования выполнения регламентных заданий. Блокирование выполнения регламентных заданий происходит в следующих случаях:

  • На информационную базу установлена явная блокировка регламентных заданий. Блокировка может быть установлена через консоль кластера;
  • На информационную базу установлена блокировка соединения. Блокировка может быть установлена через консоль кластера;
  • Из встроенного языка вызван метод УстановитьМонопольныйРежим() с параметром Истина;
  • В некоторых других случаях (например, при обновлении конфигурации базы данных).

Обработки запуска и просмотра регламентных заданий вы можете скачать здесь:

В одной внедряемой информационной системе значение регламентных заданий (РЗ) оказалось очень велико. С помощью них осуществляется автоматизированная проверка и загрузка исходных данных в систему. И надо же было такому случиться, РЗ стали иногда подвисать. Несколько раз в месяц, после перезапуска сервера 1С Предприятия, все РЗ переставали выполняться. Выяснилось, что ситуация легко локально лечится перезаписью каждого РЗ. После чего они начинают нормально работать.

Поиск в Инете показал, что мы не одиноки. Подобная проблема встречается давно, но есть нюансы. Один из хорошо известных случаев, когда сервер sql и сервер 1С стоят на одной машине. После физического перезапуска сервера сервис 1С Предприятия стартует раньше сервиса sql, и модуль обработки регламентных заданий не может ещё прочитать их из базы. И считает, что их нет. Есть даже рекомендация Микрософт для данной ситуации, которая предусматривает настройку зависимости сервиса 1С Предприятия от сервиса sql. То есть он всегда буде стартовать после. Решение! Но это был не наш случай, так как физического перезапуска сервера у нас не было. Только остановка и старт сервиса. Были проанализированы и другие аспекты. Сервер sql работает непрерывно. Базы в кластер если и добавляются, то порядком реже, чем сбоят РЗ. Разделителей нет. После перезапуска сервера 1С Предприятия РЗ стартуют независимо.

Dim v82 , base
Set v82 = CreateObject ( "V82.ComConnector" )
ConnString = "Srvr=имя_сервера;Ref=имя_базы"
Set base = v82 . Connect ( ConnString )
base . CheckScheduledTasks

В зависимости от настроек, в строку соединения возможно придется добавить пользователя и пароль: "usr=пользователь;pwd=пароль".

В конфигурацию я добавил процедуру в Модуль внешнего соединения, которая вызывает процедуру из Общего модуля:

Процедура CheckScheduledTasks () Экспорт
РегламентныеЗадания . ПроверитьПерезаписатьРегламентныеЗадания ();
КонецПроцедуры

// Процедура проверяет выполнение и перезаписывает все включенные регламентные задания
Процедура ПроверитьПерезаписатьРегламентныеЗадания () Экспорт
мРЗ = РегламентныеЗадания . ПолучитьРегламентныеЗадания (Новый Структура ( "Использование" , Истина));

Если мРЗ . Количество () = 0 тогда
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Информация . "Отсутствуют Регламентные задания с признаком Использование" );
КонецЕсли;

стрТекущееВремя = "00010101" + Формат ( Час ( ТекущаяДата ()), "ЧЦ=2; ЧН=00; ЧВН color: red;">)+ Формат ( Минута ( ТекущаяДата ()), "ЧЦ=2; ЧН=00; ЧВН color: red;">)+
Формат ( Секунда ( ТекущаяДата ()), "ЧЦ=2; ЧН=00; ЧВН color: red;">);
ТекущееВремя = Дата ( стрТекущееВремя );

мПозже = Новый Массив ;
фПерезаписываем = Ложь;

Для каждого РЗ из мРЗ цикл
Если РЗ . Расписание . ВремяНачала > ТекущееВремя тогда
мПозже . Добавить ( РЗ );
ИначеЕсли РЗ . ПоследнееЗадание = Неопределено тогда
РЗ . Записать ();
фПерезаписываем = Истина;
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Предупреждение , РЗ . Метаданные , РЗ , "Перезаписано - " + РЗ . Метаданные . Имя );
Иначе
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Информация , РЗ . Метаданные , РЗ , "Нормально выполняется - " + РЗ . Метаданные . Имя );
КонецЕсли;
КонецЦикла;

Если фПерезаписываем тогда
Для каждого РЗ из мПозже цикл
РЗ . Записать ();
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Предупреждение , РЗ . Метаданные , РЗ , "Перезаписано - " + РЗ . Метаданные . Имя );
КонецЦикла;
КонецЕсли;
КонецПроцедуры

Последний модуль был доработан. Обрабатываются все используемые РЗ. Если РЗ должно было начать выполняться до момента проверки, но не выполнялось, то перезаписываем его. Если были обновления, то перезаписываем и более поздние РЗ.

Ошибка доступа к файлу 1C 8.3: что делать?

1С – популярное во многих организациях программное обеспечение, необходимое для создания разнообразных отчетностей. И, согласитесь, не очень приятно, когда хочется приступить к полноценной работе, а вместо этого возникает какая-либо неприятность. Например, ею может быть так называемая ошибка доступа к файлу 1С.

Стоит понимать, что многие люди, использующие данную программу, не являются опытнейшими программистами или сисадминами. Поэтому они могут впасть в панику, так как просто не представляют, как поступать в подобной ситуации.

Ошибка доступа к файлу 1C 8.3: что делать?

Естественно, они задают вопрос – что делать?

В этой статье мы разберем эту ситуацию, расскажем, как избавиться от возникшей неприятности.

Методика исправления

Причиной возникновения подобного сбоя могут стать совершенно разные ситуации. Мы рассмотрим основные из них, для каждого из которых подберем оптимальное решение:

Пользователь разместил программу на локальном ПК

Да, такая ситуация встречается достаточно часто. И ПО может легко потерять права доступа к нужному элементу после банального обновления операционной системы.

Конечно, можно зайти в Центр обновления Windows и запретить установку таких пакетов. Но это может привести к другим неприятностям. Уже с самой операционкой.

Поэтому рекомендуется заводить специальный сервис и размещать компоненты ПО именно на нем.

Другие причины

Если причина – не в нахождении ПО 1С 8.3 на локальном компе, то рекомендуется опробовать следующие процедуры:

  • Перепроверить настройки всего оборудования, которое используется для сетевого подключения;
  • Сменить DNS-сервер на альтернативный. Его данные обязательно нужно будет указать в настройках, а на всех ПК, которые используют программу – выставить АйПи адреса статичного типа;
  • Временно остановить работу таких программ, как антивирусное ПО и брандмауэр. Если это поможет, то всегда выполнять эту процедуру, но затем – не забывать опять активировать защиту операционной системы.

Если все эти действия не принесли результата, то есть еще один эффективный метод:

  • Открыть проводник и совершить переход по адресу: C:\1c\СЦТО-2\;
  • На последней из открытых папок кликнуть правой кнопочкой компьютерной мышки;
  • Выпадет дополнительное меню, в котором следует выбрать вариант «Свойства»;
  • Активируется новое окно, в котором следует зайти во вкладку «Безопасность»;
  • Убедиться, что у пользователя, который открыл именно этот сеанс Windows, есть необходимые права на запись.

Ошибка доступа к файлу 1C 8.3: что делать?

Если их нет – предоставить. Или зайти через учетку, которая подобным разрешением обладает.

Как узнать имя пользователя сеанса Windows

Да, с этим тоже могут возникнуть проблемы. Даже не все опытные пользователи знаю, где можно заполучить такие сведения. На самом деле – все просто:

Ошибка доступа к файлу 1C 8.3

То есть, решается вопрос буквально за одну минуту.

Отзывы

Что делают обычные люди, когда сталкиваются с этой ошибкой? Давайте узнаем через их отзывы:

Анна Викулина

…а также «Ошибка совместного доступа к файлу» 1С 8.3.

Само название ошибки уже говорит пользователю о случившемся: в первом случае – о нарушении прав доступа. Такое сможет случиться, когда пользователь скопировал информационную базу, подключил, а при открытии по сети всплыла такого рода ошибка с указанием сетевого пути к объекту. В этом случае, первое, на что сразу надо обратить внимание – на права доступа, щелкнув правой кнопкой на свойства объекта. Нажав кнопку «Общий доступ», проверить настройки.

Рис.3 Нажав кнопку «Общий доступ», проверить настройки

Рис.3 Нажав кнопку «Общий доступ», проверить настройки

Доступ пользователя Windows, который запустил сеанс программы 1С, должен быть не только на чтение, но и на запись.

Рис.4 Доступ пользователя Windows, который запустил сеанс программы 1С, должен быть не только на чтение, но и на запись

Рис.4 Доступ пользователя Windows, который запустил сеанс программы 1С, должен быть не только на чтение, но и на запись

Если база располагается на локальном ПК, необходимо проверить на закладке «Безопасность», что для пользователя установлено разрешение на запись или не стоит запрет на запись.

Предупреждение о проблемах с совместным доступом с указанием пути к конкретному объекту, кроме сбоя сетевых настроек, может быть следствием предустановок брандмауэра, антивирусных программ, которые стопорят сетевые подключения. Необходимо открыть их настройки и посмотреть, не будет ли 1С в списке заблокированных программ. Если это так, следует удалить ее из списка или добавить файл информационной базы 1С в исключения, предотвратив его блокировку.

Если при возникновении ошибки система указывает на временные файлы, например C:\Users\. \AppData\Local\Temp\, то очистка кэш может решить проблему с ошибкой.

Высока вероятность появления такой ошибки – при одновременном запуске двух программ (ЗУП и Бухгалтерии), одна из которых была базовой версией. Когда программы запустили по очереди, ошибка не появлялась.

Для решения проблемы с ошибкой доступа, как видите, потребуется немного времени, главное – понять причину и исключить ее повторение.

Читайте также: