Каталог решений - Автоматический обмен при появлении файла, по регламентному заданию создаёт файл выгрузки, даже если файл загрузки не появлялся

Автоматический обмен при появлении файла, по регламентному заданию создаёт файл выгрузки, даже если файл загрузки не появлялся

Автоматический обмен при появлении файла, по регламентному заданию создаёт файл выгрузки, даже если файл загрузки не появлялся

В наличии

Заметил, что «Автоматический обмен при появлении файла» каждый раз создаёт файл выгрузки данных, даже если файл для загрузки данных не появлялся. Данный код проверит, что файл появился, только после чего создаст файл выгрузки данных.

Категория:

Описание

Вариант работы ИБ клиент-сервер, где сервер linux(COM-объект недоступен). Т.к. обмен через подключение к информационной базе недоступно, используем обмен через файловый ресурс. Для облегчения загрузки выгруженной информации, в ИБ приёмнике настраиваем "Автоматический обмен при появлении файла" который в свою очередь запускается через регламентное задание. Как оказалось, регламентное задание отрабатывает, ИБ приёмник не видит файла для загрузки, но при этом — каждую попытку проверки файла создаёт файл выгрузки(для чего??? от меня ускользает). Если внести эти изменения, то ответный файл из ИБ приёмника создастся только после появления файла загрузки. Что на мой взгляд более чем логично.

//88(
    // Добавленный код
//88)
//881(
    // Изменённый код
//881)

Общий модуль — ПроцедурыОбменаДанными

Процедура ВыполнитьОбменПоНастройкеАвтоматическогоОбмена()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//88(
	// Если это Автообмен = ВыполнятьОбменПриПоявленииФайла(РучнойЗапускОбменов = Ложь) и ВыполняемоеДействие = ЗагрузкаДанных,
	// тогда файл после "Чтения изменений" удаляется, после чего ВыполняемоеДействие = ВыгрузкаДанных
	// каждый раз по РегламентномуЗаданию "Записывает изменения", даже если файл не появлялся.
	// Данная переменная проверяет ДоступностьФайлаПриЗагрузкеДанных, и не даёт "Записывать изменения" без "Чтения изменений".
	ДоступностьФайлаПриЗагрузкеДанных = Ложь;
	//88)
	Для Каждого СтрокаТабЧасти Из ОбъектНастройки.НастройкиОбмена Цикл
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			Если ВыполняемоеДействие = Перечисления.ДействиеПриОбмене.ВыгрузкаДанных Тогда
				
				СтруктураНастроекОбмена.Вставить("ПроизводитьЧтениеДанных", Ложь);
				//881СтруктураНастроекОбмена.Вставить("ПроизводитьЗаписьДанных", Истина);
				//88(
				СтруктураНастроекОбмена.Вставить("ПроизводитьЗаписьДанных", ?(Не РучнойЗапускОбменов И Не ПустаяСтрока(ОбъектНастройки.ВыполнятьОбменПриПоявленииФайла), ДоступностьФайлаПриЗагрузкеДанных, Истина));
				//88)
				
			ИначеЕсли ВыполняемоеДействие = Перечисления.ДействиеПриОбмене.ЗагрузкаДанных Тогда
				
				СтруктураНастроекОбмена.Вставить("ПроизводитьЧтениеДанных", Истина);
				СтруктураНастроекОбмена.Вставить("ПроизводитьЗаписьДанных", ЛОЖЬ);
				//88(
				ДоступностьФайлаПриЗагрузкеДанных = СтруктураНастроекОбмена.ДоступностьФайла;
				//88)
				
			Иначе
				
				Продолжить;
				
			КонецЕсли;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
КонецПроцедуры

Для удобства в РС "История обмена данными" в "Информацию о выгрузке данных" будем писать "Недоступен файл для загрузки данных! Обмен отменен.", вместо "В настройке обмена не взведены флаги загрузки и выгрузки данных! Обмен отменен.". Для этого

Функция ВыполнитьДействияПередНачаломОбменаДанными()
/////////////////////////////////////////////////////////////////////////////////////////////////////
	Если НЕ СтруктураНастроекОбменаДанными.ПроизводитьЧтениеДанных 
		И НЕ СтруктураНастроекОбменаДанными.ПроизводитьЗаписьДанных Тогда
			
		//881ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбменаДанными, "В настройке обмена не взведены флаги загрузки и выгрузки данных! Обмен отменен.");
		//88(
		ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбменаДанными, ?(Не СтруктураНастроекОбменаДанными.РучнойРежимЗапуска И Не ПустаяСтрока(СтруктураНастроекОбменаДанными.ВыполнятьОбменПриПоявленииФайла), "Недоступен файл для загрузки данных! Обмен отменен.", "В настройке обмена не взведены флаги загрузки и выгрузки данных! Обмен отменен."));
		//88)
		Возврат Ложь;
			
	КонецЕсли;
/////////////////////////////////////////////////////////////////////////////////////////////////////
КонецФункции

p.s.

Вот и всё, после чего файл выгрузки данных создастся только после появления файла для загрузки. а не каждый раз при проверке появления.

has been added to your cart:
Оформление заказа