gifts2017

Случай из практики: об одной нетривиальной ситуации при обмене УНФ-БП

Опубликовал Олег (uncle_o) в раздел Обмен - Перенос данных из 1С7.7 в 1C8.X

Работал себе обмен между УНФ и БП, а потом как-то засбоил - то проходит, то не проходит. О том, что это было...

Случай из практики

А вот я на фронте был  
Ох-ты, боже мой...   

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

Анамнез:

У одного из наших клиентов учет построен на связке УНФ+БП 2.0. Обе базы – в клиент-серверном варианте. Обмен – по расписанию, по типовому (немного измененному) плану обмена через общий каталог.

Несколько месяцев назад возникла странная проблема: часть объектов (самых разных, и документов, и элементов справочников), созданных в УНФ, с непонятной периодичностью перестали переезжать в БП. После принудительной регистрации и ручного запуска обмена объекты спокойно передавались. На некоторое время, иногда короткое, иногда не очень, ситуация приходила в норму, а потом все повторялось без каких бы то ни было видимых причин (Зараза!!!). Поскольку крики погибающих бухов: «Обмен опять не работает!» - происходили в самые горячие отчетные дни, долго разбираться времени не было, обмен проталкивали вручную. И вот…

Лечение:

В общем, с ног сбились, грешили на правила регистрации, на правила обмена, на потерю файлов на сервере, на алгоритм в УНФ, который определяет помечать ли объект как измененный или нет в зависимости от того, какие реквизиты изменились. И еще бог знает на что! Оказалось…

Некоторое время назад на боевом сервере создали тестовую базу УНФ, загрузили туда копию рабочей базы, чего-то там проверили на ней и забыли про нее напрочь. Естественно, в тестовой базе остались то же самое расписание и тот же самый каталог обмена, что и рабочей базе. И фоновое задание, выполняющее обмен, продолжало запускаться, как ни в чем не бывало.

Теперь – самое интересное. Сеансы обмена запускались в обеих базах УНФ параллельно в одно и то же время, причем, кто из них оказывался первым, определялось каким-то квази-случайным способом. При этом, в тестовой базе, естественно, никаких измененных объектов не возникало, потому что в ней никто уже не работал! Если фоновое задание в тестовой базе опережало аналогичное задание в рабочей базе, то все шло нормально – файл, созданный в рабочей базе, затирал файл из тестовой базы, и никто ничего не замечал. Если же задания запускались в обратном порядке, то ПУСТОЙ файл из тестовой базы затирал файл с выгруженными объектами из рабочей базы и никакого обмена не происходило.

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

Обнаружилось это таким образом. В обработку, выполняющую обмен, я добавил копирование создаваемого файла обмена в файл с уникальным именем, чтобы выследить-таки мерзавца. После очередного «сбоя» обмена, анализируя каталог с этими копиями, я обнаружил, что за один и тот же сеанс обмена имеются два файла с разными номерами сообщений, один из которых оказался пустым! Анализ журнала регистрации показал, что в момент времени, указанный в «пустом» файле, НИКАКИХ ФОНОВЫХ ЗАДАНИЙ в рабочей базе НЕ ВЫПОЛНЯЛОСЬ!  Опаньки, приплыли…

К счастью, я достаточно быстро догадался, что это не нечистая сила, и не происки врагов «из-за бугра», а просто есть еще какая-то база, которая пишет файлы обмена в тот же самый каталог. Вот! Базу тут же нашли и со злорадным удовлетворением грохнули.

Мораль:

1.Нечистой силы не бывает

2.Посуду надо мыть за собой сразу, не дожидаясь пока тараканы заведутся.

С уважением ко всем дочитавшим до конца, Дядюшка О.

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Жека Moscow (SpartakM) 11.07.13 01:05
При создании копии серерной базы, сразу ставь флаг "блокировка регламентных заданий"
тогда подобных проблем можно будет избежать)))
а так да, такую проблему очень сложно было бы найти))))
повезло, что вообще это получилось))
NoRazum; kiros; Malanichev; hulio; +4 Ответить 1
2. NikNik (nsirotkin@mail.ru) 11.07.13 05:03
Несколько раз сталкивался, теперь стараюсь вставлять в обработчики регламентных заданий проверку.
(строку соединений можно подсмотреть/скопировать в диалоге запуска)

Функция ЭтоРабочаяИБ() Экспорт //чтобы регламентные задания не выполнялись в копии ИБ 

	ЭтоРабочаяИБ = Истина;
	
	Попытка
		
		Стр = Константы.СтрокаСоединенияИнформационнойБазы.Получить();
		
		Если ВРЕГ(Стр) <> ВРЕГ(СтрокаСоединенияИнформационнойБазы()) Тогда
		
			ЭтоРабочаяИБ = Ложь;	
		
		КонецЕсли; 
	
	Исключение
	
	КонецПопытки; 

	Возврат ЭтоРабочаяИБ;
	
КонецФункции // ЭтоРабочаяИБ()
...Показать Скрыть
3. Сергей Маслов (LexSeIch) 11.07.13 06:39
Мир этому дому!
Интересный и поучительный рассказ. Грабельки конечно, ниже пояса... Для себя пометил - осторожно с копиями...
4. Александр Н (Alexion) 11.07.13 07:23
Да спасет вас блокировка регламентных заданий при создании баз (с)
плюс за мучения))
5. Макас (makas) 11.07.13 15:05
Прочитал с интересом, спасибо!
6. Николай Зайков (Mortiferus) 17.07.13 14:44
История о том, как забыли выключить утюг! Бог миловал от этого, поскольку если настраиваю обмен между базами, то между тестовыми.
7. Анатолий Бритько (headMade) 17.07.13 22:53
Подскажите где и в какой момент можно включить блокировку регламентных заданий?
8. Virikus 18.07.13 13:44
Это довольно частая ошибка и ловится достаточно быстро.
Чего вы с ней так долго мучились не совсем понятно.

Нужно просто принять за правило совет из (1) и все.
А еще лучше всегда отключать регламентные задания при создании базы и включать уже по мере необходимости.
9. Fomix (fomix) 22.07.13 16:48
(7) headMade, На сервере 1С в свойствах конкретной базы данных
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа