Проблема с расчетом себестоимости в программе «1С:Управление торговлей 11.4» — одна из самых часто встречающихся задач, с которыми сталкиваются специалисты после внедрения или перехода с предыдущих версий (например, с 7.7 ТиС). Типичная ситуация: предварительный расчет исправно работал каждый день, но в какой-то момент данные в отчетах по валовой прибыли за вторую половину месяца внезапно исчезли — для этого подойдёт отчет по валовой прибыли и себестоимости без закрытия месяца. Проанализируем причины этой проблемы и разберем по шагам проверенные способы ее решения.
Прежде чем переходить к исправлению ошибок, разберем, как работает этот механизм. В системе существует два основных варианта расчета:
Закрытие месяца (поможет обработка исправления ошибок для закрытия месяца) . Он производит окончательное распределение расходов на документы реализации и перемещения, расчет партий по методу FIFO (если он выбран) и формирует итоговые цифры.Важный нюанс: если в системе за текущий месяц уже создан документ Расчет себестоимости товаров с видом «Фактический», механизм предварительного расчета блокируется. Система «считает», что раз вы уже начали закрывать месяц окончательно, оперативные (предварительные) данные вам больше не нужны. Именно в этом часто кроется причина пустых колонок в отчетах после определенной даты.
Рассмотрим ситуацию: вы работали в середине января, и регламентное задание исправно создавало документы предварительного расчета. Но кто-то из пользователей или сама система (при формировании определенных отчетов) инициировала создание документа с типом «Фактический» на дату 31.01. С этого момента все продажи, совершенные после даты последнего успешного расчета, перестают показывать себестоимость в отчете Валовая прибыль, так как предварительный расчет больше не запускается.
Как исправить:
Расчет себестоимости товаров.Предварительный расчет себестоимости снова сможет создавать нужные документы.Проанализируем интересную особенность конфигурации. Иногда при запуске тяжелых отчетов (например, Себестоимость товаров организаций) система может автоматически инициировать фоновый пересчет. В некоторых релизах УТ 11.4 замечено, что при этом в существующем документе расчета могут самопроизвольно измениться реквизиты.
Выясним, что именно меняется:
МетодОценки меняет значение со СредняяЗаМесяц на ФИФО.ПредварительныйРасчет меняет значение с Истина на Ложь.Если документов много или ручное удаление не помогает, воспользуемся стандартной обработкой Групповое изменение реквизитов:
Документ.РасчетСебестоимостиТоваров (для ускорения работы с данными можно использовать универсальный менеджер редактирования реквизитов и движений).Метод оценки — Средняя за месяц, Предварительный расчет — Да (Истина).Если штатное регламентное задание по каким-то причинам не справляется, мы можем написать небольшую внешнюю обработку для принудительного вызова программного интерфейса (API) конфигурации. Рассмотрим пример кода, который позволяет запустить расчет программно, обходя стандартные блокировки:
ПараметрыЗапускаРасчетаСебестоимости = Новый Структура;
ПараметрыЗапускаРасчетаСебестоимости.Вставить("Дата", КонецДня(Объект.ВыбраннаяДата));
ПараметрыЗапускаРасчетаСебестоимости.Вставить("ПредварительныйРасчет", Истина);
ПараметрыЗапускаРасчетаСебестоимости.Вставить("МассивОрганизаций", Неопределено); // Расчет по всем
ПараметрыЗапускаРасчетаСебестоимости.Вставить("РегламентноеЗадание", Истина);
ПараметрыЗапускаРасчетаСебестоимости.Вставить("МестоВызоваРасчета", "РасчетСебестоимости.ПредварительныйРасчетСебестоимости");
// Вызов серверного метода расчета
СебестоимостьРассчитана = РасчетСебестоимости.РассчитатьВсеВПопыткеИсключении(ПараметрыЗапускаРасчетаСебестоимости);
Использование функции РассчитатьВсеВПопыткеИсключении позволяет системе выполнить расчет даже при наличии некоторых ошибок в учете (например, отрицательных остатков), которые могли бы прервать выполнение обычного регламентного задания. Для устранения этих причин есть обработка исправления отрицательных остатков в регистрах.
В конфигурациях на базе ERP 2.0 (к которым относится и УТ 11.4) расчет себестоимости сильно зависит от регистра сведений Задания к расчету себестоимости. Если в этом регистре «повисли» старые записи или возникли взаимоблокировки, расчет за новый период может просто не начаться.
Посмотрим на пример кода, который помогает обойти проблемы с блокировками организаций в фоновых заданиях (актуально для более ранних версий 11.3/11.4):
// Пример модификации процедуры ЗаблокироватьРегистрЗаданий
Процедура ЗаблокироватьРегистрЗаданий(ИмяРегистраЗаданий, НомерЗаданияДоРасчета, АналитикиРасчета)
Блокировка = Новый БлокировкаДанных;
ИмяРегистра = "РегистрСведений." + ИмяРегистраЗаданий;
ЭлементБлокировки = Блокировка.Добавить(ИмяРегистра);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
// Если организация передана как одиночная ссылка, преобразуем в массив для корректной работы
Если ТипЗнч(АналитикиРасчета.Организации) = Тип("СправочникСсылка.Организации") Тогда
ОрганизацияЗакрытия = АналитикиРасчета.Организации;
АналитикиРасчета.Организации = Новый Массив;
АналитикиРасчета.Организации.Добавить(ОрганизацияЗакрытия);
КонецЕсли;
Блокировка.Заблокировать();
КонецПроцедуры
Этот код помогает системе корректно обрабатывать очередь заданий в разрезе организаций, предотвращая «зависание» расчета.
Если вышеперечисленные методы не помогли, рекомендуем проверить следующие моменты:
Товары организаций) может полностью блокировать расчет партий по конкретной позиции. Система просто не понимает, из какой поставки списать товар, которого официально нет.Передачи товаров между организациями. Если товар продан одной организацией, а числится на другой, и документы передачи еще не сформированы, себестоимость может не рассчитаться до момента закрытия месяца.Себестоимость товаров данные есть (см. диагностика расхождений в регистрах товаров и себестоимости), а в Стоимость товаров (периодический регистр сведений) — нет, значит, расчет не завершился успешно.НСИ и администрирование -> Финансовый результат и контроллинг включен флаг Партионный учет. Если вы используете метод FIFO, этот флаг обязателен.Проанализировав ситуацию, можно сделать вывод: в большинстве случаев «исчезновение» себестоимости в УТ 11.4 связано с конфликтом между предварительным и фактическим расчетами. Следите за тем, чтобы документы Расчет себестоимости товаров с видом «Фактический» появлялись в системе только один раз в конце месяца, после окончательной выверки всех документов.