ОбновлениеКонфигурацииПолучено (БСП)

Автор: 1С
ОбщийМодуль.ПолучениеОбновленийПрограммыКлиентСервер
БСП

Обновление конфигурации получено.

Функция ОбновлениеКонфигурацииПолучено(Обновление, Контекст) Экспорт
	
	Если Обновление.Получено Тогда
		
		Возврат Истина;
		
	ИначеЕсли Не ФайлСуществует(Обновление.ПолноеИмяCFUФайлаВКаталогеДистрибутивов, Ложь)
		Или ПустаяСтрока(Обновление.КонтрольнаяСумма) Тогда
		
		Возврат Ложь;
		
	Иначе
		
		// Проверка контрольных сумм.
		#Если Не ТонкийКлиент Тогда
		
		Хеширование = Новый ХешированиеДанных(ХешФункция.MD5);
		Хеширование.ДобавитьФайл(Обновление.ПолноеИмяCFUФайлаВКаталогеДистрибутивов);
		Попытка
			Если Обновление.КонтрольнаяСумма <> Base64Строка(Хеширование.ХешСумма) Тогда
				Возврат Ложь;
			Иначе
				Обновление.Получено = Истина;
				Возврат Истина;
			КонецЕсли;
		Исключение
			ПолучениеОбновленийПрограммыВызовСервера.ЗаписатьОшибкуВЖурналРегистрации(
				ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
			Возврат Ложь;
		КонецПопытки;
		
		#Иначе
		
		Попытка
			
			ПолноеИмяИндексногоФайла = Контекст.КаталогИндексаФайлов + Обновление.ИмяИндексногоФайла;
			Если Не ФайлСуществует(ПолноеИмяИндексногоФайла, Ложь) Тогда
				Возврат ложь;
			КонецЕсли;
			
			ЧтениеТекста = Новый ЧтениеТекста(ПолноеИмяИндексногоФайла);
			ТекСтрока = ЧтениеТекста.ПрочитатьСтроку();
			Если ТекСтрока = Неопределено Тогда
				Возврат Ложь;
			ИначеЕсли ТекСтрока <> Обновление.ПолноеИмяCFUФайлаВКаталогеДистрибутивов Тогда
				Возврат Ложь;
			КонецЕсли;
			
			ТекСтрока = ЧтениеТекста.ПрочитатьСтроку();
			Если ТекСтрока = Неопределено Тогда
				Возврат Ложь;
			ИначеЕсли ТекСтрока <> Обновление.КонтрольнаяСумма Тогда
				Возврат Ложь;
			КонецЕсли;
			
			ОписательФайлаОбновления = Новый Файл(Обновление.ПолноеИмяCFUФайлаВКаталогеДистрибутивов);
			ТекСтрока = ЧтениеТекста.ПрочитатьСтроку();
			Если ТекСтрока = Неопределено Тогда
				Возврат Ложь;
			ИначеЕсли ТекСтрока <> Строка(ОписательФайлаОбновления.Размер()) Тогда
				Возврат Ложь;
			КонецЕсли;
			
			ТекСтрока = ЧтениеТекста.ПрочитатьСтроку();
			Если ТекСтрока = Неопределено Тогда
				Возврат Ложь;
			ИначеЕсли ТекСтрока <> Строка(ОписательФайлаОбновления.ПолучитьУниверсальноеВремяИзменения()) Тогда
				Возврат Ложь;
			КонецЕсли;
			
			ЧтениеТекста.Закрыть();
			Обновление.Получено = Истина;
			Возврат Истина;
			
		Исключение
			ПолучениеОбновленийПрограммыВызовСервера.ЗаписатьОшибкуВЖурналРегистрации(
				ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
			Возврат Ложь;
		КонецПопытки;
		
		#КонецЕсли
		
	КонецЕсли;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

НастройкиОбновленияКонфигурации (БСП)

СохранитьНастройкиОбновленияКонфигурации (БСП)

ОперативноеОбновлениеРазделенныхДанныхКонфигурации (БСП)

СброситьСтатусОбновленияКонфигурации (БСП)

ЗапросыОбновленияРазрешенийКонфигурации (БСП)

УстановитьОбновлениеКонфигурации (БСП)

Синтакс-помощник БСП с нейросетевым ассистентом