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