При работе в программном продукте «1С:Управление холдингом» редакции 3.0 пользователи могут столкнуться с критической ошибкой при попытке проведения документа Договор. Текст ошибки выглядит пугающе: «При пересчете в валюту сумма 100 000 000 000 000 000 000,00 установлена в нулевое значение, т.к. курс валюты не задан». Самое странное в этой ситуации то, что в справочнике Валюты курсы заполнены актуальными значениями, а валюта в документе указана верно.
Давайте проанализируем ситуацию, выясним причины возникновения этого «числа-гиганта» и разберем по шагам, как устранить проблему.
В конфигурации «1С:Управление холдингом» объект Договор является не просто справочником, а полноценным документом, который генерирует движения по регистрам и формирует графики платежей и начислений. Рассмотрим механизм его работы подробнее.
Когда система проводит договор, она автоматически рассчитывает эквиваленты сумм в валюте регламентированного и управленческого учета на каждую дату планируемого события (платежа или поставки). Ошибка с аномальной суммой (те самые 100 квинтиллионов) часто возникает из-за программного исключения, когда алгоритм пытается найти курс валюты на «пустую» дату (01.01.0001).
Проанализируем, почему это происходит:
Что нужно сделать: Проверьте вкладку «Сроки и условия» или «График расчетов». Убедитесь, что все даты начала и окончания обязательств заполнены корректно. Если вы используете автоматическую генерацию графика, переформируйте его, проверив наличие дат в каждой строке.
Посмотрим на ситуацию, когда валюта договора отличается от валюты регламентированного учета организации. В «1С:УХ» за это отвечают настройки во вкладке Коммерческие условия. Ошибка часто возникает именно у договоров с поставщиками, так как по ним ведется наиболее детальный учет авансов и постоплат.
Выясним причину через настройки:
Рассмотрим решение: В карточке договора убедитесь, что указаны правила пересчета валюты. Если договор предполагает расчеты по курсу на дату оплаты, система должна иметь доступ к актуальному прогнозу курсов или использовать последнее известное значение.
Проанализируем техническую сторону вопроса. В релизе 3.0.3.20 был зафиксирован баг в общем модуле, отвечающем за финансовые расчеты. Система пыталась выполнить пересчет в валюту управленческого учета даже в тех случаях, когда валюта договора полностью совпадала с валютой учета организации.
Из-за ошибки в коде условие проверки совпадения валют работало некорректно, и программа вызывала функцию получения курса с незаполненным параметром Период. Это приводило к обращению к регистру сведений КурсыВалют с пустой датой.
Рекомендация: Как отмечалось в обсуждении, наиболее стабильным решением является обновление конфигурации до версии 3.0.4.4 и выше. Если обновление в данный момент невозможно, потребуется вмешательство программиста для корректировки процедур в общих модулях, отвечающих за расчет графиков.
Если в вашей базе включен функционал контроля лимитов, проведение договора инициирует проверку по бюджетным аналитикам. Выясним, как это влияет на ошибку:
При проведении договора система проверяет, не превышает ли сумма договора остаток по бюджету. Если бюджет (лимит) заведен, например, в рублях, а договор заключается в долларах, 1С должна пересчитать сумму договора в валюту лимита.
Посмотрим на настройки Сценария планирования:
Иногда корень проблемы кроется не в программном коде «Управления холдингом», а в базовых данных справочника Валюты. Разберем ситуацию с кратностью.
Для корректного пересчета 1С использует формулу: (Сумма * Курс) / Кратность. Если при загрузке курсов или ручном вводе параметр Кратность случайно был установлен в значение 0, любая попытка пересчета приведет к математической неопределенности. Платформа 1С в интерфейсе может интерпретировать это как отсутствие курса.
Проанализируем проверку:
Откройте справочник Валюты, перейдите в историю курсов для используемой валюты и убедитесь, что поле Кратность заполнено и не равно нулю (обычно это 1, 10, 100 или 1000).
Подведем итог и составим алгоритм действий для устранения проблемы без обновления конфигурации (если оно недоступно):
Валюта управленческого учета. Если это поле пустое, пересчет может давать сбои.01.01.0001.Использовать график расчетов (если методология учета это позволяет). Если после этого договор проведется — проблема однозначно в заполнении или расчете графика.Соблюдение этих рекомендаций поможет локализовать и устранить ошибку, обеспечив корректное проведение договоров в системе 1С:Управление холдингом.