Как исправить ошибку «Поле объекта "ГосударственныйКонтракт.Код" не найдено» при списании ДС и проблему с вводом сайта партнера в 1С:Управление торговлей?

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

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

---

Часть 1. Ошибка «Поле объекта "ГосударственныйКонтракт.Код" не найдено» при списании безналичных ДС

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


Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Неверный второй параметр Реквизиты в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
- Поле объекта "ГосударственныйКонтракт.Код" не найдено
{ОбщийМодуль.ОбщегоНазначения.Модуль(297)}: ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(...)
{EF_00_00299998 Документ.СписаниеБезналичныхДенежныхСредств.МодульОбъекта(133)}: РеквизитыБанковскогоСчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(БанковскийСчет, "ОтдельныйСчетГОЗ, ГосударственныйКонтракт.Код");

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

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

Выясним, почему это произошло в «1С:Управление торговлей». Виновником коллизии является автоматическое исправление (патч) с идентификатором EF_00_00299998. Фирма «1С» использует единую кодовую базу торгового ядра для трех флагманских решений: «1С:ERP Управление предприятием», «1С:Комплексная автоматизация» и «1С:Управление торговлей». Разработанный патч предназначался для исправления логики работы со специальными банковскими счетами в рамках исполнения Гособоронзаказа (ГОЗ). Данный функционал полноценно представлен в ERP и КА, где у справочников банковских счетов присутствует реквизит ГосударственныйКонтракт, ссылающийся на соответствующий справочник контрактов.

Однако в конфигурации «Управление торговлей» полноценный учет ГОЗ и госконтрактов не предусмотрен архитектурно. В результате патч EF_00_00299998, будучи примененным к конфигурации УТ, попытался обратиться к несуществующему в метаданных реквизиту ГосударственныйКонтракт.Код. Это и привело к моментальному отказу системы при проведении платежных документов.

---

Пошаговые методы исправления ошибки списания ДС

Для восстановления штатной работоспособности системы мы можем прибегнуть к нескольким вариантам решения.

Способ 1. Удаление проблемного патча через режим «1С:Предприятие»

Поскольку учет ГОЗ в «1С:Управление торговлей» не используется, удаление данного исправления никак не повлияет на бизнес-логику вашей системы. Выполним следующие шаги:

  1. Запустим программу под учетной записью с правами администратора в режиме 1С:Предприятие.
  2. Перейдем в раздел меню НСИ и администрирование, затем выберем пункт Обслуживание в блоке администрирования.
  3. В открывшейся форме развернем группу параметров Обновление программы и перейдем по гиперссылке Установленные исправления (патчи).
  4. В списке установленных расширений найдем строку с кодом EF_00_00299998.
  5. Выделим эту строку правой кнопкой мыши и нажмем кнопку Удалить (или воспользуемся аналогичной кнопкой на панели управления формы).
  6. Перезапустим сеанс работы с базой данных для применения изменений.

Способ 2. Удаление патча через Конфигуратор

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

  1. Запустим базу данных в режиме Конфигуратор.
  2. В главном меню перейдем в раздел Конфигурация -> Расширения.
  3. В открывшемся списке найдем расширение с именем, содержащим EF_00_00299998.
  4. Выделим его и нажмем клавишу Del (или выберем пункт «Удалить» в контекстном меню). Подтвердим удаление расширения.
  5. Обновим конфигурацию базы данных, нажав клавишу F7 или синюю иконку бочонка на панели инструментов.

Способ 3. Обновление конфигурации до исправленного релиза

Разработчики фирмы «1С» оперативно отреагировали на проблему и исключили несовместимый вызов из кода патча для конфигурации УТ. Проблема полностью нивелирована в последующих официальных релизах. Для исправления ситуации достаточно обновить программу до релиза 11.4.12.61 или более актуального.

---

Часть 2. Проблема с заполнением веб-сайта в карточке партнера

Перейдя на релиз 11.4.12.61 для исправления ошибки списания денежных средств, администраторы часто сталкиваются со следующей проблемой: в карточке любого партнера (справочник Партнеры) поле ввода Сайт перестает реагировать на любые нажатия клавиш клавиатуры. Поле выглядит активным, курсор в него устанавливается, но ввести символы напрямую невозможно — система их игнорирует или моментально стирает.

Разберем техническую причину этой неполадки. Поле «Сайт» является частью подсистемы «Контактная информация», разработанной в рамках Библиотеки Стандартных Подсистем. В релизе 11.4.12.61 был изменен внутренний валидатор ввода текстовой информации на клиенте для объектов с типом контактной информации «Веб-страница».

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

---

Методы решения проблемы с вводом сайта партнера

Рассмотрим, какими путями мы можем решить или временно обойти эту проблему.

Способ 1. Обходной путь через детальное диалоговое окно ввода

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

  1. Откроем карточку целевого партнера в режиме редактирования.
  2. Найдем заблокированное поле Сайт.
  3. В самом конце этого поля нажмем на кнопку выбора (иконка с тремя точками, лупой или зеленым карандашом, в зависимости от темы оформления).
  4. На экране появится модальное окно детального редактирования адреса веб-страницы.
  5. Введем адрес сайта в строку ввода данного модального окна — здесь валидация при наборе отсутствует, и текст запишется корректно.
  6. Нажмем кнопку ОК для переноса данных в основную форму карточки и сохраним изменения в объекте.

Способ 2. Установка исправляющего патча или обновление КИ

Для устранения этой ошибки фирма «1С» выпустила отдельный патч для подсистемы КИ. Рекомендуется проверить наличие доступных автоматических исправлений в разделе НСИ и администрирование -> Обслуживание -> Поиск и установка обновлений/патчей.

Способ 3. Кардинальное решение — обновление на стабильный релиз

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

---

Рекомендации по предотвращению подобных инцидентов

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

← На главную