5
Fratz
24.11.14
✎
16:12
|
(4) Процедура Отчет(ТабДок) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОстаткиПоАрендеОстаткиИОбороты.Номенклатура КАК Номенклатура,
| ОстаткиПоАрендеОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоОстаток,
| ОстаткиПоАрендеОстаткиИОбороты.Склад КАК Склад
|ИЗ
| РегистрНакопления.ОстаткиПоАренде.ОстаткиИОбороты(, &КонДата, , , ) КАК ОстаткиПоАрендеОстаткиИОбороты
|ИТОГИ
| СУММА(КоличествоОстаток)
|ПО
| Номенклатура ТОЛЬКО ИЕРАРХИЯ,
| Склад";
Запрос.УстановитьПараметр("КонДата", КонецДня(ДатаОтчета));
Результат = Запрос.Выполнить();
ОстаткиНаСкладах=Результат.Выгрузить();
СписокСкладов=ОстаткиНаСкладах.Скопировать();
СписокСкладов.Свернуть("Склад");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| УчетОСОстатки.Проект,
| 0 КАК ПроектОстаток,
| УчетОСОстатки.Проект.ДатаНачала,
| УчетОСОстатки.Проект.ДатаОкончания,
| 0 КАК ПроектОстатокВхАренда
|ИЗ
| РегистрНакопления.УчетОС.Остатки(&ДатаОтчета, ) КАК УчетОСОстатки
|
|УПОРЯДОЧИТЬ ПО
| УчетОСОстатки.Проект.Наименование";
Запрос.УстановитьПараметр("ДатаОтчета", КонецДня(ДатаОтчета));
Результат = Запрос.Выполнить();
ТабПроектов=Результат.Выгрузить();
МассивПроектов=ТабПроектов.ВыгрузитьКолонку("Проект");
ТабПроектов.Колонки.Добавить("Красный");
ТабПроектов.Колонки.Добавить("Синий");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПроектыТовары.Ссылка КАК Проект,
| 0 КАК ПроектОстаток,
| ПроектыТовары.Ссылка.ДатаНачала,
| ПроектыТовары.Ссылка.ДатаОкончания,
| 0 КАК ПроектОстатокВхАренда
|ИЗ
| Справочник.Проекты.Товары КАК ПроектыТовары
|ГДЕ
| (НЕ ПроектыТовары.Ссылка В (&МассивПроектов))
| И ПроектыТовары.Ссылка.ДатаНачалаСъемочногоПериода <= &ДатаНачалаСъемочногоПериода
| И ПроектыТовары.Ссылка.ДатаОкончанияСъемочногоПериода >= &ДатаОкончанияСъемочногоПериода";
Запрос.УстановитьПараметр("МассивПроектов", МассивПроектов);
Запрос.УстановитьПараметр("ДатаНачалаСъемочногоПериода", НачалоДня(ДатаОтчета));
Запрос.УстановитьПараметр("ДатаОкончанияСъемочногоПериода", КонецДня(ДатаОтчета));
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока Выборка.Следующий() Цикл
стрТабПроектов=ТабПроектов.Добавить();
стрТабПроектов.Проект=Выборка.Проект;
стрТабПроектов.ПроектОстаток=0;
стрТабПроектов.ПроектОстатокВхАренда=0;
стрТабПроектов.ПроектДатаНачала=Выборка.Проект.ДатаНачала;
стрТабПроектов.ПроектДатаОкончания=Выборка.Проект.ДатаОкончания;
стрТабПроектов.Синий=1;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| УчетОСВхАрендаОстатки.Проект,
| СУММА(УчетОСВхАрендаОстатки.КоличествоОстаток) КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.УчетОСВхАренда.Остатки(&ДатаОтчета, ) КАК УчетОСВхАрендаОстатки
|ГДЕ
| УчетОСВхАрендаОстатки.Проект <> &Проект
|
|СГРУППИРОВАТЬ ПО
| УчетОСВхАрендаОстатки.Проект
|
|УПОРЯДОЧИТЬ ПО
| УчетОСВхАрендаОстатки.Проект.Наименование";
Запрос.УстановитьПараметр("ДатаОтчета", КонецДня(ДатаОтчета));
Запрос.УстановитьПараметр("Проект", Справочники.Проекты.ПустаяСсылка());
Результат = Запрос.Выполнить();
ТабПроектовВхАренда=Результат.Выгрузить();
Для Каждого стрТабПроектовВхАренда Из ТабПроектовВхАренда Цикл
Если ТабПроектов.Найти(стрТабПроектовВхАренда.Проект,"Проект")=Неопределено Тогда
стрТабПроектов=ТабПроектов.Добавить();
стрТабПроектов.Проект=стрТабПроектовВхАренда.Проект;
стрТабПроектов.ПроектОстаток=0;
стрТабПроектов.ПроектОстатокВхАренда=0;
стрТабПроектов.ПроектДатаНачала=стрТабПроектовВхАренда.Проект.ДатаНачала;
стрТабПроектов.ПроектДатаОкончания=стрТабПроектовВхАренда.Проект.ДатаОкончания;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| УчетОСВхАрендаОстатки.Проект,
| СУММА(УчетОСВхАрендаОстатки.КоличествоОстаток) КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.УчетОСВхАренда.Остатки(&ДатаОтчета, ) КАК УчетОСВхАрендаОстатки
|ГДЕ
| УчетОСВхАрендаОстатки.Проект = &Проект
|
|СГРУППИРОВАТЬ ПО
| УчетОСВхАрендаОстатки.Проект
|
|УПОРЯДОЧИТЬ ПО
| УчетОСВхАрендаОстатки.Проект.Наименование";
Запрос.УстановитьПараметр("ДатаОтчета", КонецДня(ДатаОтчета));
Запрос.УстановитьПараметр("Проект", Справочники.Проекты.ПустаяСсылка());
Результат = Запрос.Выполнить();
ТабПроектовВхАрендаБезПроекта=Результат.Выгрузить();
Макет = ВнешняяОбработкаОбъект.ПолучитьМакет("Отчет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатурныеГруппы.ГруппаОборудования КАК ГруппаОборудования,
| НоменклатурныеГруппы.Ссылка КАК НомГр,
| NULL КАК ОстатокНаСкладе,
| NULL КАК Проект,
| NULL КАК КоличествоОстаток,
| NULL КАК КоличествоОстатокВхАренда,
| НоменклатурныеГруппы.Артикул КАК НоменклатураАртикул,
| NULL КАК КоличествоОстатокВхАрендаБезПроекта,
| НоменклатурныеГруппы.ГруппаОборудования.Код КАК НоменклатураГруппаОборудованияНаименование,
| НоменклатурныеГруппы.Код КАК НоменклатураКод
|ИЗ
| Справочник.НоменклатурныеГруппы КАК НоменклатурныеГруппы
|ГДЕ
| НоменклатурныеГруппы.ПометкаУдаления = &ПометкаУдаления
| И НоменклатурныеГруппы.ЭтоГруппа = &ЭтоГруппа
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ОстаткиПоАрендеОстатки.Номенклатура.ГруппаОборудования,
| ОстаткиПоАрендеОстатки.Номенклатура,
| ОстаткиПоАрендеОстатки.КоличествоОстаток,
| NULL,
| NULL,
| NULL,
| ОстаткиПоАрендеОстатки.Номенклатура.Артикул,
| NULL,
| ОстаткиПоАрендеОстатки.Номенклатура.ГруппаОборудования.Код,
| ОстаткиПоАрендеОстатки.Номенклатура.Код
|ИЗ
| РегистрНакопления.ОстаткиПоАренде.Остатки(&ДатаОтчета, ) КАК ОстаткиПоАрендеОстатки
|ГДЕ
| ОстаткиПоАрендеОстатки.Номенклатура.ПометкаУдаления = &ПометкаУдаления
| И ОстаткиПоАрендеОстатки.Номенклатура.ЭтоГруппа = &ЭтоГруппа
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УчетОСОстатки.Номенклатура.ГруппаОборудования,
| УчетОСОстатки.Номенклатура,
| NULL,
| УчетОСОстатки.Проект,
| УчетОСОстатки.КоличествоОстаток,
| NULL,
| УчетОСОстатки.Номенклатура.Артикул,
| NULL,
| УчетОСОстатки.Номенклатура.ГруппаОборудования.Код,
| УчетОСОстатки.Номенклатура.Код
|ИЗ
| РегистрНакопления.УчетОС.Остатки(&ДатаОтчета, ) КАК УчетОСОстатки
|ГДЕ
| УчетОСОстатки.Номенклатура.ПометкаУдаления = &ПометкаУдаления
| И УчетОСОстатки.Номенклатура.ЭтоГруппа = &ЭтоГруппа
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПроектыТовары.Номенклатура.ГруппаОборудования,
| ПроектыТовары.Номенклатура,
| NULL,
| ПроектыТовары.Ссылка,
| ПроектыТовары.Количество,
| NULL,
| ПроектыТовары.Номенклатура.Артикул,
| NULL,
| ПроектыТовары.Номенклатура.ГруппаОборудования.Код,
| ПроектыТовары.Номенклатура.Код
|ИЗ
| Справочник.Проекты.Товары КАК ПроектыТовары
|ГДЕ
| (НЕ ПроектыТовары.Ссылка В (&МассивПроектов))
| И ПроектыТовары.Ссылка.ДатаНачалаСъемочногоПериода <= &ДатаНачалаСъемочногоПериода
| И ПроектыТовары.Ссылка.ДатаОкончанияСъемочногоПериода >= &ДатаОкончанияСъемочногоПериода
| И ПроектыТовары.Номенклатура.ПометкаУдаления = &ПометкаУдаления
| И ПроектыТовары.Номенклатура.ЭтоГруппа = &ЭтоГруппа
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УчетОСВхАрендаОстатки.Номенклатура.ГруппаОборудования,
| УчетОСВхАрендаОстатки.Номенклатура,
| NULL,
| УчетОСВхАрендаОстатки.Проект,
| NULL,
| УчетОСВхАрендаОстатки.КоличествоОстаток,
| УчетОСВхАрендаОстатки.Номенклатура.Артикул,
| NULL,
| УчетОСВхАрендаОстатки.Номенклатура.ГруппаОборудования.Код,
| УчетОСВхАрендаОстатки.Номенклатура.Код
|ИЗ
| РегистрНакопления.УчетОСВхАренда.Остатки(&ДатаОтчета, Проект <> &ПроектВыбран) КАК УчетОСВхАрендаОстатки
|ГДЕ
| УчетОСВхАрендаОстатки.Номенклатура.ПометкаУдаления = &ПометкаУдаления
| И УчетОСВхАрендаОстатки.Номенклатура.ЭтоГруппа = &ЭтоГруппа
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УчетОСВхАрендаОстатки.Номенклатура.ГруппаОборудования,
| УчетОСВхАрендаОстатки.Номенклатура,
| NULL,
| УчетОСВхАрендаОстатки.Проект,
| NULL,
| NULL,
| УчетОСВхАрендаОстатки.Номенклатура.Артикул,
| УчетОСВхАрендаОстатки.КоличествоОстаток,
| УчетОСВхАрендаОстатки.Номенклатура.ГруппаОборудования.Код,
| УчетОСВхАрендаОстатки.Номенклатура.Код
|ИЗ
| РегистрНакопления.УчетОСВхАренда.Остатки(&ДатаОтчета, Проект = &ПроектВыбран) КАК УчетОСВхАрендаОстатки
|ГДЕ
| УчетОСВхАрендаОстатки.Номенклатура.ПометкаУдаления = &ПометкаУдаления
| И УчетОСВхАрендаОстатки.Номенклатура.ЭтоГруппа = &ЭтоГруппа
|
|УПОРЯДОЧИТЬ ПО
| НоменклатураГруппаОборудованияНаименование,
| НоменклатураАртикул
|ИТОГИ
| СУММА(ОстатокНаСкладе),
| СУММА(КоличествоОстаток),
| СУММА(КоличествоОстатокВхАренда),
| СУММА(КоличествоОстатокВхАрендаБезПроекта)
|ПО
| ОБЩИЕ,
| ГруппаОборудования,
| НомГр ИЕРАРХИЯ,
| Проект";
Запрос.УстановитьПараметр("ДатаОтчета", КонецДня(ДатаОтчета));
Запрос.УстановитьПараметр("ПометкаУдаления", Ложь);
Запрос.УстановитьПараметр("ЭтоГруппа", Ложь);
Запрос.УстановитьПараметр("ПроектВыбран", Справочники.Проекты.ПустаяСсылка());
Запрос.УстановитьПараметр("МассивПроектов", МассивПроектов);
Запрос.УстановитьПараметр("ДатаНачалаСъемочногоПериода", НачалоДня(ДатаОтчета));
Запрос.УстановитьПараметр("ДатаОкончанияСъемочногоПериода", КонецДня(ДатаОтчета));
Результат = Запрос.Выполнить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок|Основная");
ОбластьЗаголовокСклад = Макет.ПолучитьОбласть("Заголовок|Склад");
ОбластьЗаголовокСклад1 = Макет.ПолучитьОбласть("Заголовок|Склад1");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы|Основная");
ОбластьШапкаТаблицыСклад = Макет.ПолучитьОбласть("ШапкаТаблицы|Склад");
ОбластьШапкаТаблицыСклад1 = Макет.ПолучитьОбласть("ШапкаТаблицы|Склад1");
ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги");
ОбластьГруппаОборудования = Макет.ПолучитьОбласть("ГруппаОборудования|Основная");
ОбластьГруппаОборудованияСклад = Макет.ПолучитьОбласть("ГруппаОборудования|Склад");
ОбластьГруппаОборудованияСклад1 = Макет.ПолучитьОбласть("ГруппаОборудования|Склад1");
ОбластьНомГр = Макет.ПолучитьОбласть("НомГр|Основная");
ОбластьНомГрСклад = Макет.ПолучитьОбласть("НомГр|Склад");
ОбластьНомГрСклад1 = Макет.ПолучитьОбласть("НомГр|Склад1");
ОбластьОстатокНаСкладеНаименование = Макет.ПолучитьОбласть("ОстатокНаСкладеНаименование");
ОбластьВхБезПроектаНаименование = Макет.ПолучитьОбласть("ВхБезПроектаНаименование");
ОбластьПроектНаименование = Макет.ПолучитьОбласть("ПроектНаименование");
ОбластьВхПроектНаименование = Макет.ПолучитьОбласть("ВхПроектНаименование");
ОбластьОстатокНаСкладеНаименование2 = Макет.ПолучитьОбласть("ОстатокНаСкладеНаименование2");
ОбластьНачОстатокНаСкладе = Макет.ПолучитьОбласть("НачОстатокНаСкладе");
ОбластьВхБезПроекта = Макет.ПолучитьОбласть("ВхБезПроекта");
ОбластьПроектОстаток = Макет.ПолучитьОбласть("ПроектОстаток");
ОбластьВхАрендаПроект = Макет.ПолучитьОбласть("ВхАрендаПроект");
ОбластьКонОстатокНаСкладе = Макет.ПолучитьОбласть("КонОстатокНаСкладе");
ОбластьПериодПроектаОсн = Макет.ПолучитьОбласть("ПериодПроекта|Основная");
ОбластьПериодПроектаОснСклад = Макет.ПолучитьОбласть("ПериодПроекта|Склад");
ОбластьОстатокНаСкладеДаты = Макет.ПолучитьОбласть("ОстатокНаСкладеДаты");
ОбластьВхАрендаБезПроектаДаты = Макет.ПолучитьОбласть("ВхАрендаБезПроектаДаты");
ОбластьПериодПроектаДаты = Макет.ПолучитьОбласть("ПериодПроектаДаты");
ОбластьПроектОстатокВхАрендаДаты = Макет.ПолучитьОбласть("ПроектОстатокВхАрендаДаты");
ОбластьОстатокНаСкладеДаты2 = Макет.ПолучитьОбласть("ОстатокНаСкладеДаты2");
ОбластьГруппаПерсонал = Макет.ПолучитьОбласть("ГруппаПерсонал|Основная");
ОбластьПерсонал = Макет.ПолучитьОбласть("Персонал|Основная");
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ВыборкаСклад = Справочники.Склады.Выбрать(,,, "Наименование Убыв");
Пока ВыборкаСклад.Следующий() Цикл
Если СписокСкладов.Найти(ВыборкаСклад.Ссылка,"Склад")=Неопределено Тогда
Продолжить;
КонецЕсли;
Если СокрЛП(ВыборкаСклад.Ссылка.Наименование)="Ремонт ОС" Тогда
Продолжить;
КонецЕсли;
ТабДок.Присоединить(ОбластьЗаголовокСклад);
КонецЦикла;
ОбластьПериодПроектаОсн.Параметры.надписьДатыПроекта="начало проекта -"+Символы.ПС+"окончание проекта";
ТабДок.Вывести(ОбластьПериодПроектаОсн);
ВыборкаСклад = Справочники.Склады.Выбрать(,,, "Наименование Убыв");
Пока ВыборкаСклад.Следующий() Цикл
Если СписокСкладов.Найти(ВыборкаСклад.Ссылка,"Склад")=Неопределено Тогда
Продолжить;
КонецЕсли;
Если СокрЛП(ВыборкаСклад.Ссылка.Наименование)="Ремонт ОС" Тогда
Продолжить;
КонецЕсли;
ТабДок.Присоединить(ОбластьПериодПроектаОснСклад);
КонецЦикла;
ТабДок.Присоединить(ОбластьОстатокНаСкладеДаты);
Если ТабПроектовВхАрендаБезПроекта.Количество()<>0 Тогда
ТабДок.Присоединить(ОбластьВхАрендаБезПроектаДаты);
КонецЕсли;
Для Каждого стрТабПроектов Из ТабПроектов Цикл
// ОбластьПериодПроектаДаты.Параметры.ДатыПроекта=Формат(стрТабПроектов.ПроектДатаНачала,"ДФ=""дд.ММ.гг""")+"-"+Символы.ПС+Формат(стрТабПроектов.ПроектДатаОкончания,"ДФ=""дд.ММ.гг""");
ОбластьПериодПроектаДаты.Параметры.ДатыПроекта=Формат(стрТабПроектов.Проект.ДатаНачалаСъемочногоПериода,"ДФ=""дд.ММ.гг""")+"-"+Символы.ПС+Формат(стрТабПроектов.Проект.ДатаОкончанияСъемочногоПериода,"ДФ=""дд.ММ.гг""");
ТабДок.Присоединить(ОбластьПериодПроектаДаты);
Если ТабПроектовВхАренда.Найти(стрТабПроектов.Проект,"Проект")<>Неопределено Тогда
ТабДок.Присоединить(ОбластьПроектОстатокВхАрендаДаты);
КонецЕсли;
КонецЦикла;
ТабДок.Присоединить(ОбластьОстатокНаСкладеДаты2);
ВыборкаСклад = Справочники.Склады.Выбрать(,,, "Наименование Убыв");
Пока ВыборкаСклад.Следующий() Цикл
Если СписокСкладов.Найти(ВыборкаСклад.Ссылка,"Склад")=Неопределено Тогда
Продолжить;
КонецЕсли;
Если СокрЛП(ВыборкаСклад.Ссылка.Наименование)="Ремонт ОС" Тогда
Продолжить;
КонецЕсли;
ТабДок.Присоединить(ОбластьПериодПроектаОснСклад);
КонецЦикла;
ТабДок.Вывести(ОбластьШапкаТаблицы);
ВыборкаСклад = Справочники.Склады.Выбрать(,,, "Наименование Убыв");
Пока ВыборкаСклад.Следующий() Цикл
Если СписокСкладов.Найти(ВыборкаСклад.Ссылка,"Склад")=Неопределено Тогда
Продолжить;
КонецЕсли;
Если СокрЛП(ВыборкаСклад.Ссылка.Наименование)="Ремонт ОС" Тогда
Продолжить;
КонецЕсли;
ОбластьШапкаТаблицыСклад.Параметры.Заполнить(ВыборкаСклад);
ТабДок.Присоединить(ОбластьШапкаТаблицыСклад);
КонецЦикла;
ТабДок.Присоединить(ОбластьОстатокНаСкладеНаименование);
Если ТабПроектовВхАрендаБезПроекта.Количество()<>0 Тогда
ТабДок.Присоединить(ОбластьВхБезПроектаНаименование);
КонецЕсли;
Для Каждого стрТабПроектов Из ТабПроектов Цикл
ОбластьПроектНаименование.Параметры.Проект=стрТабПроектов.Проект;
ТабДок.Присоединить(ОбластьПроектНаименование);
Если ТабПроектовВхАренда.Найти(стрТабПроектов.Проект,"Проект")<>Неопределено Тогда
ТабДок.Присоединить(ОбластьВхПроектНаименование);
КонецЕсли;
КонецЦикла;
ОбластьОстатокНаСкладеНаименование2.Параметры.ДатаОтчета=Формат(ДатаОтчета, "ДФ=""дд.ММ.гг""");
ТабДок.Присоединить(ОбластьОстатокНаСкладеНаименование2);
ВыборкаСклад = Справочники.Склады.Выбрать(,,, "Наименование Убыв");
Пока ВыборкаСклад.Следующий() Цикл
Если СписокСкладов.Найти(ВыборкаСклад.Ссылка,"Склад")=Неопределено Тогда
Продолжить;
КонецЕсли;
Если СокрЛП(ВыборкаСклад.Ссылка.Наименование)="Ремонт ОС" Тогда
Продолжить;
КонецЕсли;
ОбластьШапкаТаблицыСклад1.Параметры.Заполнить(ВыборкаСклад);
ТабДок.Присоединить(ОбластьШапкаТаблицыСклад1);
КонецЦикла;
ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаОбщийИтог.Следующий(); // Общий итог
ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
СписокГруппПерсонал=Новый СписокЗначений;
СписокГруппПерсонал.Добавить(Справочники.ФизическиеЛица.НайтиПоКоду("000000008"));
СписокГруппПерсонал.Добавить(Справочники.ФизическиеЛица.НайтиПоКоду("000000005"));
СписокГруппПерсонал.Добавить(Справочники.ФизическиеЛица.НайтиПоКоду("000000003"));
Запрос9 = Новый Запрос;
Запрос9.Текст = "ВЫБРАТЬ
| ФизическиеЛица.Ссылка КАК ФизЛицо,
| ВложенныйЗапрос.Проект КАК Проект
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ПерсоналНаПогрузках.Проект КАК Проект,
| ПерсоналНаПогрузках.ФизЛицо КАК ФизЛицо
| ИЗ
| РегистрСведений.ПерсоналНаПогрузках КАК ПерсоналНаПогрузках
| ГДЕ
| ПерсоналНаПогрузках.НачалоПогрузки <= &ДатаОтчетаНач
| И ПерсоналНаПогрузках.КонецПогрузки >= &ДатаОтчетаКон) КАК ВложенныйЗапрос
| ПО ФизическиеЛица.Ссылка = ВложенныйЗапрос.ФизЛицо
|ГДЕ
| ФизическиеЛица.ЭтоГруппа = &ЭтоГруппа
| И ФизическиеЛица.Родитель В ИЕРАРХИИ(&Родитель)
|
|УПОРЯДОЧИТЬ ПО
| ФизическиеЛица.Родитель.Наименование,
| ФизическиеЛица.Наименование
|ИТОГИ ПО
| ФизЛицо,
| Проект";
Запрос9.УстановитьПараметр("ЭтоГруппа", Ложь);
Запрос9.УстановитьПараметр("Родитель", СписокГруппПерсонал);
Запрос9.УстановитьПараметр("ДатаОтчетаНач", НачалоДня(ДатаОтчета));
Запрос9.УстановитьПараметр("ДатаОтчетаКон", КонецДня(ДатаОтчета));
Результат9 = Запрос9.Выполнить();
Выборка9 = Результат9.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ТабДок.НачатьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьГруппаПерсонал, 0,,Ложь);
Пока Выборка9.Следующий() Цикл
ОбластьПерсонал.Параметры.Заполнить(Выборка9);
РегФизЛицоДолжностьАренда=РегистрыСведений.ФизЛицоДолжностьАренда;
ОтборРегФизЛицоДолжностьАренда=Новый Структура;
ОтборРегФизЛицоДолжностьАренда.Вставить("ФизЛицо",Выборка9.ФизЛицо);
стРегФизЛицоДолжностьАренда=РегФизЛицоДолжностьАренда.Получить(ОтборРегФизЛицоДолжностьАренда);
Если стРегФизЛицоДолжностьАренда.Количество()<>0 Тогда
ОбластьПерсонал.Параметры.Должность=стРегФизЛицоДолжностьАренда.Должность;
Иначе
ОбластьПерсонал.Параметры.Должность="";
КонецЕсли;
ТабДок.Вывести(ОбластьПерсонал, 1,,Ложь);
ТабДок.Присоединить(ОбластьНачОстатокНаСкладе);
Если ТабПроектовВхАрендаБезПроекта.Количество()<>0 Тогда
ТабДок.Присоединить(ОбластьВхБезПроекта);
КонецЕсли;
Выборка9Проект = Выборка9.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Для Каждого стрТабПроектов Из ТабПроектов Цикл
ПроектВывели=0;
СтуктураПоискаПроекта = Новый Структура("Проект");
СтуктураПоискаПроекта.Проект=стрТабПроектов.Проект;
Если Выборка9Проект.НайтиСледующий(СтуктураПоискаПроекта)=Истина Тогда
ПроектВывели=1;
ОбластьПроектОстаток.Параметры.ПроектОстаток=1;
ТабДок.Присоединить(ОбластьПроектОстаток);
Если ТабПроектовВхАренда.Найти(стрТабПроектов.Проект,"Проект")<>Неопределено Тогда
ТабДок.Присоединить(ОбластьВхАрендаПроект);
КонецЕсли;
КонецЕсли;
Если ПроектВывели=0 Тогда
ОбластьПроектОстаток.Параметры.ПроектОстаток="";
ТабДок.Присоединить(ОбластьПроектОстаток);
Если ТабПроектовВхАренда.Найти(стрТабПроектов.Проект,"Проект")<>Неопределено Тогда
ТабДок.Присоединить(ОбластьВхАрендаПроект);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТабДок.Присоединить(ОбластьКонОстатокНаСкладе);
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаГруппаОборудования = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ИтогОстатокНаСкладе=0;
ИтогОстатокНаСкладеРезерв=0;
Пока ВыборкаГруппаОборудования.Следующий() Цикл
ОбластьГруппаОборудования.Параметры.Заполнить(ВыборкаГруппаОборудования);
ТабДок.Вывести(ОбластьГруппаОборудования, ВыборкаГруппаОборудования.Уровень());
ВыборкаНомГр = ВыборкаГруппаОборудования.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНомГр.Следующий() Цикл
ОбластьНомГр.Параметры.Заполнить(ВыборкаНомГр);
ТабДок.Вывести(ОбластьНомГр, ВыборкаНомГр.Уровень());
ОстатокНаОсновномСкладе=0;
ВыборкаСклад = Справочники.Склады.Выбрать(,,, "Наименование Убыв");
Пока ВыборкаСклад.Следующий() Цикл
Если СписокСкладов.Найти(ВыборкаСклад.Ссылка,"Склад")=Неопределено Тогда
&nb
|
|
11
Fratz
24.11.14
✎
17:06
|
(4) ТабДок.НачатьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьГруппаПерсонал, 0,,Ложь);
Пока Выборка9.Следующий() Цикл
ОбластьПерсонал.Параметры.Заполнить(Выборка9);
РегФизЛицоДолжностьАренда=РегистрыСведений.ФизЛицоДолжностьАренда;
ОтборРегФизЛицоДолжностьАренда=Новый Структура;
ОтборРегФизЛицоДолжностьАренда.Вставить("ФизЛицо",Выборка9.ФизЛицо);
стРегФизЛицоДолжностьАренда=РегФизЛицоДолжностьАренда.Получить(ОтборРегФизЛицоДолжностьАренда);
Если стРегФизЛицоДолжностьАренда.Количество()<>0 Тогда
ОбластьПерсонал.Параметры.Должность=стРегФизЛицоДолжностьАренда.Должность;
Иначе
ОбластьПерсонал.Параметры.Должность="";
КонецЕсли;
ТабДок.Вывести(ОбластьПерсонал, 1,,Ложь);
ТабДок.Присоединить(ОбластьНачОстатокНаСкладе);
Если ТабПроектовВхАрендаБезПроекта.Количество()<>0 Тогда
ТабДок.Присоединить(ОбластьВхБезПроекта);
КонецЕсли;
Выборка9Проект = Выборка9.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Для Каждого стрТабПроектов Из ТабПроектов Цикл
ПроектВывели=0;
СтуктураПоискаПроекта = Новый Структура("Проект");
СтуктураПоискаПроекта.Проект=стрТабПроектов.Проект;
Если Выборка9Проект.НайтиСледующий(СтуктураПоискаПроекта)=Истина Тогда
ПроектВывели=1;
ОбластьПроектОстаток.Параметры.ПроектОстаток=1;
ТабДок.Присоединить(ОбластьПроектОстаток);
Если ТабПроектовВхАренда.Найти(стрТабПроектов.Проект,"Проект")<>Неопределено Тогда
ТабДок.Присоединить(ОбластьВхАрендаПроект);
КонецЕсли;
КонецЕсли;
Если ПроектВывели=0 Тогда
ОбластьПроектОстаток.Параметры.ПроектОстаток="";
ТабДок.Присоединить(ОбластьПроектОстаток);
Если ТабПроектовВхАренда.Найти(стрТабПроектов.Проект,"Проект")<>Неопределено Тогда
ТабДок.Присоединить(ОбластьВхАрендаПроект);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТабДок.Присоединить(ОбластьКонОстатокНаСкладе);
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаГруппаОборудования = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ИтогОстатокНаСкладе=0;
ИтогОстатокНаСкладеРезерв=0;
Пока ВыборкаГруппаОборудования.Следующий() Цикл
ОбластьГруппаОборудования.Параметры.Заполнить(ВыборкаГруппаОборудования);
ТабДок.Вывести(ОбластьГруппаОборудования, ВыборкаГруппаОборудования.Уровень());
ВыборкаНомГр = ВыборкаГруппаОборудования.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНомГр.Следующий() Цикл
ОбластьНомГр.Параметры.Заполнить(ВыборкаНомГр);
ТабДок.Вывести(ОбластьНомГр, ВыборкаНомГр.Уровень());
ОстатокНаОсновномСкладе=0;
ВыборкаСклад = Справочники.Склады.Выбрать(,,, "Наименование Убыв");
Пока ВыборкаСклад.Следующий() Цикл
Если СписокСкладов.Найти(ВыборкаСклад.Ссылка,"Склад")=Неопределено Тогда
Продолжить;
КонецЕсли;
Если СокрЛП(ВыборкаСклад.Ссылка.Наименование)="Ремонт ОС" Тогда
Продолжить;
КонецЕсли;
ОбластьНомГрСклад.Параметры.КоличествоОстаток=0;
ОтборПоСкладам = Новый Структура();
ОтборПоСкладам.Вставить("Номенклатура",ВыборкаНомГр.НомГр);
ОтборПоСкладам.Вставить("Склад",ВыборкаСклад.Ссылка);
СтрокиНомГр = ОстаткиНаСкладах.НайтиСтроки(ОтборПоСкладам);
Если СтрокиНомГр.Количество() > 0 Тогда
ОбластьНомГрСклад.Параметры.Заполнить(СтрокиНомГр.Получить(0));
Если СокрЛП(ВыборкаСклад.Ссылка.Наименование)="Основной склад" Тогда
ОстатокНаОсновномСкладе=СтрокиНомГр.Получить(0).КоличествоОстаток;
Иначе
ОстатокНаОсновномСкладе=0;
КонецЕсли;
КонецЕсли;
ТабДок.Присоединить(ОбластьНомГрСклад);
КонецЦикла;
ОбластьНачОстатокНаСкладе.Параметры.НачОстатокНаСкладе=ВыборкаНомГр.ОстатокНаСкладе;
ТабДок.Присоединить(ОбластьНачОстатокНаСкладе);
Если ВыборкаНомГр.ОстатокНаСкладе<>Null Тогда
ИтогОстатокНаСкладе=ВыборкаНомГр.ОстатокНаСкладе;
ИтогОстатокНаСкладеРезерв=ВыборкаНомГр.ОстатокНаСкладе;
Иначе
ИтогОстатокНаСкладе=0;
ИтогОстатокНаСкладеРезерв=0;
КонецЕсли;
Если ТабПроектовВхАрендаБезПроекта.Количество()<>0 Тогда
ОбластьВхБезПроекта.Параметры.ВхАрендаБезПроекта=ВыборкаНомГр.КоличествоОстатокВхАрендаБезПроекта;
Если ВыборкаНомГр.КоличествоОстатокВхАрендаБезПроекта<>Null Тогда
ТабРасшифровки = Новый ТаблицаЗначений;
ТабРасшифровки.Колонки.Добавить("Ном");
ТабРасшифровки.Колонки.Добавить("Проект");
ТабРасшифровки.Колонки.Добавить("ВхАренда");
СтрокаТабРасшифровки=ТабРасшифровки.Добавить();
СтрокаТабРасшифровки.Проект=Справочники.Проекты.ПустаяСсылка();
СтрокаТабРасшифровки.Ном=ВыборкаНомГр.НомГр;
ОбластьВхБезПроекта.Параметры.РасшифровкаВхАрендаБезПроекта=ТабРасшифровки;
КонецЕсли;
Если ВыборкаНомГр.КоличествоОстатокВхАрендаБезПроекта<>Null Тогда
ИтогОстатокНаСкладе=ИтогОстатокНаСкладе+ВыборкаНомГр.КоличествоОстатокВхАрендаБезПроекта;
ОстатокНаОсновномСкладе=ОстатокНаОсновномСкладе+ВыборкаНомГр.КоличествоОстатокВхАрендаБезПроекта;
ИтогОстатокНаСкладеРезерв=ИтогОстатокНаСкладеРезерв+ВыборкаНомГр.КоличествоОстатокВхАрендаБезПроекта;
КонецЕсли;
ТабДок.Присоединить(ОбластьВхБезПроекта);
КонецЕсли;
ВыборкаПроект = ВыборкаНомГр.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПроект.Следующий() Цикл
НайденнаяСтрока = ТабПроектов.Найти(ВыборкаПроект.Проект,"Проект");
Если НайденнаяСтрока <> Неопределено Тогда
НайденнаяСтрока.ПроектОстаток=ВыборкаПроект.КоличествоОстаток;
Если ВыборкаПроект.КоличествоОстатокВхАренда<>Null Тогда
НайденнаяСтрока.ПроектОстатокВхАренда=ВыборкаПроект.КоличествоОстатокВхАренда;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для Каждого стрТабПроектов Из ТабПроектов Цикл
ОбластьПроектОстаток.Параметры.ПроектОстаток=стрТабПроектов.ПроектОстаток;
ПосленяяПогрузка=ПолучитьПоследнююПогрузку(стрТабПроектов.Проект,ВыборкаНомГр.НомГр);
Если ПосленяяПогрузка=Неопределено ИЛИ ПосленяяПогрузка=Null Тогда
Если стрТабПроектов.Синий=1 Тогда
ОбластьПроектОстаток.Области.ПроектОстаток.ЦветТекста=Новый Цвет(0,0,255);
Иначе
ОбластьПроектОстаток.Области.ПроектОстаток.ЦветТекста=Новый Цвет(0,100,0);
КонецЕсли;
Если стрТабПроектов.Красный=1 Тогда
Иначе
ПроектНаимПоиск=ТабДок.НайтиТекст(стрТабПроектов.Проект.Наименование,,,,,,);
ПроектНаимПоиск.ЦветТекста=Новый Цвет(0,100,0);
ПроектДатыПоиск=ТабДок.НайтиТекст(Формат(стрТабПроектов.Проект.ДатаНачалаСъемочногоПериода,"ДФ=""дд.ММ.гг""")+"-"+Символы.ПС+Формат(стрТабПроектов.Проект.ДатаОкончанияСъемочногоПериода,"ДФ=""дд.ММ.гг"""),,,,,,);
ПроектДатыПоиск.ЦветТекста=Новый Цвет(0,100,0);
КонецЕсли;
Если стрТабПроектов.Синий=1 Тогда
ПроектНаимПоиск=ТабДок.НайтиТекст(стрТабПроектов.Проект.Наименование,,,,,,);
ПроектНаимПоиск.ЦветТекста=Новый Цвет(0,0,255);
ПроектДатыПоиск=ТабДок.НайтиТекст(Формат(стрТабПроектов.Проект.ДатаНачалаСъемочногоПериода,"ДФ=""дд.ММ.гг""")+"-"+Символы.ПС+Формат(стрТабПроектов.Проект.ДатаОкончанияСъемочногоПериода,"ДФ=""дд.ММ.гг"""),,,,,,);
ПроектДатыПоиск.ЦветТекста=Новый Цвет(0,0,255);
КонецЕсли;
Иначе
Если ПосленяяПогрузка.Товары.Итог("КоличествоОтгрузили")=0 Тогда
ОбластьПроектОстаток.Области.ПроектОстаток.ЦветТекста=Новый Цвет(255,0,0);
ПроектНаимПоиск=ТабДок.НайтиТекст(стрТабПроектов.Проект.Наименование,,,,,,);
ПроектНаимПоиск.ЦветТекста=Новый Цвет(255,0,0);
ПроектДатыПоиск=ТабДок.НайтиТекст(Формат(стрТабПроектов.Проект.ДатаНачалаСъемочногоПериода,"ДФ=""дд.ММ.гг""")+"-"+Символы.ПС+Формат(стрТабПроектов.Проект.ДатаОкончанияСъемочногоПериода,"ДФ=""дд.ММ.гг"""),,,,,,);
ПроектДатыПоиск.ЦветТекста=Новый Цвет(255,0,0);
стрТабПроектов.Установить(5,1);
Иначе
ОбластьПроектОстаток.Области.ПроектОстаток.ЦветТекста=Новый Цвет(0,100,0);
ПроектНаимПоиск=ТабДок.НайтиТекст(стрТабПроектов.Проект.Наименование,,,,,,);
ПроектНаимПоиск.ЦветТекста=Новый Цвет(0,100,0);
ПроектДатыПоиск=ТабДок.НайтиТекст(Формат(стрТабПроектов.Проект.ДатаНачалаСъемочногоПериода,"ДФ=""дд.ММ.гг""")+"-"+Символы.ПС+Формат(стрТабПроектов.Проект.ДатаОкончанияСъемочногоПериода,"ДФ=""дд.ММ.гг"""),,,,,,);
ПроектДатыПоиск.ЦветТекста=Новый Цвет(0,100,0);
КонецЕсли;
Если стрТабПроектов.Синий=1 Тогда
ОбластьПроектОстаток.Области.ПроектОстаток.ЦветТекста=Новый Цвет(0,0,255);
ПроектНаимПоиск=ТабДок.НайтиТекст(стрТабПроектов.Проект.Наименование,,,,,,);
ПроектНаимПоиск.ЦветТекста=Новый Цвет(0,0,255);
ПроектДатыПоиск=ТабДок.НайтиТекст(Формат(стрТабПроектов.Проект.ДатаНачалаСъемочногоПериода,"ДФ=""дд.ММ.гг""")+"-"+Символы.ПС+Формат(стрТабПроектов.Проект.ДатаОкончанияСъемочногоПериода,"ДФ=""дд.ММ.гг"""),,,,,,);
ПроектДатыПоиск.ЦветТекста=Новый Цвет(0,0,255);
КонецЕсли;
КонецЕсли;
Если стрТабПроектов.ПроектОстаток<>0 Тогда
ТабРасшифровки = Новый ТаблицаЗначений;
ТабРасшифровки.Колонки.Добавить("Ном");
ТабРасшифровки.Колонки.Добавить("Проект");
СтрокаТабРасшифровки=ТабРасшифровки.Добавить();
СтрокаТабРасшифровки.Проект=стрТабПроектов.Проект;
СтрокаТабРасшифровки.Ном=ВыборкаНомГр.НомГр;
ОбластьПроектОстаток.Параметры.РасшифровкаПроектОстаток=ТабРасшифровки;
Иначе
ОбластьПроектОстаток.Параметры.РасшифровкаПроектОстаток=Неопределено;
КонецЕсли;
ТабДок.Присоединить(ОбластьПроектОстаток);
Если стрТабПроектов.ПроектОстатокВхАренда<>Null И стрТабПроектов.ПроектОстатокВхАренда<>0 Тогда
ТабРасшифровки = Новый ТаблицаЗначений;
ТабРасшифровки.Колонки.Добавить("Ном");
ТабРасшифровки.Колонки.Добавить("Проект");
ТабРасшифровки.Колонки.Добавить("ВхАренда");
СтрокаТабРасшифровки=ТабРасшифровки.Добавить();
СтрокаТабРасшифровки.Проект=стрТабПроектов.Проект;
СтрокаТабРасшифровки.Ном=ВыборкаНомГр.НомГр;
ОбластьВхАрендаПроект.Параметры.РасшифровкаПроектОстатокВхАренда=ТабРасшифровки;
Иначе
ОбластьВхАрендаПроект.Параметры.РасшифровкаПроектОстатокВхАренда=Неопределено;
КонецЕсли;
Если ТабПроектовВхАренда.Найти(стрТабПроектов.Проект,"Проект")<>Неопределено Тогда
ОбластьВхАрендаПроект.Параметры.ПроектОстатокВхАренда=стрТабПроектов.ПроектОстатокВхАренда;
ТабДок.Присоединить(ОбластьВхАрендаПроект);
КонецЕсли;
Если стрТабПроектов.ПроектОстаток<>Null Тогда
Если стрТабПроектов.Синий<>1 Тогда
ИтогОстатокНаСкладе=ИтогОстатокНаСкладе-стрТабПроектов.ПроектОстаток;
ОстатокНаОсновномСкладе=ОстатокНаОсновномСкладе-стрТабПроектов.ПроектОстаток;
КонецЕсли;
ИтогОстатокНаСкладеРезерв=ИтогОстатокНаСкладеРезерв-стрТабПроектов.ПроектОстаток;
КонецЕсли;
Если стрТабПроектов.ПроектОстатокВхАренда<>Null Тогда
ИтогОстатокНаСкладе=ИтогОстатокНаСкладе+стрТабПроектов.ПроектОстатокВхАренда;
ОстатокНаОсновномСкладе=ОстатокНаОсновномСкладе+стрТабПроектов.ПроектОстатокВхАренда;
ИтогОстатокНаСкладеРезерв=ИтогОстатокНаСкладеРезерв+стрТабПроектов.ПроектОстатокВхАренда;
КонецЕсли;
стрТабПроектов.ПроектОстаток=0;
стрТабПроектов.ПроектОстатокВхАренда=0;
КонецЦикла;
ОбластьКонОстатокНаСкладе.Параметры.КонОстатокНаСкладе=ИтогОстатокНаСкладе;
ТабДок.Присоединить(ОбластьКонОстатокНаСкладе);
ВыборкаСклад = Справочники.Склады.Выбрать(,,, "Наименование Убыв");
Пока ВыборкаСклад.Следующий() Цикл
Если СписокСкладов.Найти(ВыборкаСклад.Ссылка,"Склад")=Неопределено Тогда
Продолжить;
КонецЕсли;
Если СокрЛП(ВыборкаСклад.Ссылка.Наименование)="Ремонт ОС" Тогда
Продолжить;
КонецЕсли;
ОбластьНомГрСклад1.Параметры.КоличествоОстаток=0;
ОтборПоСкладам = Новый Структура();
ОтборПоСкладам.Вставить("Номенклатура",ВыборкаНомГр.НомГр);
ОтборПоСкладам.Вставить("Склад",ВыборкаСклад.Ссылка);
СтрокиНомГр = ОстаткиНаСкладах.НайтиСтроки(ОтборПоСкладам);
Если СтрокиНомГр.Количество() > 0 Тогда
Если СокрЛП(ВыборкаСклад.Ссылка.Наименование)="Основной склад" Тогда
ОбластьНомГрСклад1.Параметры.Заполнить(СтрокиНомГр.Получить(0));
ОбластьНомГрСклад1.Параметры.КоличествоОстаток=ОстатокНаОсновномСкладе;
Иначе
ОбластьНомГрСклад1.Параметры.Заполнить(СтрокиНомГр.Получить(0));
КонецЕсли;
Иначе
Если СокрЛП(ВыборкаСклад.Ссылка.Наименование)="Основной склад" Тогда
ОбластьНомГрСклад1.Параметры.КоличествоОстаток=ОстатокНаОсновномСкладе;
Иначе
ОбластьНомГрСклад1.Параметры.КоличествоОстаток=0;
КонецЕсли;
КонецЕсли;
ТабДок.Присоединить(ОбластьНомГрСклад1);
КонецЦикла;
КонецЦикла;
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.ФиксацияСлева=3;
ТабДок.ФиксацияСверху=5;
|
|