При переходе на современную редакцию программы «1С:Бухгалтерия предприятия 3.0» (включая КОРП) многие пользователи и бухгалтеры сталкиваются с неожиданным изменением: привычный и удобный механизм произвольных формул в справочнике «Типовые операции» исчез. В старых версиях (редакции 1.6 и 2.0, работавших на обычных формах) можно было без труда написать алгоритм расчета прямо в пользовательском режиме (например, автоматически вычислять НДС как Сумма * 0.2 или распределять затраты). В новой редакции 3.0 на управляемых формах разработчики упростили этот справочник, убрав вкладку «Алгоритмы».
В этой статье мы подробно разберем, почему было принято такое решение, и проанализируем пять практических способов автоматизации расчетов в типовых операциях БП КОРП 3.0 без снятия конфигурации с поддержки.
С переходом платформы «1С:Предприятие» на управляемые формы (версия 8.3) кардинально изменилась архитектура системы. Теперь выполнение программного кода жестко разделено на клиентскую и серверную части. Произвольный код, который пользователи раньше могли писать прямо в справочниках, выполнялся с помощью динамической компиляции. Это создавало серьезные риски безопасности, замедляло работу системы и часто приводило к критическим ошибкам при обновлении конфигурации.
Методологи фирмы 1С приняли решение отказаться от сложных пользовательских формул в типовых операциях в пользу стандартизации. С точки зрения разработчиков, для любых сложных расчетов в программе должны использоваться специализированные документы, а не ручные проводки. Тем не менее, потребность в автоматизации простых расчетов у бухгалтеров осталась. Рассмотрим, как решить эту задачу современными методами.
Если автоматический расчет формулы нужен вам исключительно для того, чтобы облегчить ручной ввод данных и не считать цифры «на листочке», воспользуйтесь стандартной возможностью платформы 1С.
Рассмотрим этот процесс по шагам:
Сумма).150000*0.2 или 150000/120*20.Этот простой метод не требует привлечения программистов и отлично подходит для разовых или нерегулярных расчетов непосредственно в момент заполнения документа.
Если вам требуется жестко контролировать структуру вводимых данных (например, отдельно фиксировать сумму договора и сумму налога), мы можем настроить шаблон типовой операции через параметры.
Проанализируем этот вариант заполнения:
Сумма_Основная и параметр Сумма_НДС с типом значения «Число».При создании новой операции на основании этого шаблона программа выведет удобную форму помощника, где последовательно запросит ввод значений для каждого параметра. Да, вводить обе суммы придется вручную, но это позволит избежать ошибок ручного заполнения дебета и кредита проводки.
Если вам критически важно, чтобы расчет происходил полностью автоматически (например, при вводе основной суммы НДС рассчитывался строго как 20%), оптимальным решением будет использование механизма расширений.
Расширения позволяют добавлять новый программный код, сохраняя конфигурацию на поддержке и не препятствуя ее автоматическому обновлению. Программист может перехватить процедуру заполнения движений документа при выборе типовой операции.
Рассмотрим пример программного кода, который можно внедрить в расширение:
&После("ЗаполнитьДвиженияПоТиповойОперации")
Процедура Расшир_ЗаполнитьДвиженияПоТиповойОперации(ДокументОбъект, ТиповаяОперация)
// Проверяем, что выбрана наша конкретная типовая операция
Если ТиповаяОперация.Наименование = "Выделение НДС 20%" Тогда
// Перебираем сформированные проводки и пересчитываем суммы
Для Каждого СтрокаПроводки Из ДокументОбъект.Движения.Хозрасчетный Цикл
Если СтрокаПроводки.Сумма <> 0 Тогда
// Рассчитываем НДС по формуле: Сумма * 20 / 120
СтрокаПроводки.Сумма = Окр((СтрокаПроводки.Сумма * 20 / 120), 2);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Этот код перехватывает момент заполнения проводок, находит нужный шаблон и автоматически пересчитывает суммы по заданной формуле. Для пользователя этот процесс происходит мгновенно и незаметно.
Если вы работаете во фреше (1С:Fresh) или у вас нет возможности устанавливать расширения, можно использовать внешнюю обработку заполнения.
Посмотрим, как устроен этот механизм: разработчик создает внешнюю обработку и регистрирует ее в базе через меню «Администрирование» — «Печатные формы, отчеты и обработки». В документе «Операция, введенная вручную» появляется кнопка «Заполнить». Пользователь выбирает эту команду, обработка считывает заполненные данные, применяет заложенные в нее формулы любой сложности и перезаписывает табличную часть документа готовыми проводками.
Если ваши типовые операции содержат сложные формулы, зависящие от множества условий (например, расчет процентов по договорам займа в БП КОРП, распределение накладных расходов по подразделениям или филиалам), лучшим решением будет полный отказ от ручных операций.
Разберем, почему создание собственного документа в расширении гораздо эффективнее типовых операций:
Таким образом, несмотря на то, что прямой ввод формул в шаблоны типовых операций в 1С:Бухгалтерия 3.0 больше не поддерживается, платформа предоставляет обширный арсенал альтернативных инструментов. Для простых задач отлично подойдет встроенный калькулятор или параметры, а для масштабных бизнес-задач — аккуратные доработки через механизм расширений.