Схема компоновки

Разработка конфигураций, программирование. Обмен данными, проблемы, решения. Внутренний язык программирования. Внешние и внутренние отчеты и обработки.

Схема компоновки

Сообщение Radanitr » 27 окт 2010

Есть схема компоновки, у нее запрос, выводит схема совсем другие поля, которых в запросе нету, вот код, помогите разобраться в нем

Процедура ДоработатьКомпоновщикПередВыводом() Экспорт

ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ЕстьГруппировкаПоПериодуРегисрации"));
ЗначениеПараметра.Значение = ПрисутствуетПоле("ПериодРегистрации");

ЕстьСтатьяФинансирования = ПрисутствуетПоле("СтатьяФинансирования");
ЕстьСтатьяРасходов = ПрисутствуетПоле("КОСГУ");
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьИФ"));
ЗначениеПараметра.Значение = ЕстьСтатьяРасходов или ЕстьСтатьяФинансирования;

//ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьВремя"));
//ЗначениеПараметра.Значение = ПрисутствуетПоле("ОплаченоДней") или ПрисутствуетПоле("ОплаченоЧасов")
// или ПрисутствуетПоле("ОтработаноДней") или ПрисутствуетПоле("ОтработаноЧасов")или (Не ЕстьСтатьяРасходов и Не ЕстьСтатьяФинансирования);

// Если в выбранные поля добавлены поле нумерации в группе или сквозной нумерации в группе перенесем данные
// поля в самую нижнюю группировку строк отчета.
ГруппировкаДляВремени = Неопределено;
УдаляемыеПоля = Новый Массив;

Для каждого ВыбранноеПоле из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
Если ТипЗнч(ВыбранноеПоле) <> Тип("ГруппаВыбранныхПолейКомпоновкиДанных") тогда
Если ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СистемныеПоля.НомерПоПорядкуВГруппировке") или ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("SystemFields.GroupSerialNumber") тогда
ПоследнийЭлементСтруктуры = НайтиПоследнийЭлементСтруктурыСтрок(КомпоновщикНастроек.Настройки.Структура[0].Строки);
Если ПоследнийЭлементСтруктуры <> Неопределено тогда
ЭлементВыбранногоПоля = ПоследнийЭлементСтруктуры.Выбор.Элементы.Вставить(0,Тип("ВыбранноеПолеКомпоновкиДанных"));
ЭлементВыбранногоПоля.Поле = Новый ПолеКомпоновкиДанных("СистемныеПоля.НомерПоПорядкуВГруппировке");
КонецЕсли;

ИначеЕсли ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СистемныеПоля.НомерПоПорядку") или ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("SystemFields.SerialNumber") тогда
ПоследнийЭлементСтруктуры = НайтиПоследнийЭлементСтруктурыСтрок(КомпоновщикНастроек.Настройки.Структура[0].Строки);
Если ПоследнийЭлементСтруктуры <> Неопределено тогда
ЭлементВыбранногоПоля = ПоследнийЭлементСтруктуры.Выбор.Элементы.Вставить(0,Тип("ВыбранноеПолеКомпоновкиДанных"));
ЭлементВыбранногоПоля.Поле = Новый ПолеКомпоновкиДанных("СистемныеПоля.НомерПоПорядку");
КонецЕсли;
ИначеЕсли ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ОтработаноДней")
или ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ОтработаноЧасов")
или ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ОплаченоДней")
или ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ОплаченоЧасов")
тогда
Если КомпоновщикНастроек.Настройки.Структура.Количество() > 0 и ТипЗнч(КомпоновщикНастроек.Настройки.Структура[0]) = Тип("ТаблицаКомпоновкиДанных") тогда
Если КомпоновщикНастроек.Настройки.Структура[0].Колонки.Количество() > 0 и ГруппировкаДляВремени = Неопределено тогда
ГруппировкаДляВремени = КомпоновщикНастроек.Настройки.Структура[0].Колонки.Вставить(0);
ГруппировкаДляВремени.Использование = Истина;

ПолеГруппировки = ГруппировкаДляВремени.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Группа");
ПолеГруппировки.Использование = Истина;

ПолеВыбора = ГруппировкаДляВремени.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("Группа");
ПолеВыбора.Использование = Истина;

ТиповыеОтчеты.ДобавитьОтбор(ГруппировкаДляВремени.Отбор, "Группа", "Всего начислено");

УсловноеОформление = ГруппировкаДляВремени.УсловноеОформление.Элементы.Добавить();
УсловноеОформление.Использование = Истина;

ПолеОформления = УсловноеОформление.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Группа");
ПолеОформления.Использование = Истина;

ПараметрОформелния = УсловноеОформление.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Text"));
ПараметрОформелния.Использование = Истина;
ПараметрОформелния.Значение = "Отработанное время";

ПараметрОформелния = УсловноеОформление.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("BackColor"));
ПараметрОформелния.Использование = Истина;
ПараметрОформелния.Значение = ЦветаСтиля.ЦветФонаФормы;

ПараметрОформелния = УсловноеОформление.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Font"));
ПараметрОформелния.Использование = Истина;
ПараметрОформелния.Значение = Новый Шрифт(ПараметрОформелния.Значение, "Verdana", ,истина);

КонецЕсли;
Если ГруппировкаДляВремени <> Неопределено тогда
ПолеВыбора = ГруппировкаДляВремени.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеВыбора.Поле = ВыбранноеПоле.Поле;
УдаляемыеПоля.Добавить(ВыбранноеПоле);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ГруппировкаДляВремени <> Неопределено тогда
Для каждого ПолеВыбора из УдаляемыеПоля Цикл
КомпоновщикНастроек.Настройки.Выбор.Элементы.Удалить(ПолеВыбора);
КонецЦикла;
КонецЕсли;

// Отключим строку итогов, если расшифровывается конечное или начальное сальдо
//
МассивОтборов = ТиповыеОтчеты.ПолучитьЭлементыОтбора(КомпоновщикНастроек);

Для каждого ЭлементОтбора из МассивОтборов Цикл
Если ТипЗнч(ЭлементОтбора) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") тогда
Продолжить;
КонецЕсли;
Если ЭлементОтбора.Использование
и ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно
и (ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ИмяВидаРасчета") или ЭлементОтбора.ПравоеЗначение = "Конечное сальдо" или ЭлементОтбора.ПравоеЗначение = "Начальное сальдо")
и (ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИмяВидаРасчета") или ЭлементОтбора.ЛевоеЗначение = "Конечное сальдо" или ЭлементОтбора.ЛевоеЗначение = "Начальное сальдо")
тогда
ТиповыеОтчеты.УстановитьПараметрВывода(КомпоновщикНастроек, "VerticalOverallPlacement", РасположениеИтоговКомпоновкиДанных.Нет);
КонецЕсли;
КонецЦикла;


КонецПроцедуры

ЭлементыНастройки = Новый Массив(4);

ТекстЗапроса = СхемаКомпоновкиДанных.НаборыДанных.Начисления.Запрос;
УправлениеОтчетамиЗК.ПолучитьТаблицуРаботников(, ТекстЗапроса, "ТаблицаДвижений", Истина);
УправлениеОтчетамиЗК.ПодставитьРасчетПолей(ТекстЗапроса, "РаботникиПредприятия", "РаботникиОрганизаций", "ПодразделениеОрганизации", "Должность");
СхемаКомпоновкиДанных.НаборыДанных.Начисления.Запрос = ТекстЗапроса;

Если СохраненнаяНастройка = Неопределено Тогда
СохраненнаяНастройка = Справочники.СохраненныеНастройки.ПустаяСсылка();
КонецЕсли;

Если КомпоновщикНастроек = Неопределено Тогда
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КонецЕсли;
УправлениеОтчетами.ЗаменитьНазваниеПолейСхемыКомпоновкиДанных(СхемаКомпоновкиДанных)
Radanitr
 
Сообщений: 10
Зарегистрирован: 27 окт 2010

Вернуться в Конфигурирование, программирование в "1С:Предприятие 8"

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron