Переход со старых систем автоматизации (таких как «1С:Управление производственным предприятием», редакция 1.3) на современные программные продукты платформы «1С:Предприятие 8.3» (например, «1С:ERP Управление предприятием» или «1С:Комплексная автоматизация», редакции 2.4 и 2.5) часто сопровождается вопросами со стороны бухгалтеров и специалистов казначейства. Один из самых распространенных вопросов касается оформления платежей по импортным или валютным контрактам: почему в документе «Списание безналичных денежных средств» (платежном поручении) отсутствует привычное поле «Курс валюты»?
Проанализируем эту ситуацию с точки зрения методологии разработчиков фирмы «1С», рассмотрим архитектурные особенности современных конфигураций и разберем по шагам практические способы решения этой проблемы в рамках стандартного функционала и с помощью кастомизации системы.
В старой архитектуре «1С:УПП» документ «Платежное поручение исходящее» содержал явные реквизиты курса и кратности валюты непосредственно в форме документа. Пользователь мог вручную указать любой произвольный курс, и система мгновенно пересчитывала рублевую сумму. В «1С:ERP» и «1С:Комплексная автоматизация» логика работы с валютой кардинально изменилась по следующим причинам:
СписаниеБезналичныхДенежныхСредств фиксирует движение денежных средств. Расчет курсовых разниц, оценка задолженности и зачет авансов выполняются автоматически в процессе проведения документов и в рамках процедуры закрытия месяца. Для этого система использует данные периодического регистра сведений КурсыВалют.Тем не менее, на практике часто возникает ситуация: бухгалтер оформляет платежное поручение вручную на основании полученного от валютного поставщика счета. При вводе суммы в валюте рублевая сумма не пересчитывается автоматически, что вызывает неудобства. Выясним, как решать эту задачу стандартными средствами.
Рассмотрим наиболее правильный с точки зрения методологии ERP-систем бизнес-процесс работы с валютными поставщиками. Автоматический расчет рублевого эквивалента происходит без проблем, если соблюдать строгую последовательность ввода документов в программе.
Выполним следующие шаги:
При таком подходе программа автоматически перенесет в платежное поручение обе суммы: и сумму в валюте, и сумму в рублях, рассчитанную по курсу из регистра сведений на дату платежа. Нам не придется считать рублевый эквивалент на калькуляторе или вводить его вручную.
Если мы работаем в современных релизах «1С:Комплексная автоматизация» (начиная с версий 2.5.9 и выше), то в нашем распоряжении есть отличный инструмент гибкой настройки курсов валют непосредственно внутри карточки договора с контрагентом.
Проанализируем настройки договора:
КурсЦБ + 2%. Это очень удобно для работы по договорам в условных единицах с наценкой за конвертацию.Если в договоре заданы правила расчета курса, то при выборе этого договора в документе «Списание безналичных ДС» система сама обратится к алгоритмам договора и корректно рассчитает рублевую сумму на лету.
Для крупных компаний, активно использующих казначейский контур, ручной ввод платежек вообще противопоказан. Рассмотрим, как автоматизировать этот процесс через рабочее место казначея:
Шаг 1. Все менеджеры по закупкам формируют Заявки на расходование ДС в валюте на основе счетов поставщиков.
Шаг 2. Казначей заходит в рабочее место Реестр платежей или Платежный календарь.
Шаг 3. В случае изменения курса валюты перед отправкой реестра в банк казначей использует стандартную команду Переоценить позиции. Система автоматически обращается к актуальным загруженным курсам валют и мгновенно пересчитывает рублевые эквиваленты по всем заявкам, подготовленным к оплате на сегодня.
Шаг 4. На основе утвержденного реестра система автоматически генерирует пакет документов «Списание безналичных ДС» с уже заполненными и выверенными рублевыми суммами.
Если бизнес-процессы компании не предполагают ведение заказов поставщикам, а бухгалтеры категорически отказываются вводить рублевую сумму вручную, мы можем пойти по пути кастомизации системы. Создадим небольшое расширение конфигурации, которое будет пересчитывать рублевую сумму при изменении валютной суммы на клиенте.
Рассмотрим пример кода на встроенном языке 1С, который можно разместить в модуле формы документа ФормаДокумента списания безналичных денежных средств:
&НаКлиенте
Процедура Расш_СуммаВВалютеПриИзмененииПосле(Элемент)
// Вызываем серверный метод для получения курса и расчета рублевой суммы
СтруктураПараметров = ПолучитьПараметрыПересчетаНаСервере(Объект.Ссылка, Объект.Дата, Объект.Валюта);
Если СтруктураПараметров.Курс > 0 Тогда
// Рассчитываем сумму в рублях
Объект.Сумма = Объект.СуммаВВалюте * (СтруктураПараметров.Курс / СтруктураПараметров.Кратность);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьПараметрыПересчетаНаСервере(СсылкаНаДокумент, ДатаДокумента, ВалютаДокумента)
Результат = Новый Структура("Курс, Кратность", 0, 1);
// Обращаемся к менеджеру валют для получения актуального курса на дату платежа
ИнформацияОВалюте = Справочники.Валюты.ПолучитьКурсВалюты(ВалютаДокумента, ДатаДокумента);
Результат.Курс = ИнформацияОВалюте.Курс;
Результат.Кратность = ИнформацияОВалюте.Кратность;
Возврат Результат;
КонецФункции
Данный код перехватывает событие изменения реквизита СуммаВВалюте на форме, получает актуальные данные курса из регистра сведений на дату документа и заполняет основную рублевую сумму (Объект.Сумма). Это решает проблему «маленького калькулятора», о котором упоминалось в обсуждении на форуме.
При оплате поставщику в валюте бухгалтеру важно помнить о требованиях законодательства (в частности, ПБУ 3/2006 «Учет активов и обязательств, стоимость которых выражена в иностранной валюте»):
Подводя итог, отметим: отсутствие поля «Курс» в платежном поручении — это не ошибка программы, а следствие современной архитектуры «1С:Комплексная автоматизация» и «1С:ERP». Наиболее эффективный способ работы — это использование цепочки ввода документов от Заказа до Списания, что гарантирует автоматическое заполнение всех суммовых реквизитов без ручного вмешательства.