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*/)
{
//НаборЗаписей.Записать(Ложь);
}
}