Почему ресурс ОценкаРуб в 1С 7.7 пустой и как исправить ошибку курса списания аванса

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

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

Назначение ресурса ОценкаРуб и законодательный контекст

Для начала проанализируем, откуда в старой доброй «семерке» появился этот ресурс. Его внедрение в типовые релизы (начиная с 953–955) было продиктовано изменениями в законодательстве, а именно требованиями ПБУ 3/2006 «Учет активов и обязательств, стоимость которых выражена в иностранной валюте».

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

Ранее в 1С 7.7 существовал только ресурс СуммаРуб, который пересчитывался регламентным документом ПереоценкаВалюты. Чтобы отделить «замороженную» сумму аванса от текущей задолженности, разработчики ввели ресурс ОценкаРуб. Он выполняет роль «якоря» для рублевого эквивалента валютной суммы аванса.

Разбор отличий СуммаРуб и ОценкаРуб

Разберем, в чем принципиальная разница между этими двумя ресурсами в регистрах учета взаиморасчетов:

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

Выясним причину ошибки: почему ресурс пустой?

Проанализируем ситуацию, описанную в обсуждении: почему в базе возникают нули и ошибки проведения? Основная причина — некорректное обновление конфигурации. Когда в структуру регистров добавляется новый ресурс, 1С не заполняет его задним числом автоматически во всех исторических записях. Если после обновления не было выполнено полное перепроведение документов, то во всех остатках, перешедших из прошлых периодов, ОценкаРуб будет равна нулю.

Ситуация осложняется, если в организации не принято регулярно восстанавливать последовательность. В этом случае при попытке провести новый документ (например, КорректировкаДолга или Реализация), программа видит, что в регистре числится валютный остаток (например, 100$), а соответствующая ему «Оценка» равна 0. Алгоритм проведения делает проверку:


// Пример упрощенной логики проверки в модуле документа
ОстатокВалюта = Регистр.Покупатели.Остаток(ТекущийКонтрагент, "СуммаВал");
ОстатокОценка = Регистр.Покупатели.Остаток(ТекущийКонтрагент, "ОценкаРуб");

Если (ОстатокВалюта > 0) И (ОстатокОценка == 0) Тогда
    Сообщить("Обнаружен курс списания аванса, отличный от курса принятия...");
    СтатусВозврата(0);
КонецЕсли;

Программа блокирует проведение, так как не может определить рублевую стоимость аванса, которую нужно списать, чтобы закрыть долг «в ноль».

Влияние дублей валют на учет

Как выяснилось в ходе обсуждения, еще одной неочевидной причиной проблем может быть наличие дубликатов в справочнике Валюты. Если в системе созданы две разные валюты с названием «руб.» (одна базовая, а другая — созданная пользователем), программа может начать воспринимать расчеты в «пользовательских рублях» как валютные. В этом случае система будет требовать заполнения ОценкаРуб даже для обычных рублевых договоров.

Для исправления такой ситуации рекомендуется использовать специализированные обработки по поиску и замене дублей, например, repval.ert, которая корректно перебросит ссылки в документах и справочниках на правильную базовую валюту.

Пошаговое решение проблемы

Рассмотрим способы восстановления корректного учета в зависимости от состояния вашей базы данных.

Вариант 1: Восстановление последовательности (рекомендуемый)

Самый правильный с точки зрения методологии 1С способ — это перепроведение документов. Перепроведение заставит алгоритмы типовой конфигурации заново сформировать движения по регистрам, корректно заполнив ресурс ОценкаРуб.

  1. Сделайте архивную копию базы данных (обязательно!).
  2. Определите момент внедрения релиза, в котором появился ресурс (обычно это 2006-2007 годы или момент вашего обновления).
  3. Выполните восстановление последовательности через меню Операции -> Проведение документов.

Вариант 2: Техническая корректировка остатков

Если перепроведение за несколько лет невозможно из-за закрытых периодов или большого объема данных, необходимо заполнить ресурс технически. Для этого можно использовать Универсальный двигатель регистров или написать простую обработку, которая совершит «технический оборот» по регистру.

Логика исправления должна быть следующей: для всех записей, где СуммаВал не равна нулю, а ОценкаРуб равна нулю, нужно дозаписать в ОценкаРуб значение, равное СуммаРуб (на текущий момент или на дату ввода остатков).

Вариант 3: Отключение валютного учета для рублевых договоров

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

Резюме

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

← На главную