V82.ОбщиеМодули.ПроцедурыРасчетаСебестоимостиРасширеннаяАналитика.ЗаполнитьСпособыРаспределенияЗатратРегл C# (CSharp) Method

ЗаполнитьСпособыРаспределенияЗатратРегл() public method

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