Каталог решений - Доработка документа для формирования проводок в регламентированном учете ERP

Доработка документа для формирования проводок в регламентированном учете ERP

Доработка документа для формирования проводок в регламентированном учете ERP

В наличии

Статья о том, как включить разработанный документ в подсистему формирования проводок в конфигурации ERP

Категория:

Описание

Ранее в статье я описывал, как включить документ в основные подсистемы БСП на примере ERP, а также сделать формирование движений через механизмы ERP.

Но не затронул такой механизм, как формирование проводок через регистры сведений "Отражение документов в регламентированном учете" и регистре Хозрасчетный соответственно.

Есть разработанный документ, в моем случае "РасшСт_ДополнительныйРасходТоваров". Он уже делает движения по другим регистрам, поэтому мне не нужно для него прописывать процедуры формирования движений в модуле менеджера.

Напомню, что для этого используется подсистема формирования движений.

  
  Процедура ОбработкаПроведения(Отказ, РежимПроведения)
  	
  	ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
  	
  КонецПроцедуры

 

1. Документ должен являться регистратором следующих регистров

Регистр сведений ОтражениеДокументовВРеглУчете

Регистр сведений ОтражениеДокументовВМеждународномУчете

Регистр бухгалтерии Хозрасчетный

Соответственно добавляем их в расширение и в документ "РасшСт_ДополнительныйРасходТоваров" добавляю движения по этим регистрам.

2. Добавляем в модуль регистра бухгалтерии Хозрасчетный дополнительное условие и ключ.

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

Это необходимо, чтобы отключить проведение документа по подсистеме бюджетирования. Есть более сложный вариант, путем добавления документа регистратором регистра накопления "ФактическиеДанныеБюджетирования" и еще кучей мелких доработок, но представленный выше вариант проще.

3. Добавляем в расширение обработку "ОтражениеДокументовВРеглУчете" и две её формы "ПроводкиРегламентированногоУчета" и "ПроводкиРегламентированногоУчетаЧтение".

 

 

Для корректной работы обработки необходимо в указанных выше формах обработки, добавить реквизит формы Документ в расширение и расширить его тип для нашего документа.

 

 

4. Добавить в форму документа команду формирования проводок

 

Описание команды 
ИмяПроводкиРеглУчета
ЗаголовокПроводки регламентированного учета
ДействиеПроводкиРеглУчета
КартинкаЖурналПроводок (добавить в расширение из типовой конфигурации)

 

И выводим эту команду в командную панель

 

 

В модуле формы добавляем обработчик команды

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

 

5. Перейдем к модификации модуля менеджера документа.

5.1 В процедуру ЗарегистрироватьУчетныеМеханизмы добавить учетный механизм по регл. учету.

  	МеханизмыДокумента.Добавить("РегламентированныйУчет");
  

 

5.2 В модуле менеджера модифицируем процедуру "ДанныеДокументаДляПроведения". 

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

  		ТекстЗапросаТаблицаОтражениеДокументовВРеглУчете(ТекстыЗапроса, Регистры);
  
   
  Процедура ТекстЗапросаТаблицаОтражениеДокументовВРеглУчете(ТекстыЗапроса, Регистры)
  	
  	ИмяРегистра = "ОтражениеДокументовВРеглУчете";
  	
  	ТекстЗапроса =
  	"ВЫБРАТЬ
  	|	&Период КАК Период,
  	|	&Организация КАК Организация,
  	|	НАЧАЛОПЕРИОДА(&Период, ДЕНЬ) КАК ДатаОтражения";
  	
  	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
  	
  КонецПроцедуры
  

 

Добавить процедуру формирования непосредственно проводок.

  
  Функция ТекстОтраженияВРеглУчете() Экспорт
  	
  	ТекстЗапроса = "
  	|ВЫБРАТЬ
  	|
  	|	Операция.Ссылка КАК Ссылка,
  	|	Операция.Дата КАК Период,
  	|	Операция.Организация КАК Организация,
  	|	НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
  	|
  	|	ЕСТЬNULL(Суммы.СуммаБезНДСРегл, 0) КАК Сумма,
  	|	0 КАК СуммаУУ,
  	|
  	|	НЕОПРЕДЕЛЕНО КАК ВидСчетаДт,
  	|	НЕОПРЕДЕЛЕНО КАК АналитикаУчетаДт,
  	|	НЕОПРЕДЕЛЕНО КАК МестоУчетаДт,
  	|
  	|	ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаДт,
  	|	Операция.Подразделение КАК ПодразделениеДт,
  	|	НЕОПРЕДЕЛЕНО КАК НаправлениеДеятельностиДт,
  	|
  	|	ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТМЦнаскладах) КАК СчетДт,
  	|	Строки.Номенклатура КАК СубконтоДт1,
  	|	НЕОПРЕДЕЛЕНО КАК СубконтоДт2,
  	|	НЕОПРЕДЕЛЕНО КАК СубконтоДт3,
  	|
  	|	0 КАК ВалютнаяСуммаДт,
  	|	Строки.Количество КАК КоличествоДт,
  	|	0 КАК СуммаНУДт,
  	|	0 КАК СуммаПРДт,
  	|	0 КАК СуммаВРДт,
  	|
  	|	НЕОПРЕДЕЛЕНО КАК ВидСчетаКт,
  	|	НЕОПРЕДЕЛЕНО КАК АналитикаУчетаКт,
  	|	НЕОПРЕДЕЛЕНО КАК МестоУчетаКт,
  	|
  	|	ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаКт,
  	|	Операция.Подразделение КАК ПодразделениеКт,
  	|	НЕОПРЕДЕЛЕНО КАК НаправлениеДеятельностиКт,
  	|
  	|	ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка) КАК СчетКт,
  	|	НЕОПРЕДЕЛЕНО КАК СубконтоКт1,
  	|	НЕОПРЕДЕЛЕНО КАК СубконтоКт2,
  	|	НЕОПРЕДЕЛЕНО КАК СубконтоКт3,
  	|
  	|	0 КАК ВалютнаяСуммаКт,
  	|	Строки.Количество КАК КоличествоКт,
  	|	0 КАК СуммаНУКт,
  	|	0 КАК СуммаПРКт,
  	|	0 КАК СуммаВРКт,
  	|	""Пример формирования проводки"" КАК Содержание
  	|
  	|ИЗ
  	|	ДокументыКОтражению КАК ДокументыКОтражению
  	|	
  	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ
  	|		Документ.РасшСт_ДополнительныйРасходТоваров КАК Операция
  	|	ПО
  	|		ДокументыКОтражению.Ссылка = Операция.Ссылка
  	|	
  	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ
  	|		Документ.РасшСт_ДополнительныйРасходТоваров.Товары КАК Строки
  	|	ПО 
  	|		(Строки.Ссылка = Операция.Ссылка)
  	|	
  	|	ЛЕВОЕ СОЕДИНЕНИЕ 
  	|		РегистрСведений.СуммыДокументовВВалютахУчета КАК Суммы
  	|	ПО 
  	|		Строки.Ссылка = Суммы.Регистратор 
  	|		И Суммы.СуммаБезНДСРегл <> 0
  	|";
  
  	ТекстыОтражения = Новый Массив;
  	ТекстыОтражения.Добавить(ТекстЗапроса);
  	
  	Возврат СтрСоединить(ТекстыОтражения, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
  	
  КонецФункции
  

 

Собственно этих доработок достаточно, чтобы базово прописать для документа механизм формирования проводок.

Как это работает. Мы проводим документ. У нас регистрируется запись, что документ необходимо отразить в регл. учете.

 

 

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

 

 

Но тут уже работают типовые алгоритмы и подчиняются типовым правилам формирования проводок. В том смысле, что доступна ручная корректировка проводок или работает автоматическое формирование проводок.

В данном примере я использовал забалансовый счет 002.01. Прошу не судить строго, это просто пример, а не практическое пособие как правильно использовать забалансовые счета. Так же в моем документе есть только количество. 

Как вы видите, в функции ТекстОтраженияВРеглУчете можно собрать произвольный запрос для формирования проводок на основе  не только документа.

С каждый релизом платформы, в расширениях появляется все больше возможностей. Возможно в свежих версиях платформы (>=8.3.20), не обязательно добавлять команду формирования проводок в документ, а будет достаточно расширить тип типовой команды.

Писалось и тестировалось на релизе 1С:ERP Управление предприятием 2 (2.5.7.201), платформа 8.3.20.1613.

has been added to your cart:
Оформление заказа