Многие пользователи 1С:Управление нашей фирмой (УНФ) столкнулись с неприятной ситуацией после перехода с версии 3.0.9.191 на 3.0.10.143. При попытке создать документ Приходная накладная система ведет себя непредсказуемо: в поле контрагента по умолчанию подставляется «Покупатель» вместо «Поставщика», а в списке доступных операций отображается только «Возврат от покупателя». Выбрать стандартное «Поступление от поставщика» становится невозможно.
В этой статье мы подробно разберем, почему это происходит, проанализируем программный код, вызвавший проблему, и рассмотрим несколько способов исправления ситуации, включая установку патчей и использование расширений, что позволит сохранить конфигурацию типовой.
Проанализируем ситуацию с точки зрения программного кода. В релизе 3.0.10.143 разработчики внесли изменения в логику работы формы документа ПриходнаяНакладная. Проблема кроется в функции ВидДоговораПриСоздании, которая вызывается при инициализации формы. Рассмотрим фрагмент кода, который появился в новом релизе:
&НаСервереБезКонтекста
Функция ВидДоговораПриСоздании(ВидОперации)
Если ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ВозвратОтПокупателя
ИЛИ ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ВыкупленныеКомиссионеромТовары
ИЛИ ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ПриемВПереработку
ИЛИ ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ПриемНаОтветХранение Тогда
Возврат Перечисления.ВидыДоговоров.СПокупателем;
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ПоступлениеОтПоставщика
ИЛИ ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ВозвратОтПереработчика
ИЛИ ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ВозвратСОтветХранения Тогда
Возврат Перечисления.ВидыДоговоров.СПоставщиком;
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ВозвратОтКомиссионера Тогда
Возврат Перечисления.ВидыДоговоров.СКомиссионером;
ИначеЕсли ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ПриемНаКомиссию Тогда
Возврат Перечисления.ВидыДоговоров.СКомитентом;
Иначе
Возврат Перечисления.ВидыДоговоров.СПоставщиком;
КонецЕсли;
КонецФункции
Суть проблемы заключается в том, что в обработчике ПриСозданииНаСервере форма не всегда корректно получает параметр ВидОперации. Если документ создается из общего журнала или через механизм копирования в определенных условиях, параметр остается неопределенным или принимает значение по умолчанию (первое в перечислении). Из-за жесткой проверки условий в начале функции, система ошибочно классифицирует документ как связанный с покупателем, что блокирует дальнейшую работу с поставщиками.
Поскольку данная проблема признана официальным багом релиза 3.0.10.143, компания «1С» выпустила оперативные исправления — патчи. Это самый правильный способ решения для типовых конфигураций, так как он не требует изменения кода вручную и сохраняет поддержку.
Выполним следующие шаги для установки исправления:
EF_00..., связанных с приходной накладной, нажмем кнопку Поиск и установка исправлений.Важно: Патчи исправляют не только визуальное отображение полей «Поставщик/Покупатель», но и восстанавливают корректную работу фильтров в списках договоров.
Если по каким-то причинам автоматическая загрузка патчей недоступна, мы можем создать собственное небольшое расширение. Это позволит переопределить поведение функции ВидДоговораПриСоздании или принудительно устанавливать нужный вид операции при открытии формы.
Рассмотрим, как это реализовать:
ИсправлениеПриходнойНакладной).ПриходнаяНакладная и его форму документа.ПриСозданииНаСервере с типом вызова &После.В коде расширения мы можем принудительно проверить, если вид операции не определен, установить его в значение «Поступление от поставщика»:
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Если Объект.Ссылка.Пустая() И НЕ Параметры.Свойство("ВидОперации") Тогда
Объект.ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ПоступлениеОтПоставщика;
// Вызываем логику обновления интерфейса, если это необходимо
КонецЕсли;
КонецПроцедуры
Наиболее надежным и долгосрочным решением является обновление программы до версии 3.0.10.148 или выше. В этих сборках разработчики полностью пересмотрели механизмы инициализации форм документов. Посмотрим, что изменилось в логике обновленных релизов:
Если вы не можете прямо сейчас установить патч или обновиться, попробуйте изменить способ создания документа. Проанализируем, как ведет себя система при разных сценариях открытия:
Способ 1: Создание из списка закупок. Вместо использования кнопок быстрого создания на рабочем столе или в общем журнале, зайдите напрямую в раздел Закупки — Приходные накладные. Находясь в этом списке, нажмите кнопку «Создать». В этом случае форма списка принудительно передает контекст закупок, и документ чаще открывается с корректной операцией.
Способ 2: Сброс настроек формы. Иногда система «запоминает» неверный выбор. В форме списка документов нажмите кнопку Еще — Установить стандартные настройки. Это может помочь сбросить ошибочные параметры инициализации формы.
Подводя итог, отметим: данная проблема является классическим примером «регрессионной ошибки» при обновлении крупной системы. Мы рекомендуем в первую очередь использовать механизм автоматической установки патчей, так как это штатный инструмент 1С для исправления подобных ситуаций в типовых конфигурациях без привлечения программиста для изменения кода.