Имя: Пароль:
1C
1С v8
Проблема с регламентным заданием
0 sergggo
 
07.12.12
14:34
Добрый день! Есть две sql-базы, настроен обмен по расписанию через каталог на сервере по следуему принципу:
1. Из нетиповой базы 2 выгружается сообщение обмена в каталог
2. База 1, через 15 минут запускает обмен, в правилах которого создание и запуск внешней обработки (нетиповая обработка ОбменДанымиXML), которая в свою очередь должна проверить каталог, загрузить сообщение в базу 1 и выгрузить сообщение для базы 2.
Проблема:
С завидным непостоянством происходит следующее: либо при создании внешней обработки (при создании пустого сообщения для вспомогательного узла) выдаётся сообщение: "Не корректно указано имя файла для выгрузки данных", либо когда уже создана внешняя обработка и она пытается проверить директорию на сообщение от базы 2. Вся эта ерунда происходит только если никого нет на сервере. Агент сервера установлен как служба. Если смотреть по коду где записывается исключение -- функция ОткрытьФайлВыгрузки, а именно тут:

Попытка
Если НепосредственноеЧтениеВИБПриемнике Тогда
           ФайлОбмена.Открыть(ПолучитьИмяВременногоФайла(".xml"), КодировкаТекста.UTF8);
       Иначе
           ФайлОбмена.Открыть(ИмяФайлаОбмена, КодировкаТекста.UTF8);
       КонецЕсли;
               
   Исключение
       
       СтрокаСообщенияОбОшибке = ЗаписатьВПротоколВыполнения(8);
       Возврат "";
       
   КонецПопытки;


Так как обмен через каталог -- предполагаю что выполняется строчка

ФайлОбмена.Открыть(ИмяФайлаОбмена, КодировкаТекста.UTF8);

Так какого же лешего База 2 может ВСЕГДА создать/выгрузить/загрузить, а База 1, иногда не хочет. Помогите люди добрые, уже голову всю сломал (
1 cw014
 
07.12.12
14:39
Выводи еще имя полученного файла
2 cw014
 
07.12.12
14:39
А еще может быть что не успевает закрывать файл предыдущая база, а следующая уже долбится в него
3 Azverin
 
07.12.12
14:40
(0) если ты фикси, оставь задание на понедельник, а сейчас отдыхай. глядишь, с новыми силами и мысли появятся)
4 Wobland
 
07.12.12
14:41
ПрочитатьИзПротоколаВыполнения ещё не предлагали?
5 ОффПланктон
 
07.12.12
14:57
(4) Воблан - Из Дурдома
6 sergggo
 
07.12.12
14:58
(2) Проверял, вторая база от 15 до 40 секунд выгружает, не больше.
(4) м? Это метод такой? Где и как заюзать, что умеет? )
7 Лефмихалыч
 
07.12.12
15:01
(0) У тебя два регзадания бьются головой в один и тот же ресурс и падают в клинче. Нужен координатор - процесс, который будет сначала пинать Базу 1, чтобы выгрузила, а только потом после успешной выгрузки, пинать вторую, чтобы та загрузила.
8 Wobland
 
07.12.12
15:11
(6) ну ты же пишешь что-то в протокол. или чукча писатель?
9 zling
 
07.12.12
15:20
в тексте иксемель файла есть открывающий и закрывающий теги. Открой файл как текст, Ищи закрывающий - если есть - значит одна база закончила запись
10 sergggo
 
07.12.12
15:22
(7) А может ли база 2 не высвобождать ресурс, даже если она успешно выгрузила? Просто судя по журналу регистрации фоновое задание базы два отрабатывает успешно и завершается.
11 zling
 
07.12.12
15:30
(10) если дело в (7), то см. (9) Ошибки при открытии как текстового файла не будет. Если найдешь тег </v8msg:Message> спокойно открывай как xml
12 sergggo
 
07.12.12
15:44
Проверил имя файла, которое должно получаться при запуске внешней обработки (псевдо-узел), от пользователя:

Начало выгрузки:   07.12.2012 15:35:13
Имя файла обмена C:\Users\test.KLIENTISHIDE\AppData\Local\Temp\15\Полный\ВЫЗОВ ВНЕШНЕЙ ОБРАБОТКИ ДЛЯ ЗАПУСКА ЗАГРУЗКИ ВЫГРУЗКИ ПО СКОРРЕКТИРОВАННОМУ АЛГОРИТМУ\Message_БП2_ПУ.xml

При работе сервиса USR1CV82 данный файл будет:
C:\Users\USR1CV82\AppData\Local\Temp\Полный\ВЫЗОВ ВНЕШНЕЙ ОБРАБОТКИ ДЛЯ ЗАПУСКА ЗАГРУЗКИ ВЫГРУЗКИ ПО СКОРРЕКТИРОВАННОМУ АЛГОРИТМУ\Message_БП2_ПУ.xml ?? В принципе директория такая есть.

Кстати, если руками жмакать в последовательности, что автоматический должен быть -- то всё окей. Если есть активный сеанс на терминале -- то всё окей. Блин (
13 Лефмихалыч
 
07.12.12
16:59
(12) читай (7) до просветления
14 sergggo
 
07.12.12
20:18
(13) ок сижу просветляюсь. А как тогда сеанс (пользователя windows) влияет на то, что клинча не происходит (всё тоже самое, автоматический обмен по-расписанию но проходит)? Оо (пользовательских сеансов 1с в этот момент нет).
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший