При работе в 1С:ERP часто возникает классическая методологическая сложность: сотрудник получает несколько валютных авансов в разное время (например, снимает деньги с корпоративной карты в командировке), а затем отчитывается одним документом Авансовый отчет. Согласно законодательству (ПБУ 3/2006), расходы, оплаченные за счет ранее выданного аванса, должны пересчитываться в рубли по курсу на дату выдачи этого самого аванса. Однако программа по умолчанию может использовать курс на дату документа Авансовый отчет, что приводит к возникновению неверных остатков в регламентированном учете (СуммаРегл) и некорректному признанию курсовых разниц. Проанализируем, как решить эту задачу в 1С:ERP.
Прежде чем переходить к настройкам в программе, вспомним требования учета. В соответствии с ПБУ 3/2006, активы и расходы, которые оплачены организацией в порядке предварительной оплаты (аванса), принимаются к бухгалтерскому учету в оценке в рублях по курсу, действовавшему на дату пересчета в рубли средств выданного аванса. Если авансов было несколько, то при их зачете должен применяться метод FIFO: сначала расходуются средства первого аванса по его курсу, затем — последующих.
В 1С:ERP, в отличие от «1С:Бухгалтерии», механизмы зачета авансов работают сложнее из-за архитектуры регистров накопления. Рассмотрим, почему возникает ситуация, когда валютная сумма закрывается в ноль, а в рублях остается долг за сотрудником или перед ним.
Выясним причину такого поведения системы. Проблема часто кроется в том, что документ Авансовый отчет при проведении ориентируется на свою дату для определения курса валюты в строках расходов. Если система не может автоматически «сопоставить» строку расхода с конкретной выдачей денежных средств, она берет текущий курс из справочника КурсыВалют. Это происходит в следующих случаях:
Списание безналичных денежных средств и Авансовый отчет (например, разные подразделения или направления деятельности).Проанализируем самый эффективный способ решения проблемы, предложенный экспертами. Для того чтобы программа позволила управлять курсами и суммами конвертации, в документе Авансовый отчет необходимо активировать специальный режим.
Разберем по шагам, как это сделать:
Авансовый отчет на закладке Основное найдите поле выбора режима. По умолчанию там может стоять значение «В одной валюте». Нам необходимо выбрать Мультивалютный.Рассмотрим подробнее ситуацию с корпоративными картами. Если сотрудник снимал доллары (USD), а отчитывается также в долларах, но курсы на даты снятия были разные (например, 120 руб. и 64 руб. за доллар), то использование режима «Мультивалютный» позволит системе правильно распределить рублевый эквивалент. Даже если фактической конвертации (обмена одной валюты на другую) не было, этот механизм в ERP используется для того, чтобы «подсказать» системе, какой именно рублевый эквивалент соответствует данной сумме валюты.
Посмотрим на ситуацию с точки зрения автоматики. В современных версиях 1С:ERP (начиная с 2.5) расчеты с подотчетными лицами ведутся в разрезе документов-оснований. Чтобы система сама поняла, по какому курсу списывать рубли, необходимо выполнить следующие условия:
Списание безналичных денежных средств с операцией Выдача денежных средств подотчетному лицу должны быть проведены раньше, чем Авансовый отчет.Закрытие месяца, а именно операцию Актуализация расчетов с подотчетными лицами. Именно в этот момент система пересчитывает СуммаРегл в регистрах по методу FIFO, опираясь на остатки по счету 71.Для программистов и опытных пользователей важно понимать, в каких регистрах происходит фиксация данных. Основным регистром для подотчетников является ДенежныеСредстваУПодотчетныхЛиц. Проанализируем его структуру:
Сумма — сумма в валюте взаиморасчетов (например, USD).СуммаРегл — рублевый эквивалент.Если после проведения документа вы видите, что поле Сумма обнулилось, а СуммаРегл содержит остаток, это означает, что курсовая разница либо не рассчитана, либо рассчитана неверно. Выясним причину: скорее всего, Авансовый отчет сделал движение в регистр по курсу на свою дату, а аванс «висел» по курсу выдачи. Разница между этими курсами должна упасть на доходы или расходы (счет 91), но если зачет аванса не произошел (из-за разной аналитики), то остаток так и останется висеть на 71 счете.
Предположим, у нас есть три снятия наличных по 100 USD. Курсы были 70, 80 и 90 рублей соответственно. Итого выдано 300 USD на сумму 24 000 рублей. Сотрудник приносит отчет на 300 USD. Если дата отчета имеет курс 100 рублей, то без правильной настройки программа запишет расход в 30 000 рублей. Возникнет «мнимый» перерасход в 6 000 рублей.
Для исправления этой ситуации в режиме Мультивалютный мы указываем суммы валют по дням, как шло списание, и фиксируем рублевый эквивалент в таблице конвертации. Рассмотрим, как это выглядит в логике объектов 1С:
// Пример логики, которую реализует система при зачете аванса
// Расчет по методу FIFO
Для Каждого СтрокаРасхода Из АвансовыйОтчет.Расходы Цикл
ОстатокАванса = ПолучитьОстатокПоРегистру(СтрокаРасхода.ПодотчетноеЛицо, СтрокаРасхода.Валюта);
Если ОстатокАванса.Сумма > 0 Тогда
// Система должна подтянуть СуммаРегл из остатков аванса
СуммаКЗачетуРегл = (СтрокаРасхода.СуммаВалюты / ОстатокАванса.Сумма) * ОстатокАванса.СуммаРегл;
КонецЕсли;
КонецЦикла;
Чтобы избежать ошибок в будущем, рекомендуем придерживаться следующего алгоритма:
В заключение отметим, что функционал 1С:ERP в части валютных подотчетников гораздо гибче, чем в 1С:Бухгалтерии, но требует более тщательного подхода к хронологии документов и заполнению аналитики. Использование мультивалютного режима — это штатный и наиболее прозрачный способ добиться корректных остатков по СуммеРегл, соответствующих требованиям законодательства.