Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric
В рамках проекта перехода с Управление торговлей 11.1 на Комплексная автоматизация 2.2 возникли с одной проблемой. Суть в следующем. Сам переход подразумевает обновление УТ на КА (как базовую бухгалтерию на проф) — никаких трудностей. Но перед переходом необходимо в УТ рассчитать себестоимость и закрыть месяца. У нас было обновление на 10 релизов примерно, после чего я и попытался сделать закрытие месяц. Вот тут и появилась ошибка:
1. При выполнении расчета возникла ошибка:
{ОбщийМодуль.УниверсальныеМеханизмыПартийИСебестоимости.Модуль(2043)}:
Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выбрать();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 10.0: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1
С этого момента начался поиск решения проблемы. Что было проверено:
- последняя платформа 1С
- последний релиз конфигурации 1С
- полное ТиИ (и отдельно пересчет итогов)
- checkdb в ms sql server
Также был найден запрос, на котором была ошибка, и запросе, было исправлено выражение ВЫРАЗИТЬ(15,3) на ВЫРАЗИТЬ(25,3) — или что-то подобное. Такой способ рекомендуют во многих местах в сети (в том числе и на infostart). Но он тоже мне не помог.
После я решил, что нужно все понять причину, ведь не может появиться ошибка просто так.
И проанализировал регистр «ВыручкаИСебестоимостьПродаж«. И ужаснулся — в полях себестоимости были миллиарды.
Тут я понял, что проблему нужно решать с другой стороны! После чего и начал искать с чего все началось — с каких документов. Где-то исправлял ошибки, где-то просто перепроводил документы и потом закрывал месяц. И все получилось. И самый правильный залог успеха — отсутствие отрицательных остатков!
Позже выложу обработку, которая упрощает механизм поиска и исправления данных ошибок.