В ходе анализа было определено, что проблемы возникают с документами, в которых в качестве статей расхода указаны статьи без указания правил распределения расходов по направлениям деятельности (далее НП), но при этом, в качестве типа аналитики указано именно "Направление деятельности".
Рассмотрим список документов "Распределение расходов по направлениям деятельности", которые формируются при закрытии месяца.
Обнаружим, что остались несформированные документы:
Повторная попытка формирования этих документов приводит к такой же ошибке. Переходим к анализу этих документов.
УТ утверждает, что нам дополнительно документ распределять не требуется, т.к. в аналитике указано направление деятельности.
Так почему же документ не формируется. Как всегда спасает консоль запросов.
Видим, что не заполнены реквизиты "база распределения" и "направление деятельности", и реквизит "Направление распределения" имеет значение "Текущее подразделение". Это происходит только в том случае, если в качестве аналитики указано Тип("СправочникСсылка.НаправленияДеятельности"). Это точно видно из следующего:
Документ.РаспределениеПрочихЗатрат.МодульОбъекта.Процедура ОбработкаЗаполнения()
Если НазначениеНастройкиРаспределения = Перечисления.НазначениеПравилРаспределенияРасходов.РаспределениеРасходовНаФинансовыйРезультат
И (ЗначениеЗаполнено(НаправлениеДеятельности)
Или (ТипЗнч(АналитикаРасходов) = Тип("СправочникСсылка.НаправленияДеятельности")
И ЗначениеЗаполнено(АналитикаРасходов))
Или Не ПолучитьФункциональнуюОпцию("ФормироватьФинансовыйРезультат")) Тогда
НаправлениеРаспределения = Перечисления.НаправлениеРаспределенияПоПодразделениям.Текущее;
КонецЕсли;
Т.е. "Направление распределения" программисты установили, а про остальные реквизиты, необходимые для распределения, забыли и заблокировали их для заполнения.
В результате всех этих факторов и происходит ошибка при распределении расходов по НП.
Исправляем.
Вариант 1:
Разблокируем элементы формы, чтобы можно было вручную указать правила распределения расходов.
В Документ.РаспределениеПрочихЗатрат.Формы.ФормаНастроекНаФР исправляем указанные процедуры следующим образом:
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьСтраниц(Форма, ИмяРеквизита = Неопределено)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
Если ИмяРеквизита = Неопределено Или ИмяРеквизита = "НаправлениеРаспределения" Тогда
Элементы.ОписаниеПравилаНаФинансовыйРезультат.Видимость =
Не Объект.НаправлениеРаспределения = ПредопределенноеЗначение("Перечисление.НаправлениеРаспределенияПоПодразделениям.ПоКоэффициентам");
Элементы.СтраницаНаправленияДеятельности.Видимость =
Объект.НаправлениеРаспределения = ПредопределенноеЗначение("Перечисление.НаправлениеРаспределенияПоПодразделениям.ПоКоэффициентам");
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьЭлементов(Форма, ИмяРеквизита = Неопределено)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
Если ИмяРеквизита = "НаправлениеРаспределения" Или ИмяРеквизита = Неопределено Тогда
Элементы.ПредставлениеУказанныхНД.Видимость =
Объект.НаправлениеРаспределения = ПредопределенноеЗначение("Перечисление.НаправлениеРаспределенияПоПодразделениям.Указанные");
КонецЕсли;
Если ИмяРеквизита = "ПоказательРаспределения" Или ИмяРеквизита = Неопределено Тогда
Элементы.ГруппаБазаРаспределенияНаФР.Видимость = Форма.ПоказательРаспределения = "ПрямыеЗатраты";
КонецЕсли;
Если ИмяРеквизита = Неопределено Тогда
Элементы.ГруппаВидыУчета.Видимость = Не Форма.УТБазовая;
Элементы.НастройкаРаспределенияНеТребуется.Видимость = Ложь;
Элементы.ГруппаКудаРаспределять.Видимость = Не Элементы.НастройкаРаспределенияНеТребуется.Видимость;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьЭлементов(Форма, ИмяРеквизита = Неопределено)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
Если ИмяРеквизита = Неопределено Тогда
ВариантыРаспределения = ОбщегоНазначенияУТВызовСервера.ЗначенияРеквизитовОбъекта(Объект.СтатьяРасходов,
"ВариантРаспределенияРасходовРегл, ВариантРаспределенияРасходовУпр");
Элементы.ГруппаВидыУчета.Доступность =
ВариантыРаспределения.ВариантРаспределенияРасходовРегл = ВариантыРаспределения.ВариантРаспределенияРасходовУпр;
Элементы.НаправлениеРаспределенияМеждуНД.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
Второй вариант:
Документ.РаспределениеПрочихЗатрат.МодульОбъекта.Процедура ОбработкаЗаполнения() допишем для нашего случая после текста:
Если НазначениеНастройкиРаспределения = Перечисления.НазначениеПравилРаспределенияРасходов.РаспределениеРасходовНаФинансовыйРезультат
И (ЗначениеЗаполнено(НаправлениеДеятельности)
Или (ТипЗнч(АналитикаРасходов) = Тип("СправочникСсылка.НаправленияДеятельности")
И ЗначениеЗаполнено(АналитикаРасходов))
Или Не ПолучитьФункциональнуюОпцию("ФормироватьФинансовыйРезультат")) Тогда
НаправлениеРаспределения = Перечисления.НаправлениеРаспределенияПоПодразделениям.Текущее;
КонецЕсли;
//переопределим наш случай
Если НазначениеНастройкиРаспределения = Перечисления.НазначениеПравилРаспределенияРасходов.РаспределениеРасходовНаФинансовыйРезультат
И (ЗначениеЗаполнено(НаправлениеДеятельности)
Или (ТипЗнч(АналитикаРасходов) = Тип("СправочникСсылка.НаправленияДеятельности")
И ЗначениеЗаполнено(АналитикаРасходов))
И ПолучитьФункциональнуюОпцию("ФормироватьФинансовыйРезультат")) Тогда
НаправлениеРаспределения = Перечисления.НаправлениеРаспределенияПоПодразделениям.Указанные;
КонецЕсли;
//
При варианте 2 удалите старые документы через "обслуживание - удаление объектов" и запустите процедуру закрытия месяца.
Теперь можем исправить правила распределения вручную.
После исправления и проведения всех документов "Распределение расходов" со статусом "Готов к распределению" выполним регламентные операции закрытия месяца.
В результате получим правильное распределение расходов по направлениям деятельности и закрытие месяца без ошибок.
P.S. Вторым вариантом решения проблемы является отказ от использования статей расходов с видом аналитики "Направление деятельности" и не указанным правилом распределения (скриншот 2). Т.е. либо сразу указывать в статьях расходов правила распределения, либо указывать аналитики <> "Направление деятельности", по которым вы сможете вручную указать распределение расходов при формировании документов распределения.
Как обстоят дела в новых версиях, я не знаю.