В программных продуктах на базе «1С:Управление торговлей» версии 11 (а также в ERP 2 и Комплексной автоматизации 2) пользователи часто сталкиваются с ситуацией, когда в помощнике Закрытие месяца кнопка Выполнить операции остается серой и неактивной. При этом система выводит информационную надпись с иконкой «замочка», сообщая, что «Расчет возможен только с периода [Дата]». Даже если выбрать указанный или последующий период, ситуация не меняется. Разберем подробно, почему так происходит и как восстановить работоспособность системы.
Одной из самых частых причин, по которой система блокирует расчет, является несоответствие даты начала ведения учета и настроек учетной политики. Рассмотрим ситуацию: вы загрузили документы (поступления, реализации) за январь 2018 года в новую базу. Однако при создании записи в регистре сведений Учетная политика организаций по неосторожности или из-за автоматического заполнения была установлена дата начала действия, например, «Декабрь 2018».
В этом случае система видит документы за январь, но не находит для них правил расчета (метода оценки стоимости, параметров налогообложения) на тот момент. Проанализируем, как это работает «под капотом»: программа обращается к модулю менеджера обработки ОперацииЗакрытияМесяца, где вызывается функция ПроверитьДатыЗапретаИзменения. Если дата первого документа в системе меньше, чем дата начала самой ранней учетной политики, расчет блокируется. Выясним причину ошибки: сообщение системы в данном случае недостаточно информативно, так как оно указывает на период, с которого теоретически можно считать, но не объясняет, почему кнопка недоступна сейчас.
Решение: Проверьте регистр сведений Учетная политика. Убедитесь, что для каждой организации создана запись, дата начала которой меньше или равна дате самого раннего документа в базе.
Система 1С:УТ 11 построена на событийной модели. Любое изменение документа, влияющего на себестоимость или расчеты, создает запись в специальных технических регистрах сведений. Если в этих регистрах «повисла» запись за очень старый период, система будет считать, что учет в том периоде не завершен, и не даст закрыть текущий месяц. Рассмотрим список регистров, которые необходимо проверить в первую очередь:
Посмотрим на пример из практики: пользователь случайно ввел документ «Поступление товаров и услуг» с опечаткой в дате, указав 0217 год вместо 2017. Даже после исправления даты в самом документе, запись в регистре ЗаданияКРасчетуСебестоимости может остаться со старым значением. Система будет настойчиво требовать «расчет с февраля 0217 года».
Как исправить: Перейдите в меню «Функции для технического специалиста» (или «Все функции»), найдите указанные выше регистры сведений и проанализируйте их содержимое. Если вы видите записи за периоды, которые не планируете пересчитывать, или явно ошибочные даты — эти записи следует удалить. После очистки регистров обязательно обновите форму закрытия месяца.
Иногда корень проблемы кроется в константах, которые не видны в обычном пользовательском интерфейсе. Проанализируем константу ДатаНачалаВеденияУправленческогоУчетаОрганизаций. Если ее значение пустое (0001.01.01) или установлено некорректно, механизмы закрытия месяца могут вести себя непредсказуемо. Также стоит обратить внимание на регистр сведений Периоды актуальности партионного учета. Если вы используете «Партионный учет 2.2», записи в этом регистре жестко определяют, с какого момента система начинает контролировать целостность партий.
Выясним ситуацию с «битыми» датами в движениях. Бывает так, что в самом документе дата верная, но в регистрах накопления (например, ВыручкаИПродажи или ЗапасыНаСкладах) из-за программного сбоя при записи затесалась пустая дата. Проверить это можно с помощью консоли запросов, выполнив простой запрос к подозрительным регистрам:
ВЫБРАТЬ МИНИМУМ(Период) КАК МинимальнаяДата
ИЗ РегистрНакопления.ЗапасыНаСкладах
Если запрос вернет 01.01.0001, значит, в базе есть документ с некорректными движениями, который блокирует всю цепочку расчетов.
Рассмотрим последовательность действий, если кнопка «Выполнить операции» все еще не активна:
ЗаданияК....Если записей в регистрах заданий слишком много, мы можем воспользоваться обработкой «Групповое изменение реквизитов» или написать простой код для очистки старых заданий. Рассмотрим пример кода, который поможет программно очистить регистр заданий по определенную дату:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Регистратор ИЗ РегистрСведений.ЗаданияКРасчетуСебестоимости ГДЕ Период < &ГраничнаяДата";
Запрос.УстановитьПараметр("ГраничнаяДата", '20180101');
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Результат Цикл
Набор = РегистрыСведений.ЗаданияКРасчетуСебестоимости.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Строка.Регистратор);
Набор.Записать(); // Записываем пустой набор для удаления
КонецЦикла;
Важное примечание: Перед удалением записей из технических регистров убедитесь, что вам действительно не требуется пересчет за эти периоды. Удаление заданий — это способ сказать системе «считай, что здесь всё правильно», даже если это не так. Если данные в прошлом периоде действительно изменились, удаление заданий приведет к расхождению остатков и себестоимости в будущем.
Таким образом, мы выяснили, что блокировка кнопки закрытия месяца в УТ 11 — это защитный механизм платформы, предотвращающий расчет данных при отсутствии корректных настроек или наличии «мусорных» записей в очередях заданий. Тщательный анализ учетной политики и технических регистров позволяет оперативно решить эту проблему.