Как исправить автоматическое перезатирание наименования банковского счета в 1С:Бухгалтерия 3.0?

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

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

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

Проанализируем ситуацию: почему ручной ввод блокируется?

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

Основная проблема заключается в том, что в проблемных релизах срабатывает обработка событий, которая инициирует обновление поля Наименование еще до того, как объект был записан. Процесс выглядит следующим образом:

  1. Пользователь начинает вводить текст в поле ввода на форме.
  2. Платформа в клиент-серверном режиме обменивается данными с сервером (фоновые процессы или серверные вызовы при изменении связанных реквизитов, таких как НомерСчета или Банк).
  3. Вследствие программной ошибки или специфики работы платформы (например, в линейке 8.3.25 или 8.3.26), система «решает», что данные объекта изменились, и вызывает процедуру автозаполнения наименования.
  4. Эта процедура затирает текущее содержимое поля ввода, возвращая его к стандартному виду.

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

Решение 1: Установка официальных патчей (исправлений)

Первым и самым правильным действием в данной ситуации будет проверка и установка актуальных патчей от фирмы «1С». Поскольку проблема была признана массовой, разработчики выпустили оперативные исправления (так называемые EF-патчи).

Для того чтобы решить проблему этим способом, выполним следующие шаги:

  1. Перейдем в раздел Администрирование — Обслуживание.
  2. Раскроем подраздел Обновление программы.
  3. Выберем пункт Установленные исправления (патчи).
  4. Нажмем кнопку Поиск и установка исправлений (требуется настроенная интернет-поддержка).
  5. В списке доступных исправлений необходимо найти патч, в описании которого упоминается «автонаименование банковского счета» или «ошибка при вводе наименования счета». Обычно он имеет код вида EF_00_XXXXXXXX.

После установки патча необходимо перезапустить сеанс работы с базой данных. Исправление вносит коррективы в логику формы ФормаЭлемента справочника БанковскиеСчета, блокируя автоматическое обновление, если фокус находится в поле ввода.

Решение 2: Обновление технологической платформы

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

Для стабильного решения проблемы рекомендуем выполнить обновление платформы до следующих версий (или более актуальных):

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

Решение 3: Обходной путь («Лайфхак» для быстрой правки)

Если патчи по каким-то причинам недоступны, а работать нужно здесь и сейчас, можно воспользоваться методом «быстрой вставки». Рассмотрим, как обмануть фоновый алгоритм:

  1. Подготовьте нужное название счета в текстовом редакторе или в другом поле 1С.
  2. Скопируйте текст в буфер обмена (Ctrl+C).
  3. Перейдите в карточку банковского счета.
  4. Очистите поле наименования, мгновенно вставьте текст (Ctrl+V) и сразу нажмите клавишу Enter или Tab.

Почему это работает? Перевод фокуса на другое поле заставляет систему зафиксировать значение Наименование и установить внутренний флаг модифицированности данных. В большинстве случаев это позволяет «проскочить» между циклами срабатывания фонового автозаполнения.

Технический комментарий для разработчиков

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


&НаКлиенте
Процедура ПриИзмененииРеквизитаКоторыйВлияетНаНаименование(Команда)
    // Система пытается вычислить новое имя
    Если ПустаяСтрока(Объект.Наименование) Или ЭтоАвтоматическоеНаименование(Объект.Наименование) Тогда
        Объект.Наименование = СформироватьНаименованиеПоШаблону(Объект.НомерСчета, Объект.Валюта);
    КонецЕсли;
КонецПроцедуры

Проблема «агрессивного» поведения заключается в том, что функция ЭтоАвтоматическоеНаименование() может ошибочно возвращать Истина в момент, когда пользователь только начал стирать старое название, или когда платформа инициирует обновление данных формы из-за работы других подсистем (например, при проверке БИК через классификаторы в фоновом режиме).

Резюме: Если вы столкнулись с тем, что 1С «живет своей жизнью» и не дает переименовать счет — в 90% случаев поможет установка актуальных патчей. В остальных 10% случаев потребуется обновление платформы 8.3 до стабильной сборки.

← На главную