Кто изменял закрытие 25 счета отзовитесь! Интересуют проводки по НУ!

Новая тема
"На 25 счете есть затраты по разным подразделениям. При закрытии месяца надо распределить эти затраты пропорционально зарплате по подразделениям. Стандартно документ закрытие месяца делает списание «само на себя», а нам надо, чтобы затраты по некоторым подразделениям распределялись между определенными подразделениями. Например затраты по цеху 1 списать на участок 2, участок 3, участок 5, а  затраты по цеху 2 списать  на участок 1, участок 4, участок 6. Т.е. это отдельный документ, который проводится перед документом «Закрытие месяца». А после этого документ закрытие месяца уже закрывает то, что осталось на 25 счете стандартно «само на себя». Т.е. скажем к затратам на 20 счете по участку 2 которые появились от цеха 1 добавятся непосредственные затраты участка 2.
Все бы ничего, если бы не налоговый учет. Описанную выше схему по бух. учету я как смог реализовал, в 7-ке я это уже делал но без реализации налогового учета. Из документа закрытие месяца ничего не понятно как эти налоговые проводки устроены. получаесят что по БУ одна проводка а по НУ три: сприсанеие косвенных расходов, распределение ОХР и ОПР и корректировна выпуска продукции по моему. Может у кого есть предложения или наработки.
Вот как выглядит то, о чем я говорю для бух учета. На форме документа выбираем организацию и в табличной части подразделения, которые закрываются нестандартно. В модуле тупо прописано, какие подразделения, на какие закрываются, так как это будет неизменно.
В запросе пока период не определен.
Перем Операция;
Функция ОпределитьБазуБУ(Подразделение) //Определяем базу, т.е. з/п
Запрос=Новый Запрос;
Запрос.УстановитьПараметр("Счет20", ПланыСчетов.Хозрасчетный.ОсновноеПроизводство);
Запрос.УстановитьПараметр("счет70", ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда);    
Запрос.УстановитьПараметр("Подразделение", Подразделение);
Запрос.УстановитьПараметр("Организация", Организация);

Запрос.Текст=
"ВЫБРАТЬ
|    ХозрасчетныйОбороты.Счет,
|    ХозрасчетныйОбороты.КорСчет,
|    ХозрасчетныйОбороты.Субконто1 как Подразделение,
|    ХозрасчетныйОбороты.Субконто2 как Номенклатура,
|    ХозрасчетныйОбороты.Субконто3 как СтатьиЗатрат,
| ХозрасчетныйОбороты.СуммаОборот  как Сумма,
|    ХозрасчетныйОбороты.Организация
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Обороты(, , , Счет = &Счет20, &ТипыСубконт, , КорСчет = &Счет70) КАК ХозрасчетныйОбороты
|Где
|    Субконто1 = &Подразделение

|    Организация = &Организация";

ТипыСубконт=Новый Массив;
ТипыСубконт.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Подразделения);
ТипыСубконт.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы);
ТипыСубконт.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат);
Запрос.УстановитьПараметр("ТипыСубконт",ТипыСубконт);
РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса;

КонецФункции

Процедура РаспределитьРаспределитьБУ(БазаРаспределения, ТаблицаБазыРаспределения, СуммаСписания, СтВ)
   
Для каждого Эл из ТаблицаБазыРаспределения Цикл
Коэффициент = Число(Эл.Сумма)/Число(БазаРаспределения);
Сообщить(СуммаСписания*Коэффициент);

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

//Записываем порциями(в случае большого количество проводок)
//Если Операция.Количество() >= 10000 Тогда
//Операция.Записать(Ложь);
//КонецЕсли;
КонецЦикла;
КонецПроцедуры

Процедура РаспределитьБУ(СуммаСписания,Ств,Подр1,Подр2,Подр3)

ТаблицаБазыРаспределения1 =  ОпределитьБазуБУ(Подр1).Выгрузить();
БазаРаспределения1 = ТаблицаБазыРаспределения1.Итог("Сумма");
Сообщить("База1 "+БазаРаспределения1);

ТаблицаБазыРаспределения2 =  ОпределитьБазуБУ(Подр2).Выгрузить();
БазаРаспределения2 = ТаблицаБазыРаспределения2.Итог("Сумма");
Сообщить("База2 "+БазаРаспределения2);

ТаблицаБазыРаспределения3 =  ОпределитьБазуБУ(Подр3).Выгрузить();
БазаРаспределения3 = ТаблицаБазыРаспределения3.Итог("Сумма");
Сообщить("База3 "+БазаРаспределения3);

База = БазаРаспределения1+БазаРаспределения2+БазаРаспределения3;
КБаза1 = БазаРаспределения1/База;
КБаза2 = БазаРаспределения2/База;
КБаза3 = БазаРаспределения3/База;
СуммаСписания1=СуммаСписания*КБаза1;
СуммаСписания2=СуммаСписания*КБаза2;
СуммаСписания3=СуммаСписания*КБаза3;
Операция = Движения.Хозрасчетный;

Если БазаРаспределения1 > 0 Тогда
РаспределитьРаспределитьБУ(БазаРаспределения1, ТаблицаБазыРаспределения1, СуммаСписания1, СтВ)
КонецЕсли;

Если БазаРаспределения2 > 0 Тогда
РаспределитьРаспределитьБУ(БазаРаспределения2, ТаблицаБазыРаспределения2, СуммаСписания2, СтВ)
КонецЕсли;

Если БазаРаспределения3 > 0 Тогда
РаспределитьРаспределитьБУ(БазаРаспределения3, ТаблицаБазыРаспределения3, СуммаСписания3, СтВ)
КонецЕсли;

КонецПроцедуры

Процедура ОбработкаПроведения(Отказ)
Отказ = Ложь;
Для Каждого Ст из тчПодразделения Цикл
Запрос=Новый Запрос;
Запрос.УстановитьПараметр("Счет25", ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходы);
Запрос.УстановитьПараметр("Подразделение", Ст.Подразделение);
Запрос.УстановитьПараметр("Организация", Организация);

Запрос.Текст=
"ВЫБРАТЬ
|    ХозрасчетныйОбороты.Счет,
|    ХозрасчетныйОбороты.Субконто1 как Подразделение,
|    ХозрасчетныйОбороты.Субконто2 как СтатьиЗатрат,
| ХозрасчетныйОбороты.СуммаОборот  как Сумма,
| ХозрасчетныйОбороты.Организация
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Обороты(, , , Счет = &Счет25, &ТипыСубконт) КАК ХозрасчетныйОбороты
|Где
|    Субконто1 = &Подразделение

| Организация =  &Организация";

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

Для Каждого Ств Из ТаблицаЗапроса Цикл

Если Ст.Подразделение.код = "000000175" Тогда
Подр1=Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000001");
Подр2=Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000002");
Подр3=Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000003");
РаспределитьБУ(СуммаСписания,Ств,Подр1,Подр2,Подр3);
КонецЕсли;

Если Ст.Подразделение.код = "000000176" Тогда
Подр1=Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000004");
Подр2=Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000005");
Подр3=Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000006");
РаспределитьБУ(СуммаСписания,Ств,Подр1,Подр2,Подр3);
КонецЕсли;

//Если Ст.Подразделение.код = "000000177" Тогда
// Подр1=Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000007");
// Подр2=Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000008");
// Подр3=Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000009");
// РаспределитьБУ(СуммаСписания,Ств,Подр1,Подр2,Подр3);
//КонецЕсли;

КонецЦикла;
КонецЦикла;

Если СуммаСписания >0 Тогда
Операция.Записать(Истина);
Иначе
сообщить(" " + СуммаСписания);
КонецЕсли;
КонецПроцедуры


"
Здравствуйте, а можете поподробнее описать куда вставляли модуль и что добавляли в форму документа. Заранее благодарна.
Читают тему
(гостей: 1)

Быстрый переход