При работе в конфигурации 1С:Розница пользователи периодически сталкиваются с неприятной проблемой: при попытке распечатать ценники из любого документа система прерывает работу и выдает сообщение: Значение не является значением объектного типа (Найти). Давайте подробно проанализируем ситуацию, выясним причину такого поведения программы и по шагам разберем все доступные способы решения этой задачи.
Как правило, проблема начинает проявляться после обновления платформы или конфигурации на последний релиз. Суть ошибки кроется в механизме работы 1С с подключаемым оборудованием. При открытии формы печати ценников система выполняет проверку подключенного оборудования и пытается получить текущее рабочее место пользователя.
Рассмотрим подробнее механизм идентификации: 1С привязывает оборудование не просто к пользователю, а к конкретному компьютеру через уникальный системный идентификатор клиента (ClientID). Программный код выполняет поиск записи в справочнике рабочих мест. Если платформа не находит запись для текущего компьютера, метод поиска возвращает пустое значение. При последующем обращении к этому пустому значению (попытке использовать метод Найти) система закономерно выдает ошибку объектного типа.
Выясним причину, по которой рабочее место может «слететь»:
Прежде чем углубляться в справочники, давайте проверим главную системную константу. Иногда после обновлений могут сбрасываться общие настройки базы. Разберем по шагам:
Если глобальная настройка включена, перейдем к исправлению самой частой причины — отсутствию записи в справочнике для текущего компьютера. Посмотрим на пример решения:
Создание нового рабочего места — это только половина дела. Оборудование (например, принтер этикеток) осталось привязано к старому (неактивному) идентификатору. Проанализируем наши дальнейшие действия:
Иногда ошибка Значение не является значением объектного типа (Найти) возникает не на этапе инициализации оборудования, а на этапе формирования макета через Систему Компоновки Данных (СКД). Это особенно актуально после перехода на новый релиз.
Шаблоны ценников хранят настройки СКД как двоичные данные. При обновлении структуры конфигурации старые шаблоны могут «побиться». Чтобы проверить эту гипотезу, давайте создадим полностью новый, стандартный шаблон ценника и попробуем распечатать документ с ним. Если с новым шаблоном печать проходит успешно, значит проблема локализована — потребуется пересоздать все используемые шаблоны.
Если же вы используете внешнюю печатную форму (которую ранее разрабатывал программист), то проблема кроется в устаревшем коде обработки. В новых версиях Библиотеки стандартных подсистем (БСП) изменились требования к коллекции печатных форм. Внешняя обработка должна корректно инициализировать структуру:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
// ...
// Старый код может не возвращать нужные колонки,
// из-за чего системный метод Найти() не обнаружит нужный макет
Возврат ПараметрыРегистрации;
КонецФункции
В этом случае необходимо обратиться к программисту для адаптации кода внешней печатной формы под требования актуального релиза.
Рассмотрим еще два неочевидных фактора. Если под пользователем с полными правами (Администратор) ошибка не воспроизводится и печать ценников идет нормально, а у обычного продавца система выдает сбой, необходимо проверить права. Пользователю банально может не хватать прав на чтение справочника рабочих мест или настроек торгового оборудования. Добавьте пользователю соответствующий профиль групп доступа.
Наконец, не забывайте про кэш. Часто старые, неработающие идентификаторы «застревают» во временных файлах сеанса на конкретном ПК. Выполним очистку:
Выполнив эти шаги, вы сможете оперативно устранить ошибку Значение не является значением объектного типа (Найти) и восстановить бесперебойную печать ценников и этикеток в вашем магазине.