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