При работе в конфигурации 1С:Управление производственным предприятием (УПП) редакции 1.3 пользователи часто сталкиваются с ситуацией, когда при выборе договора в документе Получение услуг по переработке система выдает критическую ошибку: «При пересчете из валюты '' в валюту 'руб.' обнаружен нулевой курс. Пересчет не произведен». При этом окно «Цены и валюты» оказывается заблокированным или пустым, что не позволяет исправить ситуацию «на лету».
В данной статье мы подробно разберем, почему возникает эта ошибка, как она связана с архитектурой метаданных 1С и какие шаги необходимо предпринять, чтобы восстановить работоспособность документа.
Давайте проанализируем механику работы документа. Когда мы выбираем договор в шапке документа, срабатывает программный обработчик ПриИзменении. Система пытается синхронизировать параметры документа (валюту, тип цен, налоги) с параметрами, указанными в справочнике Договоры контрагентов.
Ошибка возникает в тот момент, когда реквизит ВалютаДокумента остается незаполненным (пустая ссылка), а система пытается выполнить функцию пересчета сумм. В УПП за это отвечает общий модуль РаботаСДиалогами, а именно процедура ВыбратьЦеныИВалюту. Если в цепочке «Договор -> Тип цен -> Валюта» отсутствует хотя бы одно звено, реквизит валюты в документе инициализируется как пустая строка, что и приводит к сообщению о нулевом курсе.
Это основное решение, которое помогает в 90% случаев. Рассмотрим его пошагово:
Типы цен номенклатуры) и проверим, заполнена ли там Валюта. Если в типе цен валюта не указана, система не сможет подтянуть её в документ.После этого вернемся в документ Получение услуг по переработке, полностью очистим поле договора и выберем его заново. Система предложит пересчитать цены в соответствии с новыми условиями — соглашаемся.
Если в договоре все заполнено корректно, но ошибка сохраняется, нам следует проанализировать персональные настройки пользователя, под которым ведется работа. Рассмотрим, как это сделать:
Перейдем в меню Сервис — Настройки пользователя. Нас интересует раздел «Основные значения для подстановки в документы». Проанализируем следующие параметры:
Если настройки ссылаются на удаленные объекты (в списке отображается «Объект не найден»), их нужно перевыбрать или очистить.
Для документа Получение услуг по переработке крайне важно соблюдение условий оформления договора. Разберем ситуацию подробнее:
Во-первых, Вид договора должен быть строго С поставщиком или С переработчиком (в зависимости от конкретной хозяйственной операции). Если вид договора был изменен программно или через групповое изменение реквизитов, штатные механизмы 1С могут отрабатывать некорректно.
Во-вторых, проверим флаг «Расчеты в условных единицах». Рассмотрим алгоритм: если этот флаг установлен, то валюта договора может быть «USD» или «EUR», но оплата производится в рублях. В этом случае система требует наличия курсов обеих валют в справочнике Валюты на дату документа. Если курс не загружен или равен нулю, вылетит обсуждаемая ошибка.
В некоторых случаях форма документа может «кэшировать» ошибочное состояние. Программисту можно посоветовать проверить, как заполняются реквизиты в процедуре ЗаполнитьПоДоговору(). Посмотрим на пример того, как должна выглядеть инициализация параметров:
// Пример логики в модуле документа
Процедура ДоговорКонтрагентаПриИзменении(Элемент)
СтруктураПараметров = РаботаСДиалогами.ПолучитьПараметрыЦенИВалют(ЭтотОбъект);
// Если ВалютаДокумента пустая, принудительно берем из договора
Если Не ЗначениеЗаполнено(ВалютаДокумента) Тогда
ВалютаДокумента = ДоговорКонтрагента.ВалютаВзаиморасчетов;
КонецЕсли;
РаботаСДиалогами.ОбновитьЦеныИВалюту(ЭтотОбъект, СтруктураПараметров);
КонецПроцедуры
Если вы не являетесь программистом, «силовое» решение для пользователя выглядит так: создать новый тип цен (например, «Технический»), в котором жестко прописана валюта «руб.», указать его в договоре и перезаполнить документ. Это принудительно заставит форму переинициализировать структуру цен.
Рассмотрим еще одну ситуацию: права доступа. В УПП 1.3 существует механизм «Дополнительные права пользователей». Проанализируем настройки:
Если эта галочка снята, кнопка «Цены и валюты» может быть неактивна, а при возникновении ошибки пересчета пользователь просто не сможет войти в интерфейс исправления. Убедитесь, что у ответственного сотрудника достаточно прав для изменения валютных параметров документа.
Резюмируем: ошибка «нулевой курс» — это симптом отсутствия связи между документом и справочником валют. Основной путь исправления лежит через проверку Типа цен в Договоре контрагента. Убедитесь, что во всей цепочке справочников указана корректная валюта, и документ «увидит» нужные данные для расчета.