Как программно скорректировать регистр затрат регл в УПП?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Типовой формирователь движений ориентируется на правила, прописанные в макетах "ПараметрыФормированияДвижений" регистров накопления УчетЗатрат, УчетЗатратРегл.
Движения, если мне не изменяет память, формируются по подписке на событие "ПриПроведенииРасширеннаяАналитикаЗапасовИзменениеСостояния" , куда можно добавить и свой документ.
Данные берутся из таблиц, подготовленных в модуле документа и переданных в подписку через Объект.ДополнительныеСвойства.
Так что вам потребуется немного изменить правила, возможно - в модуле объекта выборку таблиц, и, наверное, все получится. Обновляться, правда, будет сложнее.
Есть функции произвольного формирования ключей РАУЗ по заданным параметрам. Можете сделать абсолютно свою подписку "допроведения" документа, сгенерировать нужные ключи, сделать все движения по РАУЗ и проводки, удалив те, которые вас не устраивали после отработки типового механизма.
Но если я правильно помню вашу задачу, она была какая-то странная, про отнесение чего-то там из ГТД на 44 счет. Если 1С такую возможность штатно не сделала, возможно это неспроста, и надо бы почитать нормативку, и, возможно, пропатчить заказчика.
Типовой формирователь движений ориентируется на правила, прописанные в макетах "ПараметрыФормированияДвижений" регистров накопления УчетЗатрат, УчетЗатратРегл.
Движения, если мне не изменяет память, формируются по подписке на событие "ПриПроведенииРасширеннаяАналитикаЗапасовИзменениеСостояния"
Данные берутся из таблиц, подготовленных в модуле документа и переданных в подписку через Объект.ДополнительныеСвойства.
Так что вам потребуется немного изменить правила, возможно - в модуле объекта выборку таблиц, и, наверное, все получится. Обновляться, правда, будет сложнее.
Есть функции произвольного формирования ключей РАУЗ по заданным параметрам. Можете сделать абсолютно свою подписку "допроведения" документа, сгенерировать нужные ключи, сделать все движения по РАУЗ и проводки, удалив те, которые вас не устраивали после отработки типового механизма.
Но если я правильно помню вашу задачу, она была какая-то странная, про отнесение чего-то там из ГТД на 44 счет. Если 1С такую возможность штатно не сделала, возможно это неспроста, и надо бы почитать нормативку, и, возможно, пропатчить заказчика.
Ура! после долгих мучений и тугодумства поняла, как можно работать с регистрами затрат.
Но остались вопросы....а как все-таки в типовом варианте идет запись в регистр. Ведь при проведении документа в функцию РасширеннаяАналитикаУчета.ПолучитьСоздатьКлючАналитики программа не заходит.
Привожу кусок кода. Функцию пришлось пока сделать экспортной.
//меняю запись
нбр = РегистрыНакопления.УчетЗатратРегл.СоздатьНаборЗаписей();
нбр.Отбор.Регистратор.Установить(Источник.Ссылка);
нбр.Прочитать();
сч = 0;
Для Каждого ТекДвижение Из нбр Цикл
ТекДвижение.СтоимостьНУ = 0;
ТекДвижение.ПостояннаяРазница = ТекДвижение.Стоимость;
сч = сч + ТекДвижение.Стоимость;
КонецЦикла;
//добавляю запись
//СтруктураИзмерений - набор измерений для регистра
//МассивИзмерений нужен для формирования наименования элемента справочника
СтруктураИзмерений = новый Структура;
СтруктураИзмерений.Вставить("РазделУчета", Перечисления.РазделыУчета.Затраты);
СтруктураИзмерений.Вставить("Организация", Источник.Организация);
СтруктураИзмерений.Вставить("СчетУчетаНУ", ПланыСчетов.Налоговый.ИздержкиОбращения);
МассивИзмерений = новый Массив;
МассивИзмерений.Добавить("РазделУчета");
МассивИзмерений.Добавить("Организация");
МассивИзмерений.Добавить("СчетУчетаНУ");
АналитикаВидаУчета = РасширеннаяАналитикаУчета.ПолучитьСоздатьКлючАналитики(СтруктураИзмерений, МассивИзмерений, "КлючиАналитикиВидаУчета", "АналитикаВидаУчета",Неопределено);
СтруктураИзмерений = новый Структура;
СтруктураИзмерений.Вставить("СтатьяЗатрат", Справочники.СтатьиЗатрат.НайтиПоНаименованию("Таможенная пошлина"));
СтруктураИзмерений.Вставить("ХарактерЗатрат", Перечисления.ХарактерЗатрат.ИздержкиОбращения);
МассивИзмерений = новый Массив;
МассивИзмерений.Добавить("СтатьяЗатрат");
МассивИзмерений.Добавить("ХарактерЗатрат");
АналитикаУчетаЗатрат = РасширеннаяАналитикаУчета.ПолучитьСоздатьКлючАналитики(СтруктураИзмерений, МассивИзмерений, "КлючиАналитикиУчетаЗатрат", "АналитикаУчетаЗатрат",Неопределено );
зп = нбр.ДобавитьПриход();
зп.Активность=Истина;
зп.Период = Источник.Дата;
зп.Регистратор = Источник.Ссылка;
зп.АналитикаВидаУчета = АналитикаВидаУчета;
зп.АналитикаУчетаЗатрат = АналитикаУчетаЗатрат;
зп.КодОперации = Перечисления.КодыОперацийЗатраты.ПрочиеПостоянныеЗатраты;
зп.СтоимостьНУ = сч;
зп.ПостояннаяРазница = сч;
нбр.Записать();
Но остались вопросы....а как все-таки в типовом варианте идет запись в регистр. Ведь при проведении документа в функцию РасширеннаяАналитикаУчета.ПолучитьСоздатьКлючАналитики программа не заходит.
Привожу кусок кода. Функцию пришлось пока сделать экспортной.
//меняю запись
нбр = РегистрыНакопления.УчетЗатратРегл.СоздатьНаборЗаписей();
нбр.Отбор.Регистратор.Установить(Источник.Ссылка);
нбр.Прочитать();
сч = 0;
Для Каждого ТекДвижение Из нбр Цикл
ТекДвижение.СтоимостьНУ = 0;
ТекДвижение.ПостояннаяРазница = ТекДвижение.Стоимость;
сч = сч + ТекДвижение.Стоимость;
КонецЦикла;
//добавляю запись
//СтруктураИзмерений - набор измерений для регистра
//МассивИзмерений нужен для формирования наименования элемента справочника
СтруктураИзмерений = новый Структура;
СтруктураИзмерений.Вставить("РазделУчета", Перечисления.РазделыУчета.Затраты);
СтруктураИзмерений.Вставить("Организация", Источник.Организация);
СтруктураИзмерений.Вставить("СчетУчетаНУ", ПланыСчетов.Налоговый.ИздержкиОбращения);
МассивИзмерений = новый Массив;
МассивИзмерений.Добавить("РазделУчета");
МассивИзмерений.Добавить("Организация");
МассивИзмерений.Добавить("СчетУчетаНУ");
АналитикаВидаУчета = РасширеннаяАналитикаУчета.ПолучитьСоздатьКлючАналитики(СтруктураИзмерений, МассивИзмерений, "КлючиАналитикиВидаУчета", "АналитикаВидаУчета",Неопределено);
СтруктураИзмерений = новый Структура;
СтруктураИзмерений.Вставить("СтатьяЗатрат", Справочники.СтатьиЗатрат.НайтиПоНаименованию("Таможенная пошлина"));
СтруктураИзмерений.Вставить("ХарактерЗатрат", Перечисления.ХарактерЗатрат.ИздержкиОбращения);
МассивИзмерений = новый Массив;
МассивИзмерений.Добавить("СтатьяЗатрат");
МассивИзмерений.Добавить("ХарактерЗатрат");
АналитикаУчетаЗатрат = РасширеннаяАналитикаУчета.ПолучитьСоздатьКлючАналитики(СтруктураИзмерений, МассивИзмерений, "КлючиАналитикиУчетаЗатрат", "АналитикаУчетаЗатрат",Неопределено );
зп = нбр.ДобавитьПриход();
зп.Активность=Истина;
зп.Период = Источник.Дата;
зп.Регистратор = Источник.Ссылка;
зп.АналитикаВидаУчета = АналитикаВидаУчета;
зп.АналитикаУчетаЗатрат = АналитикаУчетаЗатрат;
зп.КодОперации = Перечисления.КодыОперацийЗатраты.ПрочиеПостоянныеЗатраты;
зп.СтоимостьНУ = сч;
зп.ПостояннаяРазница = сч;
нбр.Записать();
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот