СИТУАЦИЯ: В процессе работы с программой «1С:Бухгалтерия предприятия 3.0» пользователи часто сталкиваются с загадочным явлением. В стандартном отчете «Оборотно-сальдовая ведомость» (ОСВ) по счетам, которые никогда не были валютными (например, 60.01 или 62.01 в рублях), внезапно начинают отображаться валютные суммы. При этом в настройках счета признак «Валютный» выключен, а в самой проводке визуально может стоять нулевая валютная сумма, но колонки в отчете все равно присутствуют.
В данной статье мы подробно разберем, почему возникает этот технический сбой, проанализируем внутренние механизмы платформы 1С и рассмотрим пошаговые инструкции по устранению последствий и предотвращению подобных ситуаций в будущем.
Проанализируем техническую сторону вопроса. В платформе 1С:Предприятие 8.3 для регистра бухгалтерии Хозрасчетный существует строгое правило обработки ресурсов. Если у счета в плане счетов не установлен признак Валютный, то в поле Валюта на уровне базы данных (SQL) должно храниться значение NULL.
Проблема возникает в следующие моменты:
Валюта значение ПустаяСсылка вместо NULL.Разберем, почему это важно: отчет «Оборотно-сальдовая ведомость» при построении проверяет наличие значений в поле Валюта. Для платформы NULL — это отсутствие валюты (игнорируем колонку), а ПустаяСсылка — это «какая-то» валюта, просто неопределенная. В результате система считает, что по счету велся валютный учет, и выводит пустые или нулевые колонки в отчет.
Рассмотрим самый простой способ, который помогает визуально исправить отчеты здесь и сейчас. Этот метод заставляет систему принудительно очистить битые ссылки в регистре бухгалтерии.
Порядок действий:
Почему это работает? При снятии признака валютного учета платформа 1С запускает штатный механизм очистки измерений и ресурсов регистра. Она физически проходит по записям и заменяет все некорректные «Пустые ссылки» на правильные значения NULL. Однако помните, что если документов в базе миллионы, эта операция может занять значительное время.
Если проблема повторяется, нам нужно выяснить, какой именно документ или какая обработка создает некорректные записи. Рассмотрим, как это сделать с помощью небольшого запроса. Программист может запустить его в консоли запросов.
Проанализируем структуру запроса:
ВЫБРАТЬ
Хозрасчетный.Регистратор КАК Документ,
Хозрасчетный.Счет КАК Счет,
Хозрасчетный.Период КАК Дата
ИЗ
РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
ГДЕ
Хозрасчетный.Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
И Хозрасчетный.Валюта ЕСТЬ НЕ NULL
И НЕ Хозрасчетный.Счет.Валютный
Этот запрос выведет список регистраторов (документов), которые создали движения по невалютным счетам, но при этом поле Валюта у них заполнено. После того как список документов получен, их необходимо перепровести. При перепроведении типовые механизмы «Бухгалтерии предприятия» сформируют правильные движения без валютной составляющей.
Иногда перепроведение документов в закрытых периодах невозможно из-за требований бухгалтерского учета. В таких случаях разберем вариант использования внешней обработки для исправления регистра без изменения даты запрета редактирования.
Для реализации этого метода можно написать простую обработку, которая будет выполнять следующие действия:
ОбменДанными.Загрузка = Истина (чтобы обойти проверки и не менять итоги).Счет.Валютный = Ложь, то устанавливать Валюта = NULL и ВалютнаяСумма = 0.Посмотрим на пример кода для такой очистки:
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаНужныйДокумент);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
Если НЕ Запись.Счет.Валютный Тогда
Запись.Валюта = Неопределено; // Платформа преобразует это в NULL для данного типа
Запись.ВалютнаяСумма = 0;
КонецЕсли;
КонецЦикла;
НаборЗаписей.ОбменДанными.Загрузка = Истина;
НаборЗаписей.Записать();
Чтобы избежать появления «фантомной валюты» в будущем, рекомендуем придерживаться следующих правил при работе с базой 1С:
ДоговорКонтрагента. Часто ошибка кроется в том, что в договоре не заполнена валюта, и при записи документа система подставляет пустое значение, которое некорректно транслируется в регистр бухгалтерии.Таким образом, мы выяснили, что появление валютной суммы на невалютном счете — это следствие «засорения» регистра бухгалтерии пустыми ссылками вместо значений NULL. Используя предложенные методы — от простого переключения признака счета до программной очистки наборов записей — вы сможете поддерживать чистоту учета и корректность отображения данных в оборотно-сальдовой ведомости.