Ошибка обновления типовых конфигураций УТ/ЕРП/КА и других "Превышен максимальный расход памяти сервера за один вызов"

18.08.25

База данных - Обновление 1С

При обновлении конфигураций ЕРП/КА/УТ типовыми обновлениями можно получить ошибку  Превышен максимальный расход памяти сервера за один вызов". С чем это связано? Рассмотрим исправление этой ошибки.

Например, посмотрим регистры накопления:

  • ЗаданияНеоперативногоДопроведенияДокументов
  • ДенежныеСредстваБезналичные

В модулях менеджера которых есть процедура "ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию", в которой выполняется выборка данных.

Затем эта выборка, в качестве ТЗ или массива уходит в процедуру ОбновлениеИнформационнойБазы.ОтметитьКОбработке"

Самое забавное, что 1С  для нас (но, видимо, не для себя)  написали комментарий к процедуре 
"ОтметитьКОбработке"

// Отмечает, что переданные данные необходимо обновить.
// Важно: не рекомендуется передавать в параметр Данные сразу все данные, которые
// необходимо зарегистрировать к обработке, т.к. большие коллекции типа Массив
// или ТаблицаЗначений могут занять существенный объем памяти сервера и привести
// к сильному снижению производительности системы. Рекомендуется получать и передавать
// данные небольшими порциями, например по 1000 объектов.

Это отлично .. но при этом в обработчике обновлений ... мы получаем огромную выборку .. без каких-либо разделений на порции.. в после передачи этой выборки  (массив или ТЗ)  в "ОтметитьКОбработке".. даже на мощных серверах .. мы просто падаем ...

Выход:

1) Создаем общий модуль "РаботаСПорциямиСервер" (Сервер, внешнее соединение)

Код модуля:

 

#Область ПрограммныйИнтерфейс

Функция РазбитьМассивНаПорции(ВходящийМассив, РазмерПорции) Экспорт
	
	ПулМассивов = Новый Массив;
	
	МассивПорция = Новый Массив;
	
	Если ВходящийМассив.Количество() <= РазмерПорции Тогда
		
		ПулМассивов.Добавить(ВходящийМассив);
		Возврат ПулМассивов;
		
	КонецЕсли;

	Для Индекс = 0 По ВходящийМассив.ВГраница() Цикл
		
		Если МассивПорция.Количество() = РазмерПорции Тогда
			
			ПулМассивов.Добавить(МассивПорция);
			МассивПорция = Новый Массив;
			
		КонецЕсли;

		МассивПорция.Добавить(ВходящийМассив.Получить(Индекс));
		
	КонецЦикла;
	
	Если Индекс -1 = ВходящийМассив.ВГраница() И МассивПорция.Количество() <> 0 Тогда
		
		ПулМассивов.Добавить(МассивПорция);
		
	КонецЕсли;
	
	Возврат ПулМассивов;
	
КонецФункции

Функция РазбитьТЗНаПорции(Тз, РазмерПорции) Экспорт
	
	ПулМассивов = Новый Массив;
	
	Если Тз.Количество() <= РазмерПорции Тогда
		
		ПулМассивов.Добавить(Тз);
		Возврат ПулМассивов;
		
	КонецЕсли;
	
	ТзПорция = ПустаяТз(Тз);
	
	Для Сч = 0 По Тз.Количество() -1 Цикл
		
		Если ТзПорция.Количество() = РазмерПорции Тогда
			
			ПулМассивов.Добавить(ТзПорция);
			ТзПорция = ПустаяТз(Тз);
			
		КонецЕсли;
		
		НоСтрокаТз = ТзПорция.Добавить();
		ЗаполнитьЗначенияСвойств(НоСтрокаТз, Тз.Получить(Сч));
		
	КонецЦикла;
	
	Если Сч = Тз.Количество() И ТзПорция.Количество() <> 0 Тогда
		
		ПулМассивов.Добавить(ТзПорция);
		
	КонецЕсли;
	
	Возврат ПулМассивов;
	
КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ПустаяТз(Тз)
	
	Возврат Тз.СкопироватьКолонки();
	
КонецФункции

#КонецОбласти

 


Исправление в расширении выглядит так:

 
 

 

#Удаление
  ОбновлениеИнформационнойБазы.ОтметитьКОбработке(
  Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Регистратор"), ДополнительныеПараметры);
#КонецУдаления

#Вставка
  
  РазмерПорции = 500;
  
  ДанныеДляОбработки = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Регистратор");
  ПулМассивовДляОбработки = РаботаСПорциямиСервер.РазбитьМассивНаПорции(ДанныеДляОбработки, РазмерПорции);
  
  Для Каждого ЭлМассива Из ПулМассивовДляОбработки Цикл
  
    ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, ЭлМассива, ДополнительныеПараметры);
    
  КонецЦикла;
  
#КонецВставки

 


После таких доработок, отложенные обработчики отработают штатно, и проблем возникать не будет.

PS все это справедливо для "больших баз", где первички очень много...

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

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

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

См. также

Инструменты администратора БД Обновление 1С Системный администратор Разработчик 1С 8.3 Абонемент ($m)

Если обновление 1С уже падало с "Записи регистра сведений стали неуникальными", вы знаете, что платформа называет только первый такой регистр, и каждый следующий всплывает новым запуском обновления. Проверьте заранее: снимите слепок регистров в базе с новой конфигурацией и нажмите "Проверить" в рабочей. Обработка покажет все регистры сведений, где записи после обновления совпадут по измерениям, и сами группы таких записей: укороченная строка, меньше знаков после запятой, укрупнённая периодичность, убранный из составного тип. Удалённое измерение называет, но записи по нему не считает. Что разобрать не может, называет с причиной и в "дублей не найдено" не записывает. Только чтение, без доступа к таблицам СУБД.

10 стартмани

09.11.2026    214    0    nedomolkov.ivan    0    

3

Архивирование (backup) Обновление 1С Системный администратор Разработчик 1С 8.3 Бесплатно (free)

Платформа 8.3.17, MS SQL Server: обновление конфигурации падает через 15 секунд на этапе обновления предопределённых данных, и конфигуратор при каждом входе предлагает только повторить. Проверьте у себя, когда сделана последняя полная копия базы: у нас её не было почти месяц. Разбор по минутам: что не помогло (перезапуск агента сервера 1С, перезагрузка, пакетный /UpdateDBCfg, три совета со стороны) и почему. Как ibcmd достал .dt из базы, которая не открывается, и как новую базу подставили под старым именем в кластере 1С через rac, не трогая пользователей. Простой 57 минут, потерь данных нет. Отдельно ошибки ИИ-агента Claude, который работал на сервере, и порядок действий на случай, если это случилось у вас.

03.11.2026    674    nedomolkov.ivan    13    

5

Обновление 1С Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 Бесплатно (free)

Вторая часть серии о переходе ERP 2.5 на 2.6. Я сравнил чистые выгрузки 2.5.27.88, 2.6.1.70 и 2.6.2.59 и выписал то, чего нет в официальных описаниях версий: какие экспортные методы удалены поимённо, какие документы больше нельзя создать и при каком условии, что переименовали без предупреждения. Из двенадцати механизмов, от которых отказывается 1С, к 2.6.2 удалены только два, а большая часть удалённого к ним не относится. Отдельно разбираю, почему перехватчики &ИзменениеИКонтроль ломаются на процедурах, где поменялся только английский текст, и почему доработки выгоднее готовить сразу под 2.6.2. Будет полезно разработчикам, которые сопровождают расширения и внешние обработки на ERP 2.5.27, и тем, кто планирует сроки перехода.

20.10.2026    1043    lexatsch    8    

8

Обновление 1С Разработчик 1С 8.3 1С 8.5 Абонемент ($m)

Перед обновлением типовой конфигурации обработка читает код ваших доработок — внешних обработок, отчетов и расширений — и сверяет каждое обращение к конфигурации со старым и новым релизом. Результат — один отчет по всем доработкам: файл и строка, сам фрагмент кода и понятная причина («метод теперь принимает один параметр», «значение перечисления удалено», «перехватываемый метод не найден»). Исходники релизов и обработок можно подготовить прямо из обработки — пакетным запуском Конфигуратора.

3 стартмани

19.10.2026    345    1    InShallaH    0    

3

Обновление 1С Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 Бесплатно (free)

1С считает, что перейти с ERP 2.5 на 2.6 не сложнее, чем обновиться между версиями длительной поддержки, а обязательным переход станет не раньше 30 апреля 2027 года. Я решил проверить это заранее на нашей доработанной ERP 2.5.27, где есть два больших расширения и 517 внешних отчётов и обработок. Форма готовности нашла четыре механизма, которые надо перевести, а про код промолчала. Проверка применимости на чистой 2.6.1 выдала 478 проблем, и настоящих среди них меньше сотни. А сверка кода со словарём изменений нашла ещё 63 проблемы, которых проверка применимости вообще не видит. Часть из них не даст открыть модуль, остальные вылезут уже у пользователей. Рассказываю, как проверить применимость расширения к 2.6.1 без записи в базу, что ловит компилятор, что ломается чаще всего и чем это заменить.

16.10.2026    683    lexatsch    0    

3

Инструментарий разработчика Обновление 1С Разработчик 1С 8.3 Бесплатно (free)

Бесплатная внешняя обработка: до обновления типовой показывает, какие ваши внешние обработки и печатные формы после него упадут. Находит в их коде вызовы общих модулей и менеджеров типовой и сверяет каждый с текущей конфигурацией и с выгрузкой нового релиза: есть ли метод, экспортный ли, сходится ли число параметров. Обработки берёт из справочника или из папки .epf и .erf, без конфигуратора. У каждого вызова статус, строка и причина.

29.09.2026    1219    140    nedomolkov.ivan    2    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Xershi 1566 19.08.25 05:45 Сейчас в теме
Элегантное решение!
2. aximo 2771 19.08.25 07:16 Сейчас в теме
Это что у вас «большие базы» на 32-ух разрядных серверах приложений работают?
4. iolko 346 19.08.25 09:12 Сейчас в теме
3. Vladimir-R 170 19.08.25 09:03 Сейчас в теме
У вас в настройках отложенного обновления сколько потоков обновления включено?
5. iolko 346 19.08.25 09:13 Сейчас в теме
(3) Там, понимаете, дело не в потоках .. а дело в том, что передается в качестве параметра большой объем данных.
О том, что так делать нельзя, 1С пишет в комментарии:

// Важно: не рекомендуется передавать в параметр Данные сразу все данные, которые
// необходимо зарегистрировать к обработке, т.к. большие коллекции типа Массив
// или ТаблицаЗначений могут занять существенный объем памяти сервера и привести
// к сильному снижению производительности системы. Рекомендуется получать и передавать
// данные небольшими порциями, например по 1000 объектов.

Но при этом сама не выполняет данные требования
Dach; sapervodichka; +2 – Ответить
6. sapervodichka 7701 19.08.25 10:24 Сейчас в теме
(3) тут я так понял дело в том, что есть 1 параметр, там весь объем и по потокам эти данные не делятся (это ведь дописывать надо кодом) машина не сможет поделить по потокам выполнение процедуры. Вот Алексей решил все также оставить в 1 потоке, но только поделить на меньшие порции, чтобы прожевывало. А так классно было бы иметь встроенную возможность поделить на порции и эти порции в разные потоки для любого обработчика обновления - но это лучше самому 1С сделать везде в обработчиках обновления.
7. iolko 346 19.08.25 12:57 Сейчас в теме
(6) Да, совершенно верно, и это (во всяком случае у нас) огромная выборка, и если она передается вся, без разбиения на порции, то получаем недостаток памяти.

Если же передать весь объем, предварительно его разделив, то он спокойно порциями встает в очередь и затем так же спокойно отложено отработает.
Потому отложенные обработчики делят данные на порции, и на каждую порцию создается отдельное рег задание.
А вот именно при подготовке данных этого нет, что и исправляем
8. Dach 440 19.08.25 13:46 Сейчас в теме
(7) на партнерку бы еще написать и носом их ткнуть в этот код
9. Vladimir-R 170 20.08.25 13:43 Сейчас в теме
(8) ответ 1С
"При анализе решено. что деградации нет или она незначительна.
Ошибкой не считается."
10. iolko 346 21.08.25 03:34 Сейчас в теме
(9) Ну что тут сказать, возможно, на каких-то объемах проблемы нет, но с нашими - они возникли..
По этому: хочешь сделать хорошо - сделай сам, как обычно
Для отправки сообщения требуется регистрация/авторизация