Доброго времени суток!!!
Имеется "Производство+Услуги+Бухгалтерия", эта информационная база при проведении документа "Закрытие месяца" все счета скидывает на 20, а потом его распределяет.
У бух-ии появилось желание, чтоб счета 23,25,26 при закрытии месяца распределялись по статьям затрат аналогично 20. Как это сделать?
Имеется "Производство+Услуги+Бухгалтерия", эта информационная база при проведении документа "Закрытие месяца" все счета скидывает на 20, а потом его распределяет.
У бух-ии появилось желание, чтоб счета 23,25,26 при закрытии месяца распределялись по статьям затрат аналогично 20. Как это сделать?
По теме из базы знаний
- Распределение счета 109.81 на 109.61 процентом (для БГУ 1.0)
- Распределение по источникам финансирования по выбранному сотруднику в документе "Начисление зарплаты" конфигурации "1С:Зарплата и кадры бюджетного учреждения 8, редакция 1.0"
- Распределение 25 счета на одну статью затрат счета 20
- Распределение счета 90.07.1 по номенклатурным группам для КА 2
- Распределение счета 44.02 Коммерческие расходы (по номенклатурным группам) для 1С: Бухгалтерии 3.0
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот тебе приблизительный примерчик:
Код |
---|
Функция ПропорцииПоСтатьеЗатрат(Сч,СтЗатр)
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Подразделение","Справочник.Подразделения");
ТЗ.НоваяКолонка("Сальдо","Число");
ТЗ.НоваяКолонка("Коэфф","Число");
БИ=СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьРазделительУчета(Фирма);
БИ.ИспользоватьСубконто(ВидыСубконто.СтатьиЗатрат,СтЗатр,2);
БИ.ИспользоватьСубконто(ВидыСубконто.Подразделения);
БИ.ВыполнитьЗапрос(ДатаДок,ДатаДок,Сч);
БИ.ВыбратьСубконто((ВидыСубконто.Подразделения));
СальдоИ=0;
Пока БИ.ПолучитьСубконто(ВидыСубконто.Подразделения)=1 Цикл
Если БИ.СКД()>0 Тогда
ТЗ.НоваяСтрока();
ТЗ.Подразделение=БИ.Субконто(ВидыСубконто.Подразделения);
ТЗ.Сальдо=БИ.СКД();
СальдоИ=СальдоИ+БИ.СКД();
КонецЕсли;
КонецЦикла;
КоэффИ=0;
Для А=1 По ТЗ.КоличествоСтрок()-1 Цикл
Коэфф=ТЗ.ПолучитьЗначение(А,2)/СальдоИ;
КоэффИ=КоэффИ+Коэфф;
ТЗ.УстановитьЗначение(А,3,Коэфф);
КонецЦикла;
Остаток=1-КоэффИ;
ТЗ.УстановитьЗначение(ТЗ.КоличествоСтрок(),3,Остаток);
Возврат ТЗ;
КонецФункции
Процедура ЗакрытьСчет25() // 25
Сч=СчетПоКоду("25");
ТЗ=СоздатьОбъект("ТаблицаЗначений");
Сообщить("Сворачиваю сальдо на счете "+Сч.Код+"...","!");
ТЗ.Загрузить(глРазвернутоеСальдоЛюбогоСчета(Сч,ДатаДок,ДатаДок,Фирма));
// 1 колонка =Подразделение, 2=СтатьяЗатрат, 10=конечное сальдо
Спр=СоздатьОбъект("Справочник.СтатьиЗатрат");
Спр.НайтиПоКоду("47"); // Все статьи затрат
Все=Спр.ТекущийЭлемент();
СпрП=СоздатьОбъект("Справочник.Подразделения");
СпрП.НайтиПоКоду("99999"); // Условное подразделение
УслПодр=СпрП.ТекущийЭлемент();
// сгоняем развернутое сальдо на одну статью затрат и одно подразделение
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Операция.НоваяПроводка();
Операция.РазделительПоФирме=Фирма;
Операция.Дебет.Счет=Сч;
Операция.Дебет.Подразделения=УслПодр;
Операция.Дебет.СтатьиЗатрат=Все;
Операция.Кредит.Счет=Сч;
Операция.Кредит.Подразделения=ТЗ.Суб1;
Операция.Кредит.СтатьиЗатрат=ТЗ.Суб2;
Операция.Сумма=ТЗ.СальдоКонС;
КонецЦикла;
Операция.Записать();
Сообщить("Выполняю проводки на счет 20...","!");
// разносим сальдо пропорционально ЗП на подразделениях
БИ=СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьРазделительУчета(Фирма);
БИ.ВыполнитьЗапрос(ДатаДок,ДатаДок,Сч);
СальдоСч=БИ.СКД();
Спр.НайтиПоКоду("9");//Основная заработная плата
СтЗатр=Спр.ТекущийЭлемент();
Сч20=СчетПоКоду("20.1");
ТЗ.Очистить();
ТЗ.Загрузить( ПропорцииПоСтатьеЗатрат(Сч20,СтЗатр));
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Операция.НоваяПроводка();
Операция.РазделительПоФирме=Фирма;
Операция.Дебет.Счет=Сч20;
Подр=ТЗ.Подразделение;// запомним, чтобы хвосты потом свалить
Операция.Дебет.Подразделения=Подр;
Операция.Дебет.СтатьиЗатрат=Общепроизводственные; // это глоб переменная гл. модуля
Операция.Кредит.Счет=Сч;
Операция.Кредит.Подразделения=УслПодр;
Операция.Кредит.СтатьиЗатрат=Все;
Операция.Сумма=Окр(СальдоСч*ТЗ.Коэфф,2);
КонецЦикла;
Операция.Записать();
// подчистка хвостов
ТЗ.Очистить();
ТЗ.Загрузить(глРазвернутоеСальдоЛюбогоСчета(Сч,ДатаДок,ДатаДок,Фирма));
Сообщить("Подчищаю хвосты от округления...","!");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Если ТЗ.СальдоКонС>0 Тогда
Операция.НоваяПроводка();
Операция.РазделительПоФирме=Фирма;
Операция.Дебет.Счет=Сч20;
Операция.Дебет.Подразделения=Подр;
Операция.Дебет.СтатьиЗатрат=Общепроизводственные; // это глоб переменная гл. модуля
Операция.Кредит.Счет=Сч;
Операция.Кредит.Подразделения=УслПодр;
Операция.Кредит.СтатьиЗатрат=Все;
Операция.Сумма=ТЗ.СальдоКонС;
КонецЕсли;
КонецЦикла;
Операция.Записать();
Сообщить("Счет закрыт!","!!!");
КонецПроцедуры
Показать полностью |
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот