Обработка обмена. Оптимизированная запись объектов. Плюсы и минусы

1. tormozit 7214 15.01.16 09:23 Сейчас в теме
Во всех обработках обмена (УниверсальныйОбменДаннымиXML, ОбменДаннымиXML и КонвертацияОбъектовИнформационныхБаз) есть флаг ОптимизированнаяЗаписьОбъектов.
Просьба описать в первую очередь негативный опыт его использования. Также хотелось бы узнать, в каких случаях был экспериментально подтвержден прирост скорости загрузки данных и насколько?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1539 15.01.16 09:52 Сейчас в теме
(1) tormozit,
Процедура УстановитьАтрибут(Узел, Имя, Значение) Экспорт

	СтрокаЗаписи = XMLСтрока(Значение);
	
	Если ВестиДополнительныйКонтрольЗаписиВXML Тогда
		
		ВыполнитьПроверкуНеДопустимыхСимволовВСтроке(СтрокаЗаписи);	
		
	КонецЕсли;	
	
	Узел.ЗаписатьАтрибут(Имя, СтрокаЗаписи);
	
КонецПроцедуры // УстановитьАтрибут()
Показать

Если параметр не стоит получается вот такой код будет выполняться
И дополнительно идет проверка на левые символы, что просто стопорит обмен:
Процедура ВыполнитьПроверкуНеДопустимыхСимволовВСтроке(Стр)
	
	Если ПустаяСтрока(Стр) Тогда
		Возврат;
	КонецЕсли;
		
	ПозицияНедопустимогоСимвола = НайтиНедопустимыеСимволыXML(Стр);	
		
	Если ПозицияНедопустимогоСимвола > 0 Тогда
		
		//СтруктураОшибки = Новый Структура("ОписаниеОшибки,Объект");
		//СтруктураОшибки.ОписаниеОшибки = "Найдены недопустимые символы";
		//ЗаписатьВПротоколВыполнения("", СтруктураОшибки);
		
		НоваяСтрока = "";
		Пока ПозицияНедопустимогоСимвола > 0 Цикл
			НоваяСтрока = НоваяСтрока + Лев(Стр, ПозицияНедопустимогоСимвола - 1);
			Стр = Сред(Стр, ПозицияНедопустимогоСимвола + 1);
			ПозицияНедопустимогоСимвола = НайтиНедопустимыеСимволыXML(Стр);	
		КонецЦикла;
		Стр = НоваяСтрока + Стр;
		
	КонецЕсли;
	
КонецПроцедуры
Показать


Поэтому эта галка ускорит обмен, если он качественный или убьет его, если левак загнали, и там также написано, что она только для обмена 1с8 с 1с8 и появилась не раньше версии 2.0.18.
3. tormozit 7214 15.01.16 09:57 Сейчас в теме
(2) Мне кажется ты перепутал ВестиДополнительныйКонтрольЗаписиВXML и ОптимизированнаяЗаписьОбъектов.
4. Xershi 1539 15.01.16 10:02 Сейчас в теме
(3) tormozit,
Использовать оптимизированный формат для обмена данными (V8 - V8, версия обработки не ниже 2.0.18)
5. Xershi 1539 15.01.16 10:08 Сейчас в теме
(3) tormozit, хотя да на вкладке загрузка есть
ОптимизированнаяЗаписьОбъектов

Тогда да, там немного другой контекст
//	!!! Если Владелец не установлен, то нужно поле добавить
	// в возможные поля поиска, а в событии ПОЛЯПОИСКА указать поля без Владельца, если по нему поиск реально не нужен
	
	Если ЗаписыватьОбъектСразуПослеСоздания Тогда
		
		Если НЕ ОбъектыПоСсылкеЗагружатьБезПометкиУдаления Тогда
			Объект.ПометкаУдаления = Истина;
		КонецЕсли;
		
		Если ГНпп <> 0
			ИЛИ Не ОптимизированнаяЗаписьОбъектов Тогда
		
			ЗаписатьОбъектВИБ(Объект, Тип);
			
		Иначе
			
			// записывать объект сразу не будем, а только запомним что нужно записать
			// сохраним эту информацию в специальном стеке объектов для записи
			// вернем и новую ссылку и сам объект, хотя он еще не записан
			Если НоваяСсылка = Неопределено Тогда
				
				// самостоятельно генерируем новую ссылку
				НовыйУникальныйИдентификатор = Новый УникальныйИдентификатор;
				НоваяСсылка = Менеджер.ПолучитьСсылку(НовыйУникальныйИдентификатор);
				Объект.УстановитьСсылкуНового(НоваяСсылка);
				
			КонецЕсли;			
			
			ДополнитьСтекНеЗаписанныхОбъектов(Нпп, ГНпп, Объект, НоваяСсылка, Тип, ПараметрыОбъекта);
			
			Возврат НоваяСсылка;
			
		КонецЕсли;
		
	Иначе
		
		Возврат Неопределено;
		
	КонецЕсли;
Показать

Т.е. сразу не идет запись объекта:
Процедура ЗаписатьОбъектВИБ(Объект, Тип)
		
	Попытка
		
		УстановитьОбменДаннымиЗагрузка(Объект);
		Объект.Записать();
		
	Исключение
		
		СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеВПротокол(26, ОписаниеОшибки(), Объект, Тип);
		
		Если Не ФлагРежимОтладки Тогда
			ВызватьИсключение СтрокаСообщенияОбОшибке;
		КонецЕсли;
		
	КонецПопытки;
	
КонецПроцедуры
Показать
6. Xershi 1539 15.01.16 10:12 Сейчас в теме
Так что судя по коду в одном случае это косвенно может оптимизировать загрузку. А без галки могут быть косяки.
8. tormozit 7214 15.01.16 10:45 Сейчас в теме
(6)
А без галки могут быть косяки
Ошибаешься. Косяки как раз будут с галкой.
9. Xershi 1539 15.01.16 10:55 Сейчас в теме
(8) tormozit, под косяком что подразумевается?
7. Xershi 1539 15.01.16 10:21 Сейчас в теме
Т.е. если выгрузка чистая, то без этой галки, должно быть быстрее, т.к. пул буфера будем меньше, а будет идти сразу загрузка, а вот если будет грязная выгрузка, то эта галка не запишет данные, пока не будут все объекты в пуле, что не даст обмену записать не до конца объекты.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот