В практике работы с 1С:ERP Управление предприятием и 1С:Комплексная автоматизация часто возникает ситуация, когда на этапе внедрения или эксплуатации бухгалтерский счет (например, 76.02 «Счета по претензиям») ошибочно использовался как чисто рублевый. При попытке исправить ситуацию путем включения признака учета «Валютный» в плане счетов пользователи сталкиваются с проблемой: старые проводки не содержат информации о валюте и валютной сумме, хотя в первичных документах эти данные могут присутствовать. Разберем по шагам, как исправить эту ситуацию, проанализируем риски и выберем оптимальный путь решения.
Проанализируем механику работы системы. В 1С признак «Валютный» для счета в плане счетов активирует возможность хранения данных в ресурсе СуммаВалютная и измерении Валюта регистра бухгалтерии. Однако само по себе включение флажка не инициирует пересчет существующих записей. Для системы прошлые операции так и остаются «пустыми» в части валютного измерения. Более того, в 1С:ERP проводки являются производными от оперативного учета (регистров накопления), что накладывает дополнительные ограничения на простые способы исправления.
Если документов слишком много и перепроведение каждого из них вручную невозможно или нежелательно (например, из-за закрытых периодов или риска изменения других показателей), рассмотрим программный метод. Мы можем прочитать набор записей регистра бухгалтерии, программно подставить нужную валюту и сумму, а затем записать набор обратно.
Разберем пример кода для такой обработки:
// Пример алгоритма для исправления проводок
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ХозрасчетныйДвижения.Регистратор КАК Регистратор
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК ХозрасчетныйДвижения
|ГДЕ
| ХозрасчетныйДвижения.СчетДт = &НужныйСчет ИЛИ ХозрасчетныйДвижения.СчетКт = &НужныйСчет";
Запрос.УстановитьПараметр("НужныйСчет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.02"));
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Результат.Регистратор);
Набор.Прочитать();
Для Каждого Запись Из Набор Цикл
// Проверяем, что это наш счет и валюта еще не заполнена
Если Запись.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.02") Тогда
Запись.ВалютаДт = Справочники.Валюты.НайтиПоКоду("840"); // Пример для USD
Запись.ВалютнаяСуммаДт = Запись.Сумма; // Если курс был 1:1 или нужно рассчитать по курсу
КонецЕсли;
Если Запись.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.02") Тогда
Запись.ВалютаКт = Справочники.Валюты.НайтиПоКоду("840");
Запись.ВалютнаяСуммаКт = Запись.Сумма;
КонецЕсли;
КонецЦикла;
// Важно: используем Загрузка = Истина, чтобы обойти проверки
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать();
КонецЦикла;
Важный нюанс: Использование свойства ОбменДанными.Загрузка = Истина позволяет избежать выполнения прикладных алгоритмов при записи, но помните, что это «грубое» вмешательство. Оно решит проблему отображения в ОСВ, но не исправит данные в регистрах оперативного учета.
Проанализируем архитектуру типовых конфигураций. В 1С:ERP принято разделять рублевые и валютные расчеты на разных субсчетах. Например:
Вместо того чтобы менять настройки предопределенного счета 76.02, выясним, не правильнее ли будет перенести задолженность на специализированный валютный счет. В 1С:ERP для этого рекомендуется использовать документ «Корректировка задолженности». С его помощью мы можем списать остаток с «неправильного» счета и принять его на «правильный» (76.22). Это позволит избежать «вскрытия» старых периодов и сохранит чистоту учета.
Выясним причину, по которой перепроведение документов в ERP может не дать результата. В этой конфигурации проводки строятся на основе настроек отражения в регламентированном учете. Если в документах или договорах указано, что валюта взаиморасчетов — рубль, то даже при валютном счете система будет упорно формировать рублевые проводки без заполнения валютных ресурсов.
Рассмотрим порядок действий для корректного перепроведения:
Рассмотрим опасности, которые могут возникнуть после ручной правки проводок или изменения счета:
1. Курсовые разницы: Как только счет становится валютным, регламентная операция «Переоценка валютных средств» начнет анализировать остатки на нем. Если вы проставили валюту в проводках, но не обеспечили корректную привязку к курсам валют на даты документов, при закрытии месяца система может начислить огромные некорректные курсовые разницы.
2. Расхождение регистров: В ERP существует строгий контроль соответствия остатков по регистрам накопления (например, РасчетыСПоставщиками) и регистру бухгалтерии Хозрасчетный. Программная правка только регистра бухгалтерии (Способ №1) приведет к тому, что стандартные отчеты по взаиморасчетам будут показывать рубли, а бухгалтерский баланс — валюту.
Подводя итог, выберем наиболее безопасную стратегию:
Во-первых, если есть возможность, верните настройки счета 76.02 в исходное состояние и используйте предопределенный валютный счет 76.22. Это соответствует методологии 1С и избавит от проблем с обновлением конфигурации в будущем.
Во-вторых, если перепроведение неизбежно, используйте обработку «Групповое изменение реквизитов», чтобы массово актуализировать договоры и валюты в документах, а затем запустите типовой механизм отражения в регламентированном учете.
В-третьих, перед любыми манипуляциями с планом счетов и программной перезаписью обязательно создайте резервную копию базы и протестируйте результат на копии, выполнив процедуру закрытия месяца, чтобы убедиться в корректности расчета курсовых разниц.