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

17.12.21

Задачи пользователя - Адаптация типовых решений

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

Скачать исходный код

Наименование Файл Версия Размер
Доработка документа для формирования проводок в регламентированном учете ERP:
.cfe 179,05Kb
12
.cfe 179,05Kb 12 Скачать

Ранее в статье я описывал, как включить документ в основные подсистемы БСП на примере 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.

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

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4642    9    5    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3054    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1680    dimanich70    8    

14

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

27.10.2023    2104    19    avmartynov    14    

44

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2228    25    progmaster    7    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. glek 119 17.12.21 13:29 Сейчас в теме
Хорошая статья, плюс заслуженный. Только это... может я отстал, но разве в УТ формируются проводки?
+
2. maraty 438 17.12.21 13:56 Сейчас в теме
(1)
Хорошая статья, плюс заслуженный. Только это... может я отстал, но разве в УТ формируются проводки?

Вот тут наверное я переборщил :) Сама подсистема формирования движений идентична, а вот проводок действительно не должно быть. Спасибо, исправлю.
+
3. Legavaz 704 07.01.22 09:25 Сейчас в теме
Марат, большое спасибо, за первую и вторую статью! Сэкономил много времени на изучение
+
4. user811769 13 22.02.22 14:46 Сейчас в теме
Спасибо, хорошая статья!

Сегодня решала аналогичную задачу, на вашу статью наткнулась уже после завершения своей работы)

Отмечу два момента:

1) при доработке конфигурации не через расширение, чтобы избежать изменения настроек поддержки, я скопировала команду "ПроводкиРеглУчета" из обработки "ОтражениеДокументовВРеглУчете" и добавила в свой документ (вместо пунктов 3 и 4).

2) мне потребовалось изменить состав плана обмена ОбновлениеИнформационнойБазы и доработать РеглУчетВыборкиСерверПовтИсп.ИспользуемыеТаблицыДляОтраженияТипа(), чтобы обойти ошибку при выполнении РеглУчетПроведениеСервер.ПроверитьБлокировкуВходящихДанных(). У вас такой ошибки не было?
+
8. andrey_sag 47 17.08.23 09:20 Сейчас в теме
(4) Я решил тоже добавить:
В план обмена ОбновлениеИнформационнойБазы добавил свой документ (Авторегистрация Запретить)
В Функцию РеглУчетВыборкиСерверПовтИсп.ИспользуемыеТаблицыДляОтраженияТипа()
добавил свой документ:
ТаблицыДокумента = Новый Массив;
ТаблицыДокумента.Добавить("Документ.МойДок");
ТаблицыТиповДокументов.Вставить("МойДок", ТаблицыДокумента);

Пусть будет для подстраховки. Бывают же ситуации, что отложенные задания еще не отработаны, а тыкать по отражению проводок надо.
user1855722; +1
5. maraty 438 22.02.22 15:45 Сейчас в теме
(4) Если посмотреть процедуру РеглУчетПроведениеСервер.ПроверитьБлокировкуВходящихДанных(), то в ней есть условие
Если ПолучитьФункциональнуюОпцию("ОтложенноеОбновлениеЗавершеноУспешно") Тогда
Возврат; // обновление ИБ завершено полностью
КонецЕсли;

У вас не завершились отложенные обработчики обновления.
Korolev; user811769; +2
6. Biilsun 13.05.22 10:26 Сейчас в теме
Спасибо за статью, в версии 2.5.8.179 , как понял нужно и в регистр сведений "ОтражениеДокументовВМеждународномУчете" добавлять документ в качестве регистратора. так как при проведении происходит блокировка по данному регистру в независимости используется международный учет или нет.
на данный кусок кода наткнулся в функции "РеглУчетПроведениеСервер.ВыполнитьОтражение"

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ОтражениеДокументовВРеглУчете.НаборЗаписей");
ЭлементБлокировки.УстановитьЗначение("Регистратор", ВыборкаСтатусов.Ссылка);
//++ НЕ УТКА
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ОтражениеДокументовВМеждународномУчете.НаборЗаписей");
ЭлементБлокировки.УстановитьЗначение("Регистратор", ВыборкаСтатусов.Ссылка);
//-- НЕ УТКА
ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Хозрасчетный.НаборЗаписей");
ЭлементБлокировки.УстановитьЗначение("Регистратор", ВыборкаСтатусов.Ссылка);

Блокировка.Заблокировать();
Nfyxbr2013; user811769; andrey_sag; +3
7. andrey_sag 47 09.08.23 06:41 Сейчас в теме
В ЕРП 2.5.8. Требуется добавить Функцию ТекстЗапросаВТОтраженияВРеглУчете()

Достаточно:

Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт

Возврат "";

КонецФункции
user811769; user1855722; +2
9. Nfyxbr2013 23.11.23 01:33 Сейчас в теме
Коллеги, доброго времени суток!:)

После добавления реквизита формы "Документ" у обработки в расширение и расширения его типа для нашего документа при нажатии на кнопку формирования движения по регистру бухгалтерии с формы текущего документа, то есть выведенная команда на форму документа, вываливается ошибка с содержанием, значение не является значением объектного типа Пустая(). То есть получается расширенная команда на наш документ не воспроизводится при клике на форму для открытия формы обработки по формированию движений по регистру бухгалтерии. Как подправить?
+
Оставьте свое сообщение