При работе в программе 1С:Управление торговлей (редакция 11), а также в родственных конфигурациях 1С:Комплексная автоматизация 2 и 1С:ERP, пользователи и администраторы часто сталкиваются со сложной технической проблемой при проведении документов «Реализация товаров и услуг» или в процессе закрытия месяца. Программа выдает ошибку, ссылаясь на общий модуль УниверсальныеМеханизмыПартийИСебестоимости и регистр накопления ПартииТоваровОрганизаций, сопровождающуюся загадочной формулировкой #ИсключениеУжеЗафиксировано.
В этой статье мы подробно разберем, почему возникает эта ошибка, проанализируем внутренние механизмы партионного учета 1С и пошагово выясним, как вернуть базу данных в рабочее состояние и успешно рассчитать себестоимость за отчетный период.
Для начала проанализируем суть происходящего внутри системы. Начиная с версии 11.4, в «1С:Управление торговлей» расчет себестоимости и распределение партий представляют собой сложнейший математический алгоритм, который решает системы линейных уравнений. Этот алгоритм работает в транзакции и нередко выполняется в многопоточном фоновом режиме.
Суть ошибки сводится к следующему: система запускает расчет партий по определенной группе документов. Программа рассчитывает движения для документа «Реализация товаров и услуг» и пытается записать новые данные в регистр накопления ПартииТоваровОрганизаций. Однако в этот же самый момент параллельный процесс (другой поток расчета, фоновое задание отложенных расчетов или действия пользователя, перепроводившего документ вручную) изменяет движения этого же документа или блокирует те же самые аналитики учета. Происходит конфликт транзакций, СУБД блокирует таблицы, и платформа 1С аварийно прерывает операцию с фиксацией исключения.
Также к этой ошибке приводят логические нестыковки в регистрах, когда в системе «зависают» старые, некорректные задания на расчет себестоимости за предыдущие периоды.
---
Как показывает практика и опыт практикующих специалистов, наиболее частой причиной сбоя являются некорректные записи в регистре сведений Задания к расчету себестоимости. В этот регистр программа автоматически записывает информацию каждый раз, когда пользователь создает или изменяет любые документы движения товаров. Если расчет за прошлые периоды содержал ошибки, эти задания накапливаются, зацикливаются и вызывают сбои при расчете текущего месяца.
Важное правило: Простая ручная очистка регистра сотрет историю изменений, и система «забудет», что ей нужно пересчитать себестоимость по скорректированным документам. Поэтому мы должны действовать аккуратно и последовательно.
Рассмотрим правильный алгоритм очистки и перерегистрации заданий:
Задания к расчету себестоимости через «Функции для технического специалиста» (или «Все функции»).
НаборЗаписей = РегистрыСведений.ЗаданияКРасчетуСебестоимости.СоздатьНаборЗаписей();
// Записываем пустой набор, чтобы полностью очистить регистр сведений
НаборЗаписей.Записать(Истина);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Регистр 'Задания к расчету себестоимости' успешно очищен!");
НСИ и администрирование — Обслуживание — Корректировка данных — Групповое перепроведение документов.Задания к расчету себестоимости.---
Если очистка регистра заданий не помогла, и при попытке закрытия месяца вы снова получаете ошибку изменения движений в регистре ПартииТоваровОрганизаций, нам нужно проанализировать настройки параллельного расчета.
По умолчанию 1С старается выполнять расчет себестоимости в несколько фоновых потоков для ускорения процесса на многопроцессорных серверах. Однако при сложных схемах обеспечения или использовании механизма «Интеркампани» (передачи товаров между организациями) эти потоки начинают конкурировать друг с другом за одни и те же таблицы СУБД.
Выполним следующие действия для перевода расчета в однопоточный режим:
Финансовый результат и контроллинг — Настройки и справочники.---
В некоторых случаях ошибка провоцируется тем, что реальные остатки товаров на складах не соответствуют остаткам по партионному учету. Это происходит из-за ручных корректировок регистров, непроведенных документов передачи между организациями или некорректно оформленных возвратов.
Выясним причину расхождения по шагам:
УниверсальныеМеханизмыПартийИСебестоимости.Финансовый результат и контроллинг — Помощник исправления остатков товаров организаций. Данный помощник проанализирует продажи чужих товаров и предложит автоматически сформировать недостающие передачи.ТоварыОрганизаций и регистру ПартииТоваровОрганизаций. Сделать это можно с помощью универсального отчета по регистрам. Если количество товара по регистру товаров равно 2, а по регистру партий числится 0 (так как товар был списан прошлым месяцем, как в сообщении №8 на форуме), необходимо найти первопричину деления партий. Одной из частых ошибок является изменение документов прошлых периодов после того, как по ним уже был зафиксирован окончательный расчет себестоимости.---
Крайне важно исключить человеческий фактор в процессе выполнения тяжелых расчетных операций. Если во время того, как регламентное задание рассчитывает себестоимость, менеджер в соседнем кабинете открывает документ «Реализация товаров и услуг» за этот же месяц и проводит его, транзакция расчета партий будет мгновенно прервана платформой с записью ошибки в журнал регистрации.
Мы рекомендуем соблюдать строгий регламент закрытия отчетного периода:
НСИ и администрирование — Настройки пользователей и прав — Даты запрета изменения данных.---
Если все вышеперечисленные шаги выполнены, но при расчете себестоимости конкретного месяца система стабильно выбрасывает ошибку #ИсключениеУжеЗафиксировано в общем модуле партионного учета, мы имеем дело с внутренней программной ошибкой (багом) релиза конфигурации.
Разработчики фирмы 1С регулярно оптимизируют алгоритмы распределения партий и исправляют выявляемые коллизии. Чтобы решить проблему системного сбоя в кодовой базе:
Администрирование — Обслуживание — Обновление программы — Установка обновлений и исправлений (патчей).Применяя описанные методики комплексно — начиная с очистки регистра Задания к расчету себестоимости, контроля отрицательных остатков и заканчивая правильной организацией монопольного режима выполнения регламентных операций — мы гарантированно избавимся от ошибки проведения реализации и успешно закроем отчетный период.