При выполнении операции закрытия месяца "Распределение затрат и расчет себестоимости" произошла ошибка: Переполнение стека встроенного языка на сервере

10.02.22

Задачи пользователя - Закрытие периода

Описание решения проблемы переполнения стека при выполнении операции закрытия месяца "Распределение затрат и расчет себестоимости" в 1С:ERP Управление предприятием, редакция 2.4.13.123.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
РассчитатьПартиюРекурсивно
.bsl 29,76Kb
9 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Столкнулись с проблемой, когда при распределении затрат и расчете себестоимости при закрытии месяца (1С:ERP Управление предприятием, редакция 2.4.13.123) получили ошибку "Переполнение стека встроенного языка на сервере". Мы воспользовались встроенным ограничителем (в настройках формы закрытия месяца) для рекурсивных функции и экспериментально выяснили, что для избежания этой ошибки значение по умолчанию 650 надо уменьшить до 430, тогда ошибка уходит, но и затраты полностью не распределяются. Проблема не решена.

Анализ работы алгоритма и данных, показал, что проблема не в циклических ссылках (в штатном алгоритме заложена проверка на циклические ссылки), а просто очень большой список документов для распределения, где-то порядка 1300+, а штатный алгоритм на каждый шаг для распределения вызывает рекурсивно сам себя и чтобы полностью распределить все затраты, понадобилась бы глубина рекурсии 1300+ соответственно.

Т.к. проблема была не в данных, а в самом алгоритме, было принято решение переписать рекурсию в итерацию, а переменные контекста хранить в массиве, размер которого уже ограничивается только доступной оперативной памятью компьютера, а не размером callstack.

Привожу получившийся результат:

 
 Измененная функция РасчетСебестоимостиПрикладныеАлгоритмы.РассчитатьПартиюРекурсивно

После применения измененного алгоритма затраты распределились и себестоимость рассчиталась. Ограничение на количество шагов из алгоритма удалять не стал, поэтому ограничение в настройках выставили в 2000.

Для использования этого алгоритма, надо просто заменить исходную процедуру РасчетСебестоимостиПрикладныеАлгоритмы.РассчитатьПартиюРекурсивно на указанный выше код и увеличить ограничение на количество вызовов в настройках закрытия месяца.

На этом все. Надеюсь, это будет полезно еще кому-нибудь.

Вступайте в нашу телеграмм-группу Инфостарт

Переполнение стека расчет себестоимости

См. также

Анализ учета Закрытие периода НДС 22% Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Налог на прибыль НДС Платные (руб)

Каждый бухгалтер не раз сталкивался с требованием от налоговой инспекции пояснить расхождения в показателях декларации по Налогу на прибыль («Доходы от реализации» + «Внереализационные доходы») и налоговой базой по НДС за год. Являются ли ошибкой подобные расхождения? Как пояснить налоговой их причину? Отчет «Анализ расхождений выручки НДС и Налога на прибыль в декларациях» для 1С (БП 3.0 ПРОФ и КОРП, КА 2, ЕRP) поможет найти все расхождения.

11691 руб.

21.10.2017    101457    445    185    

371

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14640 руб.

29.04.2020    51328    141    162    

96

Регламентированный учет и отчетность Операции по ВЭД Закрытие периода Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет НДС Платные (руб)

Расширение для заполнения реестров НДС в 1С:Бухгалтерии предприятия 3.0. Реестр по НДС: КНД 1155112, КНД 1155113, КНД 1155114, КНД 1155115.

14640 руб.

01.08.2025    5618    24    3    

23

Учет доходов и расходов Закрытие периода Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Решение регламентирует учет доходов будущих периодов (ДБП) в организации: сохраняет подробную информацию о объекте ДБП. По окончании месяца на основе введенной информации формируются проводки списания ДБП, отчеты для бухгалтерского и налогового учета. Подходит как для различных версий Бухгалтерии 8.3, так и для ERP и КА.

5500 руб.

09.10.2020    24024    69    24    

62

Закрытие периода Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

В современных конфигурациях УТ 11, КА 2, ERP 2 и их аналогах присутствует механизм закрытия периода. Но при ошибках учета закрыть период корректно становится практически невозможно! Давайте попробуем разобраться, как можно устранить ошибки и закрыть корректно месяц!

28466 руб.

20.03.2018    86808    295    79    

319

Закрытие периода Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Закрытие месяца в конфигурации 1С:Управлении нашей фирмой — это очень важная задача, которую необходимо выполнять на постоянной основе. Однако, как зачастую бывает, важные и регулярные задачи могут быть упущены из виду. В связи с этим, нами было разработано решение для автоматического закрытия месяца в 1С:УНФ для оптимизации данного процесса.

5084 руб.

30.09.2022    10687    26    1    

26

Корректировка данных Закрытие периода Мастера заполнения Программист Бизнес-аналитик Бухгалтер Пользователь 1С 8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 1С:УНФ Платные (руб)

Оптимизируйте процесс закрытия периодов. Автоматизируйте любые, даже самые сложные правила переноса и выполните инвентаризацию остатков за минуты. Гибкая обработка для 1С, которая работает как самостоятельный модуль — без привязки к БСП и с поддержкой большинства конфигураций. Ваш идеальный помощник для закрытия периода, исправления ошибок, реорганизации учета, корректировки и списания остатков.

6100 руб.

28.01.2026    1522    5    0    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SkorikA 83 23.01.23 16:31 Сейчас в теме
1С:ERP релиз 2.5.8.378 столкнулся с такой же проблемой.
(shsa) не подскажете, данный вариант решения все еще актуален? Я понимаю что код из статьи уже нет, но сам вариант решения с уходом от рекурсии в сторону итераций?
A.Belash; +1 Ответить
2. anna_kr 02.03.23 10:14 Сейчас в теме
(1) Добрый день! удалось вам решить проблему на релизе 2.5.8.378?
3. SkorikA 83 03.03.23 04:58 Сейчас в теме
(2) Добрый день! Проблема решилась. В моём случае она была в исходных данных. Решал иначе: сначала уменьшил максимальную длину цепочки - для того чтобы при расчете корректно фиксировалась ошибка ("превышена максимальная длина цепочки..", а не переполнение стека с прекращением расчета). На ошибке ставил точку остановки и уже смотрел на какой аналитике/цепочке вызывалась ошибка. С этой информацией уже анализировал данные.

Далее локализовал источник ошибки и исправил ситуацию: в течении месяца отгружали возвратную тару в минус, а в конце месяца просто оприходовали её чтобы этот минус закрыть (и ведь даже не подумали что как-то странно поступают..), в итоге сделали "фиктивный оборот" который программа не понимала.

В моём случае бы хватило уменьшения ограничителя (все остальное корректно посчиталось), но долг требовал разобрать ситуацию полностью:)
4. insurgut 208 23.01.24 09:06 Сейчас в теме
(3)
Далее локализовал источник ошибки и исправил ситуацию


Подскажите, очень похожая ситуация на вашу, тоже с возвратной тарой. А каким образом исправили ситуацию? Оприходование просто перенесли на начало месяца или какие-то другие манипуляции проводили (например подгоняли даты возвратов к датам реализаций, чтобы минуса не было в следующей реализации). Несколько дней уже бьюсь, номенклатуру - вижу, вроде исправил уже минуса. А зацикливание всё равно происходит. Может какие-то дополнительно манипуляции произвести необходимо или куда внимательнее посмотреть?
5. user650551_lvh 08.11.24 10:31 Сейчас в теме
Большое спасибо автору! Чуть подправила под текущие функции релиза и наш сентябрь был спасен :-) Вот оно, простое счастье 1с-ника :-)
6. Dragonim 157 15.07.25 21:47 Сейчас в теме
(5) Добрый день. А можете поделиться знаниями где что и как менять? Или готовой доработкой для текущей версии?
7. CYMTU 2 30.09.25 10:26 Сейчас в теме
(5) Присоединяюсь, к просьбе выше. А может у кого уже есть решение для версий 2.5.22.91?
Для отправки сообщения требуется регистрация/авторизация