Решение:
Данная задача является своеобразным гибридом задач 2.10 и 2.12. К решению задачи 2.10 добавляем реализацию документа "Списание" из задачи 2.12.
Немножко другое условие списания. Для реализации нам потребуется.
- Добавить справочник "Номенклатурные группы".
- В справочник номенклатура добавить новый реквизит этого типа.(Номенклатурная группа)
- Добавить новый РС "Данные организации" с периодичностью год и измерением "Номенклатурная группа" и ресурсом "Процент распределения".
- Обработка проведения примет вид:
Движения.Управленческий.Записывать = Истина;
Движения.Управленческий.Очистить();
Движения.Управленческий.Записать();
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Управленческий");
ЭлементБлокировки.УстановитьЗначение("Счет", ПланыСчетов.Управленческий.Товары);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Запрос = Новый("Запрос");
Запрос.Текст ="ВЫБРАТЬ
| УправленческийОстатки.Субконто1 КАК Номенклатура,
| УправленческийОстатки.Субконто2 КАК СрокГодности,
| ЕСТЬNULL(УправленческийОстатки.СуммаОстатокДт, 0) КАК ОстатокСум,
| ЕСТЬNULL(УправленческийОстатки.КоличествоОстатокДт, 0) КАК ОстатокКол,
| УправленческийОстатки.Субконто1.Номенклатурнаягруппа КАК Номенклатурнаягруппа,
| ЕСТЬNULL(ДанныеСписанияСрезПоследних.ПроцентРаспределения, 0) КАК Процент
|ИЗ
| РегистрБухгалтерии.Управленческий.Остатки(&ТочкаИтогов, Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары), &мсубконто, Субконто2 <= &ТочкаИтогов) КАК УправленческийОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеСписания.СрезПоследних(&ТочкаИтогов, ) КАК ДанныеСписанияСрезПоследних
| ПО УправленческийОстатки.Субконто1.Номенклатурнаягруппа = ДанныеСписанияСрезПоследних.Группа";
Запрос.УстановитьПараметр("ТочкаИтогов", КонецДня(Дата));
мсубконто = Новый("Массив");
мсубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
мсубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.СрокГодности);
Запрос.УстановитьПараметр("мсубконто", мсубконто);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.Управленческий.Добавить();
Движение.Период =Дата;
СуммаСписания = Выборка.ОстатокСум * (Выборка.Процент/100);
Движение.Количество = Выборка.ОстатокКол;
Движение.СчетДт = ПланыСчетов.Управленческий.ОбщехозяйственныеЗатраты;
Движение.СчетКт = ПланыСчетов.Управленческий.Товары;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.СрокГодности] = Выборка.СрокГодности;
Движение.Сумма = СуммаСписания;
Если Выборка.Процент <> 100 Тогда
Движение = Движения.Управленческий.Добавить();
Движение.Период =Дата;
СуммаСписания = Выборка.ОстатокСум - СуммаСписания;
Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.СчетКт = ПланыСчетов.Управленческий.Товары;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.СрокГодности] = Выборка.СрокГодности;
Движение.Сумма = СуммаСписания;
КонецЕсли;
КонецЦикла;
Движения.Управленческий.Записать();
Необходимо добавить отчет.
Для того чтобы в отчет не попадали движения из документа "расходная накладная", то добавим условие
ГДЕ ТИПЗНАЧЕНИЯ(УправленческийОборотыДтКт.Регистратор) <> ТИП(Документ.РасходнаяНакладная)
ниже весь текст запроса:
ВЫБРАТЬ
УправленческийОборотыДтКт.СубконтоКт1 КАК Номенклатура,
СУММА(ЕСТЬNULL(УправленческийОборотыДтКт.КоличествоОборот, 0)) КАК Количество,
СУММА(ВЫБОР
КОГДА УправленческийОборотыДтКт.СчетДт = ЗНАЧЕНИЕ(Плансчетов.Управленческий.ПрибылиУбытки)
ТОГДА УправленческийОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ) КАК СуммаУбытков,
СУММА(ВЫБОР
КОГДА УправленческийОборотыДтКт.СчетДт = ЗНАЧЕНИЕ(Плансчетов.Управленческий.ОбщехозяйственныеЗатраты)
ТОГДА УправленческийОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ) КАК СуммаЗатрат
ИЗ
РегистрБухгалтерии.Управленческий.ОборотыДтКт(
&ПериодНачало,
&ПериодКонец,
Авто,
СчетДт = ЗНАЧЕНИЕ(Плансчетов.Управленческий.ПрибылиУбытки)
ИЛИ СчетДт = ЗНАЧЕНИЕ(Плансчетов.Управленческий.ОбщехозяйственныеЗатраты),
,
СчетКт = ЗНАЧЕНИЕ(Плансчетов.Управленческий.Товары),
&мСубконто,
) КАК УправленческийОборотыДтКт
ГДЕ
ТИПЗНАЧЕНИЯ(УправленческийОборотыДтКт.Регистратор) <> ТИП(Документ.РасходнаяНакладная)
СГРУППИРОВАТЬ ПО
УправленческийОборотыДтКт.СубконтоКт1
Скачивайте наздоровье)
Надеюсь Вам также будет интересен
Этот видеокурс поможет Вам:
- Избежать типичных и нетипичные ошибок в 1С:Бухгалтерия 8;
- Cэкономить Вам время и силы;
- Более уверенно работать с программой.
Комментариев нет:
Отправить комментарий