При переходе на платформу 1С:Предприятие версий 8.3.26 и 8.3.27 разработчики могут столкнуться с ситуацией, когда новые возможности платформы не видны в дереве Синтаксис-помощника. В частности, для наборов записей регистров может отсутствовать свойство РасширенныеРежимыЗамещения, хотя в коде платформы оно поддерживается. Разберем по шагам причины такого поведения конфигуратора, способы настройки отображения справки, а также особенности применения этого свойства на практике.
Синтаксис-помощник в конфигураторе 1С по умолчанию фильтрует дерево объектов в зависимости от текущего режима совместимости открытой конфигурации. Проанализируем, почему это происходит:
Рассмотрим способы, с помощью которых можно вернуть отображение новых объектов и свойств в Синтаксис-помощнике:
РежимСовместимости на значение «Не использовать» или версию не ниже «Версия 8.3.26». После этого дерево Синтаксис-помощника автоматически обновит состав доступных свойств.Проанализируем работу самого свойства РасширенныеРежимыЗамещения. В первых редакциях документации для версий 8.3.26 и 8.3.27 присутствовала неточность: в Синтаксис-помощнике было указано, что свойство доступно только для чтения. На практике это свойство имеет доступ «Чтение и запись» и тип Булево.
По умолчанию свойство имеет значение Ложь. Чтобы активировать расширенные режимы, его необходимо явно взвести в программном коде:
НаборЗаписей = РегистрыНакопления.Взаиморасчеты.СоздатьНаборЗаписей();
НаборЗаписей.РасширенныеРежимыЗамещения = Истина;
Рассмотрим подробнее, зачем используется свойство РасширенныеРежимыЗамещения:
НомерСтроки для подчиненных регистратору регистров (регистры накопления, подчиненные регистры сведений). Это позволяет выполнять точечное обновление существующих записей по их исходным номерам.НаборЗаписей.Отбор.Сбросить(), что дает возможность массово обновлять или удалять записи сразу по нескольким регистраторам без необходимости поэлементной перезаписи каждого набора. Это критично для оптимизации длительных процедур, таких как пересчет последовательностей или регламентное закрытие месяца.При использовании расширенных режимов замещения важно учитывать архитектурные ограничения платформы:
РежимЗамещения.Обновление и РежимЗамещения.Удаление. Режим РежимЗамещения.Слияние для подчиненных регистров не поддерживается платформой (он применяется только для независимых регистров сведений).Обновление и Удаление реквизит НомерСтроки должен быть заполнен для каждой строки набора, а дублирование номеров в пределах одного регистратора недопустимо. Если же используется режим Добавление (или значение Ложь), номера строк генерируются платформой автоматически.Если проект вынужденно сохраняет режим совместимости ниже 8.3.26, оптимизация через свойство РасширенныеРежимыЗамещения недоступна. В таком случае применяем стандартные алгоритмы:
Истина.Ложь в метод Записать() с обязательным контролем возможных дублей на уровне прикладного кода.