V82.ОбщиеМодули.КорректировкаСтоимостиУчетЗатрат.РаспределитьСуммыБезКоличества C# (CSharp) Method

РаспределитьСуммыБезКоличества() public method

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

            СтруктураГрафа = Новый Структура;*/
                //СтруктураГрафа.Вставить("СоответствиеПереходы", 				СоответствиеПереходы);
                //СтруктураГрафа.Вставить("СоответствиеУзлыСЗависшимиКопейками", 	СоответствиеУзлыСЗависшимиКопейками);
                //СтруктураГрафа.Вставить("СоответствиеУзлыДляРаспределения", 	СоответствиеУзлыДляРаспределения);
                //СтруктураГрафа.Вставить("ВидОтраженияВУчете", 					ВидОтраженияВУчете);
                //ТаблицаВолновыхМеток = Новый ТаблицаЗначений;
                //ТаблицаВолновыхМеток.Колонки.Добавить("НомерУзла");
                //ТаблицаВолновыхМеток.Колонки.Добавить("НомерПредыдущегоУзла");
                //ТаблицаВолновыхМеток.Колонки.Добавить("ВолноваяМетка");
                //ТаблицаВолновыхМеток.Колонки.Добавить("СтарыйФронт");
                //СтруктураПараметровКорректирующихДвижений = Новый Структура;
                /*// Определим список ресурсов регистра учета затрат, по которым необходимо распределить зависшие копейки
            */
                //РаспределяемыеРесурсы = Новый Массив;
                if(true/*ВидОтраженияВУчете = Перечисления.ВидыОтраженияВУчете.ОтражатьВНалоговомУчете*/)
                {
                    //РаспределяемыеРесурсы.Добавить("СтоимостьНУ");
                    //РаспределяемыеРесурсы.Добавить("ПостояннаяРазница");
                }
            }
            /*Запрос.Текст =
            "УНИЧТОЖИТЬ УчетЗатратДвиженияРасход";*/
            //Запрос.Выполнить();
            if(true/*НаборЗаписей.Количество() > 0*/)
            {
                //НаборЗаписей.Записать(Ложь);
            }
        }
КорректировкаСтоимостиУчетЗатрат