Клиент обратился с просьбой исправить ошибку в расширении, которая появилась после обновления.
Нашел проблемную строку кода:
Если Не Отказ И ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Выяснил, что изменилась структура ДополнительныеСвойства, и к РежимуЗаписи теперь можно обратиться так:
Если Не Отказ И ДополнительныеСвойства.ПроведениеДокументов.СвойстваДокумента.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ПроведениеДокументов и СвойстваДокумента это структуры.
Решил, что нужно написать функцию по поиску значения в древовидной структуре ДополнительныеСвойства по ключу "РежимЗаписи", чтобы при последующих обновлениях и возможном изменении структуры ДополнительныеСвойства не возникала ошибка.
Функция ПолучитьЗначениеСтруктурыПоКлючу(Структура, Ключ)
Если Структура.Свойство(Ключ) Тогда
Возврат Структура[Ключ];
Иначе
Для Каждого Элемент Из Структура Цикл
Если ТипЗнч(Элемент.Значение) = Тип("Структура") Или ТипЗнч(Элемент.Значение) = Тип("ФиксированнаяСтруктура") Тогда
Возврат ПолучитьЗначениеСтруктурыПоКлючу(Элемент.Значение, Ключ);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецФункции
Теперь проблемная строка кода выглядит так:
Если Не Отказ И ПолучитьЗначениеСтруктурыПоКлючу(ДополнительныеСвойства, "РежимЗаписи") = РежимЗаписиДокумента.Проведение Тогда
(0) Если работает и не тормозит, то можно считать правильным. Без контекста оценить сложно
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший