Имя: Пароль:
1C
 
Бухгалтерская операция у документа, созданного в расширении
,
0 Ketti
 
24.12.24
14:23
Добрый день! Подскажите пожалуйста.
Имеется документ, созданный в расширении, может ли он формировать движения по регистру бухгалтерии из основной конфигурации?
Согласно описанию функционала расширения на сайте ИТС, документ может формировать движения по любым регистрам, за исключением заимствованных оборотных регистров накопления с включенными агрегатами. Но наверное там есть какой-то секрет, потому что если делать обычным способом, то никакого движения по счетам не формирует. Пробовала по регистру накопления заимствованному — там все работает, а по регистру бухгалтерии — нет. Что я не так делаю...

Процедура ОбработкаПроведения(Отказ, РежимПроведения)	   
	
	СвойстваЛицевогоСчета = ПолучитьСвойстваЛицевогоСчета(ЛицевойСчет.Владелец, Дата);
	МассивДопустимыеРазделыЛС = СвойстваЛицевогоСчета.РазделыЛСпоКФО[Перечисления.КВД.Бюджет];
	Если МассивДопустимыеРазделыЛС.Количество() > 0 Тогда
		РазделЛицевогоСчета = МассивДопустимыеРазделыЛС[0];			
	Иначе
		РазделЛицевогоСчета = Неопределено;
	КонецЕсли; 	
	
	Движения.ЖурналПроводокЕПСБУ.Записывать = Истина; 
	
	ТаблСтр = Расшифровка; 
	
	Для каждого Строка из ТаблСтр Цикл  
		
		Движение = Движения.ЖурналПроводокЕПСБУ.Добавить(); 
		Движение.СчетДт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("501.13");
		Движение.СчетКт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("502.11");
		Движение.Период = Дата;
		Движение.Организация = Организация; 
		Движение.КФО = Перечисления.КВД.Бюджет; 
		Движение.Сумма = Строка.УтвержденоМБТНаГод;
		Движение.КПСДт = Строка.КБКОтправителя;
		Движение.КЭКДт = Справочники.КОСГУ.НайтиПоКоду("251"); 
		Движение.КПСКт = Строка.КБКОтправителя;
		Движение.КЭККт = Справочники.КОСГУ.НайтиПоКоду("251");
		Движение.ЖурналОпераций = Справочники.Журналы.НайтиПоКоду("8");
		Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.РазделыЛицевыхСчетов] = РазделЛицевогоСчета; 
		Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ВидыЦелевыхСредств] = Строка.КодЦели;
		Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.РазделыЛицевыхСчетов] = РазделЛицевогоСчета; 
		Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ПринятыеОбязательства] = Договор; 
		
	КонецЦикла; 
КонецПроцедуры
1 ads55
 
24.12.24
14:28
А где Регистратор движений?

Позаимствуй ещё РС ОперацииДокументов и РС ЗначенияДополнительныхРеквизитовОпераций
2 ads55
 
24.12.24
14:36
И вместо "ПланыСчетов.ЕПСБУ.НайтиПоКоду("501.13");" используй БухгалтерскиеОперации.СЧетПоКоду("501.13", Дата) - исключишь получение счетов, которые уже не используются.

И лучше использовать ПроведениеСервер.ОбработкаПроведения(...)

там все дполнительные данные для проведения добавятся.
3 Ketti
 
24.12.24
16:19
РС ОперацииДокументов и РС ЗначенияДополнительныхРеквизитовОпераций добавила. Изменила ПланыСчетов.ЕПСБУ.НайтиПоКоду("501.13") на  БухгалтерскиеОперации.СЧетПоКоду("501.13", Дата). Ничего не изменилось. То есть все данные к заполнению операции есть (ну как я понимаю), а вот саму операцию не записывает, просто молча записывает документ и все.
Как использовать ПроведениеСервер.ОбработкаПроведения я не разобралась, думала простым способом сформировать проводку пока, но что-то не выходит простым...
4 Волшебник
 
24.12.24
16:22
Поставьте точку останова внутрь цикла. Вызывается ли этот программный код?
5 ads55
 
24.12.24
16:32
(3) Теперь нужно сделать типовую операцию для этого документа. Потом сделать обновление объектов метаданных через /c ЗапуститьОбновлениеИнформационнойБазы

Эту операцию привязать к документу из расширения и заполнить регистры, которые добавила.

Проще - сделай реквизит своего документа - ДокументДвижений и прикрути к нему документ "ОперацияБух", а с ней уже делай, что хочешь. Либо (у тебя же казенное учреждение), к реквизиту ДокументДВижений прикрути "Бюджетные назначения", что бы он после записи твоего документа проводился/распроводился.
В БГУ 2.0 очень сложно с расширениями и ЕПСБУ, почему-то.
6 Бычье сердце
 
24.12.24
16:40
(5)
сделай реквизит своего документа - ДокументДвижений и прикрути к нему документ "ОперацияБух"

Отличная шутка)))
7 Ketti
 
24.12.24
16:47
(4) вызывается
8 ads55
 
24.12.24
16:48
(3) "Изменила ПланыСчетов.ЕПСБУ.НайтиПоКоду("501.13") на  БухгалтерскиеОперации.СЧетПоКоду("501.13", Дата). Ничего не изменилось", а этот момент и не изменится в данной проводке по 500.хх счетам. Есть, допустим, 208.хх, у которых срок действия меняется, например, до 31.12.2021 - один набор субконто и номер счета, а после 01.01.22 - другой набор субконто и счёт.
Это нужно при проведении документа - там проверяется, что правильный счет использован.

Такие вот хитрости в БГУ 2.0 - защищают бухгалтеров от некорректных проводок.
9 ads55
 
24.12.24
17:20
(7) вот так сделай, если быстро надо:
НовыйДок.БюджетныеДанные.СоздатьДокумент();

НовыйДок.ВидДанных = Перечисления.ВидыКБК.КРБ;
НовыйДок.РазделЛицевогоСчета = РеквизитыЛС.РазделЛС;
НовыйДок.ДатаВведенияВДействиеАссигнований = НовыйДок.Дата;
НовыйДок.ДатаВведенияВДействиеЛБО = НовыйДок.ДатаВведенияВДействиеАссигнований;						

НовыйДок.Ассигнования.Очистить();
НовыйДок.ЛБО.Очистить();
НовыйДок.ПОФ.Очистить();

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

НовыйДок.Записать(РежимЗаписиДокумента.Запись);

СтруктЗаписи = РегистрыСведений.ОперацииДокументов.ДанныеДляЗаписи(НовыйДок);
ЗаполнитьЗначенияСвойств(СтруктЗаписи, НовыйДок.Ссылка);
СтруктЗаписи.Документ = НовыйДок.Ссылка;
СтруктЗаписи.СуммаОперации = НовыйДок.АссигнованияНаТекущийГод + НовыйДок.АссигнованияНаВторойПлановыйГод + НовыйДок.АссигнованияНаПервыйПлановыйГод;
СтруктЗаписи.Операция = Справочники.ТиповыеОперации.БюджетныеДанные_ПБС_полученные_от_распорядителя;
СтруктЗаписи.ЕстьПроводки = Истина;

РегистрыСведений.ОперацииДокументов.ЗаписатьОперацию(НовыйДок.Ссылка, СтруктЗаписи, Истина, Ложь);						
НовыйДок.Записать(РежимЗаписиДокумента.Проведение)
10 Ketti
 
24.12.24
17:17
(8) ну да, это я поняла, согласна полностью.
(9) попробую и отпишусь, спасибо!
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс