среда, 27 марта 2013 г.

Директивы выбора контекста исполнения

Обновляли УПП с версии (1.3.15.6) до (1.3.21.2), платформа (8.2.17.169)

В конфигурации использовался перенос данных в идентичную конфигурацию, с помощью стандартной обработки "УниверсальныйОбменДаннымиXML" в режиме прямого подключения (не файлом) к БД-приемнику. Обработка вызывалась программно (не интерактивно), заполнялись реквизиты и автоматически включался перенос вызовом "ВыполнитьВыгрузку()".

После обновления перенос перестал работать, более того, появились странные вылетания процесса 1С.

Анализ показал следующее -

В технологическом журнале ловится эксепшн "EXCP" со следующим контекстом:

Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта : 12139 : ЗаписатьВПротоколВыполнения("Начало загрузки: " + ТекущаяДата(), , Ложь, , , Истина);
Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта : 1476 : СообщитьПользователю(ИтоговаяСтрокаДляЗаписи);
Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта : 14044 : Сообщение.Сообщить();

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

В итоге, проблема решилась обрамлением вызова Сообщение.Сообщить() в директиву "#Если Клиент Тогда"

А, ведь, в предыдущей версии все вызовы "Сообщить" (там не использовалось сообщение пользователю) были обрамлены в "#Если Клиент Тогда". Но в новой версии это убрали.
ЗАЧЕМ???

Итог. Убил кучу времени, проклял все 1С и ближайших родственников.

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.