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