Регламентное задание завершается с ошибкой

Новая тема
"Платформа: 8.2.17.153
Конфигурация: Бухгалтерия предприятия, редакция 1.6
Режим: Серверный

Здравствуйте!

Создала регламентное задание, которое выполняет выгрузку/загрузку с помощью Обработки УниверсальныйОбменДаннымиXML
Столкнулась с двумя такими проблемами:

1. Задание завершается с ошибкой : {Документ.СчетФактураВыданный(5895,49)}: Переменная не определена (ФормированиеПечатныхФорм)
Но вызов Общего модуля ФормированиеПечатныхФорм осуществляется в СчетФактуре в функции ПечатьСчетаФактуры(). Когда прохожу отладчиком во внешней процедуре, аналогичной Регламентному заданию, туда вообще не попадаю.

2. Поскольку задание завершается с ошибкой, остаются открытыми файлы (файл данных и лог-файл), при попытке их удалить, переименовать..., выдается собщение "...файл занят другим процессом...". Unlocker никаких процессов, которыми они используются, не показывает. Пытаюсь в Регламентном задании обойти эту ситуацию с помощью

Попытка  
...
исключение
(здесь пытаюсь закрыть файлы)
КонецПопытки;

Тоже выдает ошибку.

Что-нибудь порекомендуете?"
Ошибка происходит потому что в случае выполнения регламентного задания выгрузка происходит полностью на сервере. В случае когда Вы смотрите отладчиком, модуль исполняется на клиенте. Это разные контексты, то есть не все процедуры и переменные будут доступны.
При выгрузке происходит компиляция модуля объекта на сервере и соответственно происходит ошибка, поскольку общий модуль где расположена процедура ФормированиеПечатныхФорм() компилируется только на клиенте и соответственно при регламентной выгрузке система его не находит и сообщает об ошибке.

Данная ошибка преодолевается путем использования директив компиляции. При помощи этих директив программа определяется когда помпилировать ту или иную процедуру.
То есть выглядит это так
#Если НаКлиенте тогда
Процедура
....
конецпроцедуры
#Конецесли



этими директивами можно и отдельные куски кода внутри процедуры ограничивать
напрмиер
продедура
контектнонезависимый код
#Если НаКлиенте тогда
контекстнозасимый код - например Предупреждение()
#конецесли
другой контекстно независимый код
конецпроцедуры




Посмотрите модули типовой конфы - там эти директивы обязательно встречаются - ничего сложного
Читают тему
(гостей: 1)

Быстрый переход