public void СформироватьКорректирующиеДвиженияРасширеннаяАналитика(/*ДатаНач, ДатаКон, СтруктураПараметров, РегистрУчета, ВидОтраженияВУчете, МенеджерВременныхТаблиц*/)
{
//МассивКодовОперацийСписания = ПолучитьМассивКодовОперацийВнешнегоСписания();
//Запрос = Новый Запрос;
//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
/*Запрос.Текст =
"ВЫБРАТЬ
| УчетЗатрат.АналитикаВидаУчета,
| УчетЗатрат.АналитикаУчетаЗатрат,
| УчетЗатрат.АналитикаУчетаПартий,
| УчетЗатрат.АналитикаРаспределенияЗатрат,
| УчетЗатрат.КорАналитикаВидаУчета,
| УчетЗатрат.КорАналитикаРаспределенияЗатрат,
| УчетЗатрат.КорАналитикаУчетаЗатрат,
| УчетЗатрат.КорАналитикаУчетаПартий,
| УчетЗатрат.КодОперации,
|
| //ДляРеглУчета СУММА(УчетЗатрат.КоличествоНУ) КАК КоличествоНУ,
| //ДляРеглУчета СУММА(УчетЗатрат.ПостояннаяРазница) КАК ПостояннаяРазница,
| //ДляРеглУчета СУММА(УчетЗатрат.СтоимостьНУ) КАК СтоимостьНУ,
|
| СУММА(УчетЗатрат.Количество) КАК Количество,
| СУММА(УчетЗатрат.Стоимость) КАК Стоимость
|
|ПОМЕСТИТЬ ВТДвиженияУчетЗатрат
|ИЗ
| РегистрНакопления.УчетЗатрат%СуффиксРегл% КАК УчетЗатрат
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ОтборПоАналитикеВидовУчета КАК ОтборПоАналитикеВидовУчета
| ПО
| УчетЗатрат.АналитикаВидаУчета = ОтборПоАналитикеВидовУчета.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| КодыОперацийФиксСтоимость КАК КодыОперацийФиксСтоимость
| ПО
| УчетЗатрат.КодОперации = КодыОперацийФиксСтоимость.КодОперации
|
|ГДЕ
| УчетЗатрат.Период МЕЖДУ &ДатаНач И &ДатаКон
| И УчетЗатрат.Активность
| И УчетЗатрат.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| И КодыОперацийФиксСтоимость.КодОперации ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| УчетЗатрат.АналитикаВидаУчета,
| УчетЗатрат.АналитикаУчетаЗатрат,
| УчетЗатрат.АналитикаУчетаПартий,
| УчетЗатрат.АналитикаРаспределенияЗатрат,
| УчетЗатрат.КорАналитикаВидаУчета,
| УчетЗатрат.КорАналитикаРаспределенияЗатрат,
| УчетЗатрат.КорАналитикаУчетаЗатрат,
| УчетЗатрат.КорАналитикаУчетаПартий,
| УчетЗатрат.КодОперации
|
|ИНДЕКСИРОВАТЬ ПО
| УчетЗатрат.АналитикаВидаУчета,
| УчетЗатрат.АналитикаУчетаЗатрат,
| УчетЗатрат.АналитикаУчетаПартий,
| УчетЗатрат.АналитикаРаспределенияЗатрат
|;
|////////////////////////////////////////////////////////////
|
|ВЫБРАТЬ
| УзлыКорректировкиСтоимостиСписания.АналитикаВидаУчета,
| УзлыКорректировкиСтоимостиСписания.АналитикаУчетаЗатрат,
| УзлыКорректировкиСтоимостиСписания.АналитикаУчетаПартий,
| УзлыКорректировкиСтоимостиСписания.АналитикаРаспределенияЗатрат,
| УзлыКорректировкиСтоимостиСписания.НомерУзла КАК НомерУзла,
|
| УчетЗатрат.КорАналитикаВидаУчета КАК КорАналитикаВидаУчета,
| УчетЗатрат.КорАналитикаРаспределенияЗатрат КАК КорАналитикаРаспределенияЗатрат,
| УчетЗатрат.КорАналитикаУчетаЗатрат КАК КорАналитикаУчетаЗатрат,
| УчетЗатрат.КорАналитикаУчетаПартий КАК КорАналитикаУчетаПартий,
| УчетЗатрат.КодОперации КАК КодОперации,
|
| //ДляРеглУчета ВЫБОР КОГДА ЕСТЬNULL(УчетЗатрат.КоличествоНУ, 0) = 0
| //ДляРеглУчета И ОтборПоАналитикеВидовУчетаРазделМПЗ.Ссылка ЕСТЬ NULL
| //ДляРеглУчета ТОГДА
| //ДляРеглУчета ЕСТЬNULL(УчетЗатрат.СтоимостьНУ, 0) + ЕСТЬNULL(УчетЗатрат.ПостояннаяРазница, 0)
| //ДляРеглУчета ИНАЧЕ
| //ДляРеглУчета ЕСТЬNULL(УчетЗатрат.КоличествоНУ, 0)
| //ДляРеглУчета КОНЕЦ КАК КоличествоНУ,
|
| //ДляРеглУчета ЕСТЬNULL(УчетЗатрат.ПостояннаяРазница, 0) КАК ПостояннаяРазница,
| //ДляРеглУчета ЕСТЬNULL(УчетЗатрат.СтоимостьНУ, 0) КАК СтоимостьНУ,
|
| //ДляРеглУчета ЕСТЬNULL(ТаблицаРешений.ПостояннаяРазница, 0) КАК ЦенаПР,
| //ДляРеглУчета ЕСТЬNULL(ТаблицаРешений.СтоимостьНУ, 0) КАК ЦенаНУ,
|
| ВЫБОР КОГДА ЕСТЬNULL(УчетЗатрат.Количество, 0) = 0
| И ОтборПоАналитикеВидовУчетаРазделМПЗ.Ссылка ЕСТЬ NULL
| ТОГДА
| ЕСТЬNULL(УчетЗатрат.Стоимость,0)
| ИНАЧЕ
| ЕСТЬNULL(УчетЗатрат.Количество,0)
| КОНЕЦ КАК Количество,
|
| ЕСТЬNULL(УчетЗатрат.Стоимость,0) КАК Стоимость,
| ЕСТЬNULL(ТаблицаРешений.Стоимость,0) КАК Цена
|ИЗ
| УзлыКорректировкиСтоимостиСписания КАК УзлыКорректировкиСтоимостиСписания
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ВТДвиженияУчетЗатрат КАК УчетЗатрат
| ПО
| УзлыКорректировкиСтоимостиСписания.АналитикаВидаУчета = УчетЗатрат.АналитикаВидаУчета
| И УзлыКорректировкиСтоимостиСписания.АналитикаУчетаЗатрат = УчетЗатрат.АналитикаУчетаЗатрат
| И УзлыКорректировкиСтоимостиСписания.АналитикаУчетаПартий = УчетЗатрат.АналитикаУчетаПартий
| И УзлыКорректировкиСтоимостиСписания.АналитикаРаспределенияЗатрат = УчетЗатрат.АналитикаРаспределенияЗатрат
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ТаблицаРешений КАК ТаблицаРешений
| ПО
| ТаблицаРешений.НомерУзла = УзлыКорректировкиСтоимостиСписания.НомерУзла
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ОтборПоАналитикеВидовУчетаРазделМПЗ КАК ОтборПоАналитикеВидовУчетаРазделМПЗ
| ПО
| ОтборПоАналитикеВидовУчетаРазделМПЗ.Ссылка = УзлыКорректировкиСтоимостиСписания.АналитикаВидаУчета
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| АналитикаВидовУчетаСФиксСтоимостьюСписания КАК АналитикаВидовУчетаСФиксСтоимостьюСписания
| ПО
| УзлыКорректировкиСтоимостиСписания.АналитикаВидаУчета = АналитикаВидовУчетаСФиксСтоимостьюСписания.Ссылка
|ГДЕ
| АналитикаВидовУчетаСФиксСтоимостьюСписания.Ссылка ЕСТЬ NULL
|
|УПОРЯДОЧИТЬ ПО
| НомерУзла УБЫВ
|;
|////////////////////////////////////////////////////////////
|
|УНИЧТОЖИТЬ ВТДвиженияУчетЗатрат";*/
//Запрос.УстановитьПараметр("Регистратор", СтруктураПараметров.Ссылка);
//Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
//Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
//Запрос.Текст = УправлениеЗатратами.ЗаменитьКомментарииВТекстеЗапроса(Запрос.Текст, ВидОтраженияВУчете);
//Результат = Запрос.Выполнить();
if(true/*НЕ Результат.Пустой()*/)
{
//НаборЗаписей = РегистрыНакопления[РегистрУчета].СоздатьНаборЗаписей();
//НаборЗаписей.Отбор.Регистратор.Установить(СтруктураПараметров.Ссылка);
//ВыборкаДетальныеЗаписи = Результат.Выбрать();
//КоличествоЭлементовВНаборе = 0;
//РазмерНабораПриЗаписиРегистровУчетаЗатрат = глЗначениеПеременной("РазмерНабораПриЗаписиРегистровУчетаЗатрат");
while(true/*ВыборкаДетальныеЗаписи.Следующий()*/)
{
//КоличествоЭлементовВНаборе = КоличествоЭлементовВНаборе + 1;
//СуммаПеремещения = ВыборкаДетальныеЗаписи.Цена * ВыборкаДетальныеЗаписи.Количество;
if(true/*ВидОтраженияВУчете = Перечисления.ВидыОтраженияВУчете.ОтражатьВРегламентированномУчете*/)
{
//СуммаПеремещенияПР = ВыборкаДетальныеЗаписи.ЦенаПР * ВыборкаДетальныеЗаписи.КоличествоНУ;
//СуммаПеремещенияНУ = ВыборкаДетальныеЗаписи.ЦенаНУ * ВыборкаДетальныеЗаписи.КоличествоНУ;
}
/*//Скорректируем стоимость списания
*/
//СуммаКорректировки = СуммаПеремещения - ВыборкаДетальныеЗаписи.Стоимость;
if(true/*ВидОтраженияВУчете = Перечисления.ВидыОтраженияВУчете.ОтражатьВРегламентированномУчете*/)
{
//СуммаКорректировкиПР = СуммаПеремещенияПР - ВыборкаДетальныеЗаписи.ПостояннаяРазница;
//СуммаКорректировкиНУ = СуммаПеремещенияНУ - ВыборкаДетальныеЗаписи.СтоимостьНУ;
}
if(true/*Окр(СуммаКорректировки,2) <> 0
ИЛИ Окр(СуммаКорректировкиПР,2) <> 0
ИЛИ Окр(СуммаКорректировкиНУ,2) <> 0*/)
{
//СтруктраСтоимостей = Новый Структура("Стоимость,СтоимостьНУ,ПостояннаяРазница", СуммаКорректировки, СуммаКорректировкиНУ, СуммаКорректировкиПР);
/*СформироватьДвиженияПоРегиструУчетаЗатрат(
НаборЗаписей,
ДатаКон,
СтруктураПараметров.Ссылка,
ВыборкаДетальныеЗаписи.КодОперации,
ВыборкаДетальныеЗаписи,
СтруктраСтоимостей,
МассивКодовОперацийСписания,
ВидОтраженияВУчете);*/
}
/*// Если количество записей в наборе равно установленному размеру набора для записи - запишем набор
*/
if(true/*КоличествоЭлементовВНаборе = РазмерНабораПриЗаписиРегистровУчетаЗатрат*/)
{
//НаборЗаписей.Записать(Ложь);
//НаборЗаписей.Очистить();
//КоличествоЭлементовВНаборе = 0;
}
}
/*;
НаборЗаписей.Записать(Ложь);*/
}
}