ПРивет всем.
При расчете документа "Начисление зарплаты" 1С виснет и вылетает окошко с предупреждением "Недостаточно памяти"
Кеш пробовали чистить, обновились на свежий релиз платформы и конфигурации, не помогло. Тестирование и исправление не помогает, chdbfl.exe ничего не находит. Пробовали выгрузить архив и развернуть на другом компе, тоже самое. В чем может быть дело?
При расчете документа "Начисление зарплаты" 1С виснет и вылетает окошко с предупреждением "Недостаточно памяти"
Кеш пробовали чистить, обновились на свежий релиз платформы и конфигурации, не помогло. Тестирование и исправление не помогает, chdbfl.exe ничего не находит. Пробовали выгрузить архив и развернуть на другом компе, тоже самое. В чем может быть дело?
По теме из базы знаний
- оптимизация отчета на СКД при возникновении ошибки "Недостаточно памяти" (решение)
- Недостаточно памяти и как узнать сколько доступно памяти для 1С 8.2
- Исправление ошибки ЗУП 3.1. Долгое открытие документов, которое может завершиться ошибкой "Недостаточно памяти"
- Расчетная ведомость для больших организаций (более 10 000 сотрудников) для 1С:Зарплата и управление персоналом, редакция 2.5. Решение проблемы "Недостаточно памяти"
- Экспертный кейс. Недостаточно памяти для получения результата запроса: что это такое и как с этим бороться?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(0) Видел такое, даже решал. Оказалось, что табельщица ошиблась с датой(на 200 лет) в документе... то ли оплата выходных, то ли оплата сверхурочных. В результате, при расчете ЗП строится таблица НДФЛ на не одну сотню лет по-месячно. Посмотри из-за какого сотрудника проблемы и смотри его расчетный листок / Свод начислений
У нас тоже была ошибка "Недостаточно памяти" при расчете подоходного налога в ЗУП. Оказалось, что случайно провели увольнение сотрудника 0014 годом, а затем провели документ "Расчет при увольнении" с датой увольнения 0014 год.
Была аналогичная ситуация. Сразу начал искать неправильно веденную дату.
Начал с регистра накопления "НДФЛ Сведения о доходах" и сразу всплыли записи с датой 0014 года.
Так что советую искать причину в неправильных датах просмотром и фильтрами по регистрам связанными с НДФЛ
Начал с регистра накопления "НДФЛ Сведения о доходах" и сразу всплыли записи с датой 0014 года.
Так что советую искать причину в неправильных датах просмотром и фильтрами по регистрам связанными с НДФЛ
Только, что была такая ситуация в ЗУП при расчете зарплаты, проблема была в том, что на закладке сотрудников для расчета был один человек, а на закладке НДФЛ все сотрудники. Как только убрали всех, кроме одного все стало нормально.
Столкнулись сегодня. Тоже, проблема с датой.
Написал обработку, может кому пригодится:)
- Бежит по метаданным
- Делает запрос по каждому регистру, выводит Мин и Макс дату периода
Сразу нашли регистр, оказался тоже "НДФЛСведенияОДоходах"
Написал обработку, может кому пригодится:)
- Бежит по метаданным
- Делает запрос по каждому регистру, выводит Мин и Макс дату периода
Сразу нашли регистр, оказался тоже "НДФЛСведенияОДоходах"
Процедура КнопкаВыполнитьНажатие(Кнопка)
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ТипыРегистров = Новый Массив;
ТипыРегистров.Добавить("РегистрыНакопления");
ТипыРегистров.Добавить("РегистрыРасчета");
ТипыРегистров.Добавить("РегистрыСведений");
Для каждого ТипРегистра Из ТипыРегистров Цикл
ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));
РегистрыМД = Метаданные[ТипРегистра];
Для каждого РегистрМД Из РегистрыМД Цикл
ИмяРегистра = РегистрМД.Имя;
ДатаНач = Неопределено;
ДатаКон = Неопределено;
ЕстьЗаписи = Ложь;
Если ТипРегистра = "РегистрыНакопления" Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ
| МИНИМУМ(Регистр.Период) КАК ДатаНач,
| МАКСИМУМ(Регистр.Период) КАК ДатаКон
|ИЗ
| РегистрНакопления."+ИмяРегистра+" КАК Регистр"
);
ИначеЕсли ТипРегистра = "РегистрыРасчета" Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ
| МИНИМУМ(БУДополнительныеНачисления.ПериодРегистрации) КАК ДатаНач,
| МАКСИМУМ(БУДополнительныеНачисления.ПериодРегистрации) КАК ДатаКон
|ИЗ
| РегистрРасчета.БУДополнительныеНачисления КАК БУДополнительныеНачисления"
);
ИначеЕсли ТипРегистра = "РегистрыСведений" Тогда
Если СокрЛП(РегистрМД.ПериодичностьРегистраСведений) = "Непериодический" Тогда
Продолжить;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ
| МИНИМУМ(Регистр.Период) КАК ДатаНач,
| МАКСИМУМ(Регистр.Период) КАК ДатаКон
|ИЗ
| РегистрСведений."+ИмяРегистра+" КАК Регистр"
);
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЕстьЗаписи = Истина;
ДатаНач = Выборка.ДатаНач;
ДатаКон = Выборка.ДатаКон;
КонецЕсли;
Если ЕстьЗаписи Тогда
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.ТипРегистра = ТипРегистра;
Область.Параметры.ИмяРегистра = ИмяРегистра + " ("+РегистрМД.Синоним+")";
Область.Параметры.ДатаНач = ДатаНач;
Область.Параметры.ДатаКон = ДатаКон;
Иначе
Область = Макет.ПолучитьОбласть("Строка1");
Область.Параметры.ТипРегистра = ТипРегистра;
Область.Параметры.ИмяРегистра = ИмяРегистра + " ("+РегистрМД.Синоним+")";
КонецЕсли;
ТабДок.Вывести(Область);
КонецЦикла;
КонецЦикла;
ТабДок.Показать();
КонецПроцедуры
Показать
(15)
Процедура КнопкаВыполнитьНажатие(Кнопка)
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ТипыРегистров = Новый Массив;
ТипыРегистров.Добавить("РегистрыНакопления");
ТипыРегистров.Добавить("РегистрыРасчета");
ТипыРегистров.Добавить("РегистрыСведений");
Для каждого ТипРегистра Из ТипыРегистров Цикл
ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));
РегистрыМД = Метаданные[ТипРегистра];
Для каждого РегистрМД Из РегистрыМД Цикл
ИмяРегистра = РегистрМД.Имя;
ДатаНач = Неопределено;
ДатаКон = Неопределено;
ЕстьЗаписи = Ложь;
Если ТипРегистра = "РегистрыНакопления" Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ
| МИНИМУМ(Регистр.Период) КАК ДатаНач,
| МАКСИМУМ(Регистр.Период) КАК ДатаКон
|ИЗ
| РегистрНакопления."+ИмяРегистра+" КАК Регистр"
);
ИначеЕсли ТипРегистра = "РегистрыРасчета" Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ
| МИНИМУМ(БУДополнительныеНачисления.ПериодРегистрации) КАК ДатаНач,
| МАКСИМУМ(БУДополнительныеНачисления.ПериодРегистрации) КАК ДатаКон
|ИЗ
| РегистрРасчета.БУДополнительныеНачисления КАК БУДополнительныеНачисления"
);
ИначеЕсли ТипРегистра = "РегистрыСведений" Тогда
Если СокрЛП(РегистрМД.ПериодичностьРегистраСведений) = "Непериодический" Тогда
Продолжить;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ
| МИНИМУМ(Регистр.Период) КАК ДатаНач,
| МАКСИМУМ(Регистр.Период) КАК ДатаКон
|ИЗ
| РегистрСведений."+ИмяРегистра+" КАК Регистр"
);
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЕстьЗаписи = Истина;
ДатаНач = Выборка.ДатаНач;
ДатаКон = Выборка.ДатаКон;
КонецЕсли;
Если ЕстьЗаписи Тогда
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.ТипРегистра = ТипРегистра;
Область.Параметры.ИмяРегистра = ИмяРегистра + " ("+РегистрМД.Синоним+")";
Область.Параметры.ДатаНач = ДатаНач;
Область.Параметры.ДатаКон = ДатаКон;
Иначе
Область = Макет.ПолучитьОбласть("Строка1");
Область.Параметры.ТипРегистра = ТипРегистра;
Область.Параметры.ИмяРегистра = ИмяРегистра + " ("+РегистрМД.Синоним+")";
КонецЕсли;
ТабДок.Вывести(Область);
КонецЦикла;
КонецЦикла;
ТабДок.Показать();
ПоказатьТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ТипыРегистров = Новый Массив;
ТипыРегистров.Добавить("РегистрыНакопления");
ТипыРегистров.Добавить("РегистрыРасчета");
ТипыРегистров.Добавить("РегистрыСведений");
Для каждого ТипРегистра Из ТипыРегистров Цикл
ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));
РегистрыМД = Метаданные[ТипРегистра];
Для каждого РегистрМД Из РегистрыМД Цикл
ИмяРегистра = РегистрМД.Имя;
ДатаНач = Неопределено;
ДатаКон = Неопределено;
ЕстьЗаписи = Ложь;
Если ТипРегистра = "РегистрыНакопления" Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ
| МИНИМУМ(Регистр.Период) КАК ДатаНач,
| МАКСИМУМ(Регистр.Период) КАК ДатаКон
|ИЗ
| РегистрНакопления."+ИмяРегистра+" КАК Регистр"
);
ИначеЕсли ТипРегистра = "РегистрыРасчета" Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ
| МИНИМУМ(БУДополнительныеНачисления.ПериодРегистрации) КАК ДатаНач,
| МАКСИМУМ(БУДополнительныеНачисления.ПериодРегистрации) КАК ДатаКон
|ИЗ
| РегистрРасчета.БУДополнительныеНачисления КАК БУДополнительныеНачисления"
);
ИначеЕсли ТипРегистра = "РегистрыСведений" Тогда
Если СокрЛП(РегистрМД.ПериодичностьРегистраСведений) = "Непериодический" Тогда
Продолжить;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ
| МИНИМУМ(Регистр.Период) КАК ДатаНач,
| МАКСИМУМ(Регистр.Период) КАК ДатаКон
|ИЗ
| РегистрСведений."+ИмяРегистра+" КАК Регистр"
);
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЕстьЗаписи = Истина;
ДатаНач = Выборка.ДатаНач;
ДатаКон = Выборка.ДатаКон;
КонецЕсли;
Если ЕстьЗаписи Тогда
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.ТипРегистра = ТипРегистра;
Область.Параметры.ИмяРегистра = ИмяРегистра + " ("+РегистрМД.Синоним+")";
Область.Параметры.ДатаНач = ДатаНач;
Область.Параметры.ДатаКон = ДатаКон;
Иначе
Область = Макет.ПолучитьОбласть("Строка1");
Область.Параметры.ТипРегистра = ТипРегистра;
Область.Параметры.ИмяРегистра = ИмяРегистра + " ("+РегистрМД.Синоним+")";
КонецЕсли;
ТабДок.Вывести(Область);
КонецЦикла;
КонецЦикла;
ТабДок.Показать();
Всем спасибо за комментарии. Вставлю свои 5 копеек: тоже вылезло "Недостаточно памяти" при начислении з/пл и расчете взносов, на календаре январь, закрываем декабрь. В результате оказалось Отдел кадров в декабре вносил отпуск за январь 19, а внесли за январь 18-го, на основании кадровских документов ввели начисление з/п и все начисления получилось считаются за год. Когда нашли сильно обрадовались, даже Отдел кадров бить не стали )))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот