При начале работы с валютными операциями в конфигурациях 1С:ERP Управление предприятием или 1С:Комплексная автоматизация (КА) пользователи часто сталкиваются с неочевидной проблемой. Казалось бы, валюта заведена, галочки в настройках проставлены, но в Плане счетов бухгалтерского учета отсутствует счет 52 "Валютные счета". Либо он есть в плане счетов, но недоступен для выбора в документах движения денежных средств.
В этой статье мы подробно разберем, как устроена механика видимости счетов в современных конфигурациях 1С, проанализируем программный код, отвечающий за фильтрацию, и рассмотрим пошаговый алгоритм решения этой проблемы.
Первое, что нам необходимо усвоить: в современных решениях на управляемых формах (ERP, КА, УТ) видимость объектов системы (справочников, документов и даже счетов в плане счетов) управляется механизмом Функциональных опций.
Если счет 52 физически отсутствует в общем списке Плана счетов (даже в режиме "Все функции" или "Функции для технического специалиста"), значит, система считает, что валютный учет в базе отключен. Давайте проверим настройки.
Частая ошибка заключается в том, что пользователи включают опцию "Международные реквизиты банковских счетов" или просто добавляют валюту в справочник, считая, что этого достаточно. Однако, для появления счета 52 критически важна другая константа.
Именно эта функциональная опция (в конфигураторе она часто называется ИспользоватьНесколькоВалют) напрямую управляет видимостью предопределенного счета ВалютныеСчета (52) в пользовательском режиме. Если галочка снята, платформа скрывает счет, чтобы не перегружать интерфейс лишней информацией.
Иногда мы сталкиваемся с ситуацией, когда галочка стоит, но счета все равно нет. Это может быть связано с кэшированием параметров функциональных опций на сервере или клиенте.
В этом случае выполним следующие действия:
/ClearCache, чтобы очистить клиентский кэш.Гораздо интереснее ситуация, когда счет 52 есть в Плане счетов, но он не появляется в форме выбора счета при оформлении банковских выписок или кассовых документов. Здесь вступает в силу программная логика фильтрации.
В конфигурации существует механизм, который подбирает доступные счета в зависимости от контекста: типа банковского счета, валюты операции и настроек организации. Рассмотрим фрагмент кода, который отвечает за формирование массива доступных счетов. Эта функция часто вызывает вопросы у разработчиков.
Функция анализирует реквизиты объекта (например, банковского счета или кассы) и решает, какие счета бухгалтерского учета допустимы.
Функция МассивДоступныхСчетовДенежныхСредств(Реквизиты, ДоступныеСчетаУчета)
МассивВозврата = Новый Массив;
Если Реквизиты = Неопределено Тогда
// Если реквизиты не переданы, возвращаем всё, что есть в настройках по умолчанию
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивВозврата, ДоступныеСчетаУчета.СчетаБезналичныхДенежныхСредств);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивВозврата, ДоступныеСчетаУчета.СчетаНаличныхДенежныхСредств);
ИначеЕсли ТипЗнч(Реквизиты.АналитикаДенежныхСредств) = Тип("СправочникСсылка.БанковскиеСчетаОрганизаций") Тогда
// Логика для банковских счетов
Если Реквизиты.ТипБанковскогоСчета = ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Расчетный") Тогда
// ВАЖНЫЙ МОМЕНТ: Проверка заполнения валюты
Если Не ЗначениеЗаполнено(Реквизиты.ВалютаДенежныхСредств) Тогда
// Если валюта явно не заполнена в контексте, добавляем и валютные, и рублевые
МассивВозврата.Добавить(ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.ВалютныеСчета")); // Счет 52
МассивВозврата.Добавить(ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.РасчетныеСчета")); // Счет 51
КонецЕсли;
Иначе
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивВозврата, ДоступныеСчетаУчета.СчетаБезналичныхДенежныхСредств);
КонецЕсли;
ИначеЕсли ТипЗнч(Реквизиты.АналитикаДенежныхСредств) = Тип("СправочникСсылка.Кассы") Тогда
// Логика для касс
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивВозврата, ДоступныеСчетаУчета.СчетаНаличныхДенежныхСредств);
КонецЕсли;
Возврат МассивВозврата;
КонецФункции
Проанализируем этот код. Мы видим, что система проверяет тип банковского счета и наличие валюты. Если настройки противоречивы, счет 52 может просто не попасть в МассивВозврата. Если же типовая логика подстановки счетов вызывает неудобства, можно использовать расширение, позволяющее жестко задать основной банковский счет организации и контрагента, что упростит заполнение документов.
Одна из самых коварных причин, почему система не предлагает 52 счет в документах, кроется не в коде, а в данных. В справочнике Банковские счета организаций есть реквизиты, отвечающие за период действия счета: ДатаОткрытия и ДатаЗакрытия.
Обратим внимание на иконку банковского счета в списке. Если поверх пиктограммы банка отображается маленький красный крестик или значок предупреждения, это сигнал системы:
Часто это происходит при изменении реквизитов банка. Если счет закрыт именно по этой причине, для корректного переноса данных может потребоваться массовая замена банка в расчетных счетах.
Если банковский счет находится в таком "неактивном" состоянии, механизмы 1С:ERP исключают его из доступных для выбора в оперативных документах. Следовательно, если у Организации нет ни одного активного валютного банковского счета, система может скрывать и 52 счет в формах выбора, считая, что проводки по нему невозможны.
Решение:
Если вы исправили даты, а "красный крест" не исчез или счет не появился, попробуйте создать новый банковский счет с корректными реквизитами и валютой. Часто это быстрее, чем искать ошибку в исторически перенесенных данных.
Важно помнить, что в ERP/КА форма выбора счета часто зависит от Хозяйственной операции и Валюты документа.
Если мы оформляем документ "Списание безналичных ДС", и в шапке документа выбрана валюта "Рубли" (RUB), а банковский счет выбран валютный (USD), система выдаст ошибку или не позволит выбрать несоответствующий счет учета. В 1С:ERP жесткий контроль соответствия валюты счета (51 или 52) валюте банковского счета (справочник).
Рассмотрим логическую цепочку проверки:
Если вы не видите счет 52, действуйте по следующему алгоритму:
Следуя этим рекомендациям, вы сможете восстановить корректный валютный учет.