Как отключить предупреждение при изменении номера документа в интерфейсе Такси

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

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

Почему появляется это предупреждение?

Для начала проанализируем ситуацию с точки зрения логики платформы. 1С использует механизмы автоматической генерации номеров и кодов. Когда пользователь начинает изменять номер, система «пугается», что ручной ввод нарушит последовательность или логику префиксов. В интерфейсе «Такси» разработчики 1С решили жестко закрепить это предупреждение на уровне платформенных механизмов управляемых форм. Это защита «от дурака», призванная предотвратить случайные ошибки, которые могут привести к сбою автонумерации (например, возникновению ошибки «Номер не уникален» при создании следующего документа).

Однако существуют ситуации, когда это предупреждение избыточно. Рассмотрим способы его обхода.

Способ 1. Использование свойства «Отображение предупреждения при редактировании»

Самый простой и правильный путь с точки зрения проектирования интерфейса — это изменение свойств самого элемента формы. Разберем по шагам, как это работает:

  1. Откроем форму нужного документа в конфигураторе (или создадим расширение, что более предпочтительно).
  2. Найдем в списке элементов формы поле Номер.
  3. В палитре свойств найдем строку ОтображениеПредупрежденияПриРедактировании (в англоязычном варианте WarningOnEdit).

Это свойство может принимать три значения, которые мы сейчас детально изучим:

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

Способ 2. Программное отключение через расширение

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

Нам необходимо перехватить событие ПриСозданииНаСервере. Рассмотрим пример кода, который нужно поместить в модуль формы расширения:


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Обращаемся напрямую к элементу формы "Номер"
    Элементы.Номер.ОтображениеПредупрежденияПриРедактировании = ОтображениеПредупрежденияПриРедактировании.Никогда;
КонецПроцедуры

Этот метод хорош тем, что он срабатывает динамически. Мы можем даже добавить условие, чтобы предупреждение отключалось только для определенных ролей (например, только для «Главного бухгалтера»), а обычные пользователи продолжали видеть предупреждение, чтобы не нарушать порядок в базе.

Способ 3. Массовое отключение для всех документов

Бывают задачи, когда нужно убрать это «раздражающее» окно сразу во всей системе. Чтобы не заходить в каждую форму вручную, мы можем реализовать общий алгоритм. Разберем ситуацию, когда у нас есть общий модуль, отвечающий за модификацию форм при создании.

В общем модуле с установленными флагами Сервер и Привилегированный (или вызываемом из контекста формы) можно использовать следующий подход:


Процедура ОтключитьПредупреждениеДляНомера(Форма) Экспорт
    ЭлементНомер = Форма.Элементы.Найти("Номер");
    Если ЭлементНомер <> Неопределено Тогда
        ЭлементНомер.ОтображениеПредупрежденияПриРедактировании = ОтображениеПредупрежденияПриРедактировании.Никогда;
    КонецЕсли;
КонецПроцедуры

Такой подход позволяет централизованно управлять поведением интерфейса «Такси» во всей конфигурации.

Альтернатива: Групповое изменение реквизитов

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

В типовых конфигурациях (БП 3.0, ERP, УТ 11) существует обработка «Групповое изменение реквизитов». При ее использовании запись объектов происходит программно на уровне сервера. Интерфейсные механизмы формы, включая «Такси» и его вопросы, при этом не задействуются. Это позволяет изменить номера массово, быстро и без лишних диалогов.

Важное предостережение и риски

Рассмотрим подробнее, почему 1С так настойчиво выводит это окно. При ручном изменении номера крайне важно соблюдать структуру префиксов. Если в конфигурации настроена автоматическая нумерация, 1С ищет последний записанный номер, выделяет в нем числовую часть и инкрементирует ее (прибавляет 1).

Что произойдет, если пользователь введет номер неправильно:

  1. Если изменить длину номера или добавить символы в конец, механизм автонумерации может перестать находить «следующий» свободный номер.
  2. Если вручную установить номер 999, когда текущий был 100, следующий автоматически созданный документ попытается получить номер 1000. Если длина поля номера ограничена (например, 3 знака), возникнет критическая ошибка переполнения или неуникальности.
  3. Изменение префикса приведет к тому, что система начнет новую ветку нумерации для этого префикса.

Подытожим: Отключение предупреждения в интерфейсе «Такси» — задача технически несложная и решается через свойство ОтображениеПредупрежденияПриРедактировании. Однако, внедряя такое решение, мы берем на себя ответственность за возможные ошибки пользователей в нумерации. Рекомендуется сочетать это изменение с дополнительными проверками в процедуре ПередЗаписью или предоставлять доступ к этой возможности только опытным сотрудникам.

← На главную