Автоматическое отражение в регламентированном учете при проведении документа в КА 2.0

Опубликовал Илья Козлов (Dem1urg) в раздел Программирование - Практика программирования

У многих, кто начал работать в КА редакции 2, возник вопрос - почему документы не формируют проводки. Оказалось, что провести документ теперь недостаточно. Нужно еще выполнить отдельную операцию по отражению документа в регламентированном учете. Это можно сделать из формы просмотра проводок, либо из меню Регламентированный учет -> Отражение документов в регл. учете

Обновлено 21.07.

 Да. В КА предусмотрена возможность настроить отражение документов в РУ по расписанию (через регламентное задание). Но это не всегда удобно.

Есть другое решение.

Вариант 1.

Необходимо в общий модуль МодификацияКонфигурацииПереопределяемый в процедуру ПослеЗаписиНаСервере добавить код

	//автоматическое отражение в Регл. учете
	Если ПараметрыЗаписи.Свойство("РежимЗаписи") Тогда
		
		Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение 
			И Метаданные.Обработки.ОтражениеДокументовВРеглУчете.Команды.ПроводкиРеглУчета.ТипПараметраКоманды.СодержитТип(ТипЗнч(ТекущийОбъект.Ссылка))
		Тогда
		
			//если документ может быть отражен в РУ нужно еще проверить, что по нему есть запись в регистре в статусе "К отражению"
			мЗаписи = РегистрыСведений.ОтражениеДокументовВРеглУчете.СоздатьНаборЗаписей();
			мЗаписи.Отбор.Регистратор.Установить(ТекущийОбъект.Ссылка);
			мЗаписи.Прочитать();
			Для каждого мЗапись Из мЗаписи Цикл
			
				//есть запись, проверим статус
				Если мЗапись.Статус = Перечисления.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВРеглУчете Тогда
					
					СтруктураРеквизиты = Новый Структура("Ссылка, Дата, Организация", ТекущийОбъект.Ссылка, ТекущийОбъект.Дата, Неопределено);
					РеглУчетПроведениеСервер.ОтразитьДокумент(СтруктураРеквизиты, Истина);
					
				КонецЕсли;
				
				Прервать;
			
			КонецЦикла;
			
		КонецЕсли;
		
	КонецЕсли;

В результате, после проведения документа будет "как бы нажата" кнопка "Отразить в регл. учете".

К плюсам данного решения можно отнести то, что хоть и вносятся изменения в код, но они делаются в специально отведенном для этого месте. Т.е. проблем с дальнейшим обновлением возникнуть не должно.

К минусам - предложенное решение будет работать только при проведении из формы документа.

Вариант 2.

Создать подписку на событие "ОбработкаПроведения" для документов и в процедуру обработчик добавить код

Процедура ОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
	
	//автоматическое отражение в Регл. учете
	Если Метаданные.Обработки.ОтражениеДокументовВРеглУчете.Команды.ПроводкиРеглУчета.ТипПараметраКоманды.СодержитТип(ТипЗнч(Источник.Ссылка)) Тогда
		
		//если документ может быть отражен в РУ нужно еще проверить, что по нему есть запись в регистре в статусе "К отражению"
		мЗаписи = РегистрыСведений.ОтражениеДокументовВРеглУчете.СоздатьНаборЗаписей();
		мЗаписи.Отбор.Регистратор.Установить(Источник.Ссылка);
		мЗаписи.Прочитать();
		Для каждого мЗапись Из мЗаписи Цикл
			
			//есть запись, проверим статус
			Если мЗапись.Статус = Перечисления.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВРеглУчете Тогда
				
				СтруктураРеквизиты = Новый Структура("Ссылка, Дата, Организация", Источник.Ссылка, Источник.Дата, Неопределено);
				РеглУчетПроведениеСервер.ОтразитьДокумент(СтруктураРеквизиты, Истина);
				
			КонецЕсли;
			
			Прервать;
			
		КонецЦикла;
		
		
	КонецЕсли;
	
КонецПроцедуры

Нужна подписка именно на "ОбработкаПроведения" из-за того, что регистрация документа к отражению в регл. учете выполняется при проведении документа.

Плюсы - работает независимо от места вызова

Минусы - нужно больше изменений в коде. Создать общий модуль, прописать в нем процедуру обработчик, создать подписку и привязать обработчик к событию.

Замечание. Для документа "Счет фактура полученный" вариант с подпиской на событие не работает. Кто знает почему - напшите в комментариях.

Критика приветствуется ))

См. также

Комментарии
1. Алексей Дмитриевцев (alexdm) 20.07.16 11:12 Сейчас в теме
А не лучше подписку на событие сделать свою ? Тогда ведь и программное проведение будет работать...
h00k; roofless; +2 Ответить 1
2. Алексей Ларин (roofless) 17 20.07.16 16:33 Сейчас в теме
(1) alexdm, вот это верное решение)
3. Илья Козлов (Dem1urg) 47 21.07.16 17:32 Сейчас в теме
Публикацию обновил.
Добавил вариант с подпиской на события.
Но оказалось что он тоже имеет свои ограничения.
У меня на КА 2.0.3.143 для документа "Счет-фактура полученный" при вызове из подписки документ в РУ все равно не отражается. А вот при вызове из ПослеЗаписиНаСервере все работает.
5. Пивас Компот (chehlov) 9 09.12.16 08:36 Сейчас в теме
Замечание. Для документа "Счет фактура полученный" вариант с подпиской на событие не работает. Кто знает почему - напишите в комментариях.


это была ошибка 1С и ее исправили (сам не проверил еще):

Ошибка 00-00101305
Код ошибки: 00-00101305
Статус: Исправлена в выпущенной версии Зарегистрирована: 25.11.2016
Исправлена: "1С:ERP Управление предприятием 2.0", версия 2.2.2.113

Описание:

Не выполнялось отражение документов в учете НДС во время актуализации проводок при открытии формы.

Способ исправления:

Выполнять проверку оффлайн расчетов безусловно: в модуле формы "ПроводкиРегламентированногоУчета" обработки "ОтражениеДокументовВРеглУчете" в строке 1592 прописать: "ПараметрыОбработки = Новый Структура("РеквизитыДокумента, ВыполнитьПересчеты", СтруктураРеквизиты, Истина);"
6. Илья Козлов (Dem1urg) 47 09.12.16 23:02 Сейчас в теме
(5) Спасибо за информацию.
Вообще КА получилась очень "тяжелая". И по скорости работы, и по скорости разработки под неё.