Обработка обмена. Оптимизированная запись объектов. Плюсы и минусы
Во всех обработках обмена (УниверсальныйОбменДаннымиXML, ОбменДаннымиXML и КонвертацияОбъектовИнформационныхБаз) есть флаг ОптимизированнаяЗаписьОбъектов.
Просьба описать в первую очередь негативный опыт его использования. Также хотелось бы узнать, в каких случаях был экспериментально подтвержден прирост скорости загрузки данных и насколько?
Просьба описать в первую очередь негативный опыт его использования. Также хотелось бы узнать, в каких случаях был экспериментально подтвержден прирост скорости загрузки данных и насколько?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) tormozit,
Если параметр не стоит получается вот такой код будет выполняться
И дополнительно идет проверка на левые символы, что просто стопорит обмен:
Поэтому эта галка ускорит обмен, если он качественный или убьет его, если левак загнали, и там также написано, что она только для обмена 1с8 с 1с8 и появилась не раньше версии 2.0.18.
Процедура УстановитьАтрибут(Узел, Имя, Значение) Экспорт
СтрокаЗаписи = XMLСтрока(Значение);
Если ВестиДополнительныйКонтрольЗаписиВXML Тогда
ВыполнитьПроверкуНеДопустимыхСимволовВСтроке(СтрокаЗаписи);
КонецЕсли;
Узел.ЗаписатьАтрибут(Имя, СтрокаЗаписи);
КонецПроцедуры // УстановитьАтрибут()
ПоказатьЕсли параметр не стоит получается вот такой код будет выполняться
И дополнительно идет проверка на левые символы, что просто стопорит обмен:
Процедура ВыполнитьПроверкуНеДопустимыхСимволовВСтроке(Стр)
Если ПустаяСтрока(Стр) Тогда
Возврат;
КонецЕсли;
ПозицияНедопустимогоСимвола = НайтиНедопустимыеСимволыXML(Стр);
Если ПозицияНедопустимогоСимвола > 0 Тогда
//СтруктураОшибки = Новый Структура("ОписаниеОшибки,Объект");
//СтруктураОшибки.ОписаниеОшибки = "Найдены недопустимые символы";
//ЗаписатьВПротоколВыполнения("", СтруктураОшибки);
НоваяСтрока = "";
Пока ПозицияНедопустимогоСимвола > 0 Цикл
НоваяСтрока = НоваяСтрока + Лев(Стр, ПозицияНедопустимогоСимвола - 1);
Стр = Сред(Стр, ПозицияНедопустимогоСимвола + 1);
ПозицияНедопустимогоСимвола = НайтиНедопустимыеСимволыXML(Стр);
КонецЦикла;
Стр = НоваяСтрока + Стр;
КонецЕсли;
КонецПроцедуры
ПоказатьПоэтому эта галка ускорит обмен, если он качественный или убьет его, если левак загнали, и там также написано, что она только для обмена 1с8 с 1с8 и появилась не раньше версии 2.0.18.
(3) tormozit, хотя да на вкладке загрузка есть
Тогда да, там немного другой контекст
Т.е. сразу не идет запись объекта:
ОптимизированнаяЗаписьОбъектов
Тогда да, там немного другой контекст
// !!! Если Владелец не установлен, то нужно поле добавить
// в возможные поля поиска, а в событии ПОЛЯПОИСКА указать поля без Владельца, если по нему поиск реально не нужен
Если ЗаписыватьОбъектСразуПослеСоздания Тогда
Если НЕ ОбъектыПоСсылкеЗагружатьБезПометкиУдаления Тогда
Объект.ПометкаУдаления = Истина;
КонецЕсли;
Если ГНпп <> 0
ИЛИ Не ОптимизированнаяЗаписьОбъектов Тогда
ЗаписатьОбъектВИБ(Объект, Тип);
Иначе
// записывать объект сразу не будем, а только запомним что нужно записать
// сохраним эту информацию в специальном стеке объектов для записи
// вернем и новую ссылку и сам объект, хотя он еще не записан
Если НоваяСсылка = Неопределено Тогда
// самостоятельно генерируем новую ссылку
НовыйУникальныйИдентификатор = Новый УникальныйИдентификатор;
НоваяСсылка = Менеджер.ПолучитьСсылку(НовыйУникальныйИдентификатор);
Объект.УстановитьСсылкуНового(НоваяСсылка);
КонецЕсли;
ДополнитьСтекНеЗаписанныхОбъектов(Нпп, ГНпп, Объект, НоваяСсылка, Тип, ПараметрыОбъекта);
Возврат НоваяСсылка;
КонецЕсли;
Иначе
Возврат Неопределено;
КонецЕсли;
ПоказатьТ.е. сразу не идет запись объекта:
Процедура ЗаписатьОбъектВИБ(Объект, Тип)
Попытка
УстановитьОбменДаннымиЗагрузка(Объект);
Объект.Записать();
Исключение
СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеВПротокол(26, ОписаниеОшибки(), Объект, Тип);
Если Не ФлагРежимОтладки Тогда
ВызватьИсключение СтрокаСообщенияОбОшибке;
КонецЕсли;
КонецПопытки;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот