Почему введенные данные в 1С:Бухгалтерии сбрасываются или теряются при работе с документом «Платежное поручение»?

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

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

Первичная диагностика: с чего начать

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

  1. Проверка кэша пользователя: Мы выяснили, что очистка кэша пользователя может временно помочь, но проблема возвращается через несколько дней. Это является важным сигналом. Однако, очистка кэша остается первым шагом для устранения многих нелогичных проблем в 1С. Поврежденные или устаревшие временные файлы кэша могут вызывать самые разнообразные сбои в работе программы. Для очистки кэша мы можем удалить каталоги кэша, расположенные обычно по путям %LOCALAPPDATA%\1C\1CE\ и %APPDATA%\1C\1CE\. После удаления этих папок (или их содержимого) при следующем запуске 1С кэш будет создан заново.

  2. Проверка аппаратного обеспечения и операционной системы: Мы должны убедиться, что проблема не связана с внешними факторами. Проверьте работоспособность клавиатуры и мыши. Нет ли залипающих клавиш, особенно Esc, которая может отменять ввод? Отключите сторонние утилиты для работы с устройствами ввода или автокликеры. Проанализируйте журнал событий Windows на предмет ошибок, связанных с устройствами ввода, системными сбоями или конфликтами драйверов. В редких случаях переустановка драйверов клавиатуры и мыши может помочь.

  3. Замер производительности 1С: Этот мощный инструмент платформы 1С позволяет нам детально отследить, какие процедуры и функции выполняются в момент возникновения проблемы, а также их длительность. Для этого:

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

Выявление истинной причины: фоновые задания и сервисы проверки контрагентов

В ходе анализа сообщений на форуме и проведения диагностики, мы выяснили, что наиболее вероятной и подтвержденной причиной такого «странного поведения» является автоматическая проверка контрагентов фоновыми заданиями. В конфигурации «1С:Бухгалтерия предприятия 8» (редакция 3.0), а также в других современных конфигурациях, интегрированы сервисы проверки надежности контрагентов, такие как «1С СПАРК Риски» и «Проверка контрагентов с помощью веб-сервиса ФНС».

Разберем механизм работы: при открытии или копировании документа, например, «ПлатежноеПоручение», который содержит ссылку на контрагента, эти фоновые задания запускаются автоматически. Их задача – проверить контрагента по данным ФНС, ЕГРЮЛ, ЕГРИП и другим официальным источникам. После завершения проверки, результаты могут быть отображены на форме документа (например, в виде цветовой индикации рисков). Именно это автоматическое обновление формы документа, вызванное завершением фонового задания, приводит к сбросу несохраненных пользовательских данных в полях или возврату их к первоначальным значениям. Пользователь может находиться в процессе ввода информации, когда форма внезапно «перерисовывается», теряя все незафиксированные изменения.

Этот эффект становится особенно заметным и раздражающим, когда:

Мы видим, что фоновое задание «1С СПАРК риски» запускается при открытии формы и, когда оно заканчивает свою проверку, обновляет данные формы, вызывая потерю введенной информации. Это ключевой момент в понимании проблемы.

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

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

Метод 1: Программное отключение проверки СПАРК в форме документа

Этот метод подходит, если проблема специфична для одного или нескольких документов, и вы не используете функционал «1С СПАРК Риски» или веб-сервис ФНС для этих конкретных документов или не считаете его критически важным для бухгалтерского учета. Мы можем предотвратить автоматическое обновление формы, заблокировав вызов соответствующей функции.

  1. Откройте конфигуратор 1С: Запустите 1С в режиме конфигуратора.

  2. Найдите документ и его форму: В дереве объектов конфигурации перейдите к ветке «Документы», найдите ПлатежноеПоручение и откройте его форму по умолчанию, обычно ФормаДокумента.

  3. Перейдите в модуль формы: В форме документа откройте модуль формы (кнопка «Действия» -> «Модуль объекта» или «Модуль формы», в зависимости от того, где находится код).

  4. Найдите и модифицируйте функцию ПоказатьИнформациюСпарк: На основе информации с форума, причиной является функция ПоказатьИнформациюСпарк(Форма). Нам нужно найти эту функцию в модуле формы и изменить ее таким образом, чтобы она всегда возвращала Ложь. Это предотвратит запуск фоновой проверки и, соответственно, обновление формы, которое приводит к потере данных.

    
    // Пример изменения функции в модуле формы ПлатежноеПоручение.ФормаДокумента
    // Данный код должен быть интегрирован в существующую структуру модуля.
    // Если функция ПоказатьИнформациюСпарк существует, измените ее.
    // Если нет, ищите другой механизм запуска СПАРК или обновления формы.
    
    Функция ПоказатьИнформациюСпарк(Форма) Экспорт
        Возврат Ложь;
    КонецФункции
    

    Важные замечания:

    • Использование расширений: Мы настоятельно рекомендуем использовать расширения конфигурации для внесения подобных изменений. Прямое изменение типовой конфигурации значительно усложняет процесс ее обновления в будущем. В расширении мы можем безопасно переопределить эту функцию или обработчик события, который ее вызывает, без изменения основной конфигурации.
    • Поиск альтернативных механизмов: Если вы не нашли функцию ПоказатьИнформациюСпарк, это означает, что механизм проверки может быть реализован по-другому или иметь другое название. Мы можем использовать «Замер производительности» или отладчик, чтобы точно определить, какой код вызывает обновление формы.

Метод 2: Отключение сервисов проверки контрагентов через настройки конфигурации

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

  1. Отключение «1С СПАРК Риски»:

    1. Откройте 1С:Предприятие в режиме пользователя.
    2. Перейдите в раздел Администрирование (обычно через панель разделов).
    3. Выберите пункт Интернет-поддержка и сервисы.
    4. В этом разделе мы найдем группу настроек, связанных с сервисом «1С СПАРК Риски». Обычно там присутствует опция для включения/отключения автоматической проверки или самого сервиса. Снимите соответствующие флажки или измените настройки, чтобы отключить автоматическую проверку.
  2. Отключение «Проверки контрагентов с помощью веб-сервиса ФНС»:

    1. Откройте 1С:Предприятие в режиме пользователя.
    2. Перейдите в раздел Администрирование.
    3. Выберите пункт Поддержка и обслуживание.
    4. Найдите группу настроек Работа с контрагентами.
    5. Снимите флажок с опции Проверять контрагентов с помощью веб-сервиса ФНС. Этот сервис часто отвечает за подсветку контрагентов в разные цвета в зависимости от их статуса и может вызывать перезагрузку формы.

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

Дополнительные рекомендации

Помимо основных решений, мы рассмотрим несколько общих рекомендаций, которые могут быть полезны для обеспечения стабильной и комфортной работы в 1С:

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

  2. Обновление платформы 1С:Предприятие: Мы всегда рекомендуем использовать актуальные версии платформы 1С:Предприятие. Разработчики постоянно выпускают обновления, которые содержат исправления ошибок, улучшения производительности и новые функции. Вспомним, что в платформе 8.3.22.1709 (которая указана в исходном сообщении) были особенности, связанные с функцией встроенного языка Тип(""), которая могла приводить к ошибкам. Хотя эта конкретная проблема не относится напрямую к нашей ситуации, она подчеркивает важность своевременного обновления платформы.

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

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

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

← На главную