При внедрении и эксплуатации систем класса ERP (1С:ERP, 1С:Комплексная автоматизация) специалисты часто сталкиваются с вопросом выбора метода расчета себестоимости. Одним из наиболее дискуссионных моментов является использование платформенного механизма решения систем линейных уравнений (СЛАУ). Давайте разберем, что это за механизм, почему подрядчики иногда настаивают на его отключении и в каких ситуациях это действительно оправдано.
В современных конфигурациях 1С расчет себестоимости — это не просто последовательное списание затрат. Когда на предприятии существуют встречные выпуски (цех А оказал услугу цеху Б, а цех Б — цеху А) или сложные цепочки распределения затрат, возникают циклы. Математически такая задача описывается системой линейных уравнений. Решить её можно двумя принципиально разными способами, доступными в настройках 1С:ERP.
РасчетСистемЛинейныхУравнений (появился в версии 8.3.14). Он реализован на низкоуровневом языке C++, что теоретически дает огромный прирост производительности.Рассмотрим подробнее ситуации, когда использование «быстрого» платформенного метода может привести к проблемам, заставляя специалистов возвращаться к старому коду конфигурации.
1. Чувствительность к «грязным» данным
Платформенный механизм использует прямые методы решения (например, метод Гаусса). Эти методы математически строгие. Если в ваших данных есть логические ошибки (например, встречные услуги образуют «мертвую петлю» с нулевой базой распределения или возникли отрицательные остатки), платформенный механизм может просто выдать ошибку: «Система уравнений не имеет решения» или «Деление на ноль».
В то же время старый итерационный метод в коде 1С часто «проглатывает» такие неточности. Он делает заданное количество итераций и останавливается, выдавая результат с небольшой погрешностью. Для бухгалтерии это часто предпочтительнее, чем полная остановка закрытия месяца.
2. Точность и копеечные разницы
Проанализируем ситуацию с округлениями. Платформенный механизм производит вычисления с очень высокой точностью. Однако при попытке записать полученные результаты обратно в регистры 1С (где точность ресурсов часто ограничена 2-3 знаками после запятой), могут возникать расхождения. В некоторых релизах ERP и платформы наблюдались ситуации, когда после работы СЛАУ на остатках «зависали» копейки, которые не удавалось распределить автоматически.
3. Проблемы конкретных версий платформы
Как и любой сложный инструмент, объект РасчетСистемЛинейныхУравнений проходил стадию «детских болезней». Выясним причины технических сбоев: на ранних версиях платформы (8.3.14 – 8.3.16) при очень больших матрицах (десятки тысяч уравнений) процесс rphost мог аварийно завершаться из-за нехватки памяти или внутренних ошибок C++. Если вы используете старую платформу, отключение этого механизма — единственный способ завершить расчет.
Важно понимать, что «отключить СЛАУ» в ERP невозможно в принципе, так как без решения уравнений себестоимость со встречными выпусками не посчитать. Речь идет именно об отключении платформенного способа решения. Посмотрим, как это выглядит в коде конфигурации (утрированно):
// В процедурах закрытия месяца ERP анализируется настройка:
Если ИспользоватьПлатформенныйМеханизмСЛАУ Тогда
// Вызов объекта платформы:
Решение = РасчетСистемЛинейныхУравнений.Решить(МатрицаКоэффициентов, ВекторСвободныхЧленов);
Иначе
// Использование старого медленного кода на 1С:
Решение = ВыполнитьИтерационныйРасчетНаЯзыке1С(Данные);
КонецЕсли;
Таким образом, отключая настройку, вы просто выбираете другой программный алгоритм. Процедура РасчитатьСебетоимость все равно будет выполняться, но по другим правилам.
Выясним, когда же стоит прислушаться к подрядчику и изменить настройки:
Мы проанализировали ситуацию и можем сделать вывод: подрядчик предлагает отключить платформенный механизм, скорее всего, из-за специфики ваших данных или для обеспечения «проходимости» закрытия месяца при наличии методологических ошибок. Это легитимный инструмент настройки системы. Попробуйте выполнить расчет в копии базы с обоими вариантами настроек и сравните время выполнения и итоговые цифры в отчете «Анализ себестоимости товаров».