Как изменить свойство реквизита Неотрицательное в расширении 1С

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При разработке расширений часто возникает необходимость скорректировать поведение стандартных объектов конфигурации без внесения изменений в основную базу. Одной из таких задач является снятие ограничения на ввод отрицательных чисел для определенных реквизитов. Разберем подробно, как это реализовать, какие существуют технические ограничения и к каким последствиям в учете это может привести.

Техническая возможность изменения свойств в расширении

Рассмотрим основной вопрос: можно ли программно или через визуальный редактор расширения изменить свойство Неотрицательное? Ответ — да, это возможно. Однако здесь существует критически важное условие, касающееся версии платформы 1С:Предприятие. Проанализируем технические требования: возможность расширения свойств метаданных, влияющих на проверку данных, была существенно дополнена в версии 8.3.17.

Если ваша основная конфигурация и расширение имеют режим совместимости ниже 8.3.17, платформа может не позволить изменить это свойство или проигнорировать его в режиме исполнения. Поэтому первым делом проверим настройки режима совместимости в свойствах корня конфигурации и самого расширения. Выясним причину, почему это работает именно так: платформа должна гарантировать, что механизмы расширения метаданных согласованы с ядром системы.

Влияние на структуру базы данных (СУБД)

Многих разработчиков терзают сомнения: не приведет ли снятие флага Неотрицательное к масштабной реструктуризации таблиц базы данных в MS SQL Server или PostgreSQL? Разберем этот момент подробнее. В платформе 1С тип данных Число на уровне СУБД практически всегда создается с поддержкой знака. Свойство Неотрицательное является логическим ограничением, которое накладывает сама платформа 1С при записи объекта или валидации данных в интерфейсе.

Посмотрим на ситуацию с точки зрения физического хранения:

  1. В СУБД поле уже имеет возможность хранить отрицательные значения.
  2. Изменение свойства в расширении лишь «разрешает» платформе передавать отрицательные числа в эти поля.
  3. Реструктуризация таблиц при таком изменении обычно проходит мгновенно и безболезненно для данных.

Настройка интерфейса и элементов форм

Просто снять флаг у реквизита объекта в расширении зачастую недостаточно. Проанализируем, как это влияет на пользовательский интерфейс. Если реквизит выведен на форму, платформа автоматически применяет ограничения к полю ввода. Однако существуют нюансы:

Программные проверки и логика проведения

Выясним, какие подводные камни ждут нас в коде конфигурации. Даже если платформа разрешила ввод отрицательного числа, типовой код (особенно в 1С:Бухгалтерия 3.0) может содержать жесткие проверки. Рассмотрим пример перехвата таких проверок. Часто в модуле объекта в процедуре ПередЗаписью или ОбработкаПроверкиЗаполнения встречаются условия, блокирующие запись отрицательных сумм.

Для обхода таких ограничений мы можем использовать аннотации расширений. Посмотрим на пример кода, который позволяет игнорировать стандартную проверку:


&Вместо("ПроверитьЗаполнениеДокумента")
Процедура Расш1_ПроверитьЗаполнениеДокумента(Отказ)
    // Вызываем стандартную логику, если нужно
    ПродолжитьВызов(Отказ);
    
    // Если стандартная логика установила Отказ из-за отрицательного числа,
    // а мы сознательно это разрешаем для конкретного реквизита:
    Если Отказ Тогда
        // Здесь можно добавить логику анализа сообщений об ошибках
        // и принудительно сбросить флаг Отказ, если причина только в знаке
        Отказ = Ложь; 
    КонецЕсли;
КонецПроцедуры

Важно: Проанализируем алгоритмы проведения. В бухгалтерском учете отрицательные суммы в документах реализации (например, в «Отчете комиссионера») могут привести к некорректному формированию проводок или движений по регистрам накопления. Система может не «понять» отрицательный расход и выдать ошибку при расчете себестоимости или партионного учета.

Методологические альтернативы

Разберем ситуацию, когда изменение свойств реквизита — не самый лучший путь. В типовых решениях 1С (БП, ERP, УТ) для отражения возвратов или корректировок реализации предусмотрены специальные механизмы. Например, в документе «Отчет комиссионера» существует отдельная табличная часть Возвраты. Использование этой вкладки методологически верно, так как она правильно закрывает взаиморасчеты и сторнирует движения.

Если мы все же решим использовать «минусы» в основной табличной части, нам придется столкнуться со следующими сложностями:

  1. НДС: Проверьте, как формируются записи в книгу покупок и книгу продаж. Отрицательная сумма в реализации может быть не воспринята регламентными операциями.
  2. Связанные документы: Выясним, как ведут себя подчиненные документы. Например, «Счет-фактура выданный», созданный на основании «минусового» отчета, может просто не заполниться или выдать ошибку при печати.
  3. Обновление: При каждом обновлении типовой конфигурации 1С может менять логику проведения. Наше расширение, снимающее запрет, может стать причиной «тихих» ошибок в учете, которые всплывут только при закрытии года.

Итоги и рекомендации

Подводя итог, можно сказать: технически снять флаг Неотрицательное через расширение несложно. Однако это лишь верхушка айсберга. Проанализируем последовательность действий для безопасного внедрения:

Рассмотрев все риски, мы рекомендуем сначала убедиться, что бизнес-задачу нельзя решить штатными средствами (вкладки «Возвраты», документы «Корректировка реализации» или «Сторно»). Если же использование отрицательных чисел неизбежно, делайте это максимально аккуратно, сопровождая изменения комментариями в коде расширения.

← На главную