PDA

Просмотр полной версии : Помогите с условием



lekhaplaton
28.07.2014, 08:57
Помогите пжл разобраться с условием не выполняется если выходной и нет отработанных часов то "в"
вместо ставит Х\З.
вот текст:

Функция СформироватьТ13()
ВыборкаПоРаботнику=Получи� �ьВыборкуДляТ13();
Макет = ПолучитьМакет("Т13");
ДокументРезультат = Новый ТабличныйДокумент;
ДокументРезультат.Ориента� �ияСтраницы = ОриентацияСтраницы.Ландша� �т;
ВидыВремениЗаДень = Новый Соответствие;
ПредыдущаяДата = 0;

ОбластьДанныхШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьДанныхКолонтитул = Макет.ПолучитьОбласть("Колонтитул");
ОбластьДанныхСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьДанныхПодвал = Макет.ПолучитьОбласть("Подвал");

ПараметровВстроке = ОбластьДанныхСтрока.Парам� �тры.Количество();
КоличествоЭлементовВыборк и=ВыборкаПоРаботнику.Колич ество();
//Индикатор=скдРаботаСОтчет� �ми.ПолучитьИндикаторВыпол нения(0,КоличествоЭлементо� �Выборки,"Вывод формы Т13");
Пока ВыборкаПоРаботнику.Следую� �ийПоЗначениюПоля("Месяц") Цикл

ОбластьДанныхШапка.Параме� �ры.ДатаНач = НачалоМесяца(ВыборкаПоРаб� �тнику.Месяц);
ОбластьДанныхШапка.Параме� �ры.ДатаКон = КонецМесяца(ВыборкаПоРабо� �нику.Месяц);

//Пока ВыборкаПоРаботнику.Следую� �ийПоЗначениюПоля("Организация") Цикл
//
// Пока ВыборкаПоРаботнику.Следую� �ийПоЗначениюПоля("ПодразделениеОрганизации") Цикл
Если ДокументРезультат.ВысотаТ� �блицы > 0 Тогда
ДокументРезультат.Вывести� �оризонтальныйРазделитель� �траниц();
КонецЕсли;

НомерПП = 0;
ОбластьДанныхШапка.Параме� �ры.Заполнить(ВыборкаПоРаб� �тнику);
ОбластьДанныхШапка.Параме� �ры.ИмяОрганизации = СОКРЛП(ВыборкаПоРаботнику. Организация.Наименование);
ОбластьДанныхШапка.Параме� �ры.ИмяПодразделения = СОКРЛП(ВыборкаПоРаботнику. ПодразделениеОрганизации.� �аименование);
ОбластьДанныхПодвал.Парам� �тры.Заполнить(ВыборкаПоРа� �отнику);

ДокументРезультат.Вывести( ОбластьДанныхШапка);
ДокументРезультат.Вывести( ОбластьДанныхКолонтитул);
//Пока ВыборкаПоРаботнику.Следую� �ийПоЗначениюПоля("СотрудникНаименование") Цикл
Пока ВыборкаПоРаботнику.Следую� �ийПоЗначениюПоля("Сотрудник") Цикл

НомерПП = НомерПП + 1;

ДниПерваяПоловина = 0;
ЧасыПерваяПоловина = 0;
ДниВтораяПоловина = 0;
ЧасыВтораяПоловина = 0;
ДнейНеявки = 0;
ЧасовНеявки = 0;

Для Сч = 1 По ПараметровВстроке Цикл
ОбластьДанныхСтрока.Парам� �тры.Установить(Сч - 1,"");
КонецЦикла;

ОбластьДанныхСтрока.Парам� �тры.НомерПП = НомерПП;
ОбластьДанныхСтрока.Парам� �тры.Работник = СокрП(ВыборкаПоРаботнику.С отрудник.Наименование) + ", " + Символы.ПС + ВыборкаПоРаботнику.Должно� �ть;
ОбластьДанныхСтрока.Парам� �тры.ТабельныйНомер = ВыборкаПоРаботнику.Сотруд� �ик.Код;
ОбластьДанныхСтрока.Парам� �тры.Заполнить(ВыборкаПоРа� �отнику);

Пока ВыборкаПоРаботнику.Следую� �ийПоЗначениюПоля("Период") Цикл

СимволДня = "Я";
ОтработаноЧасовЗаДень = 0; ////был 0
ОтработаноЧасовЗаДеньСтр = "";
НомерДня = Строка(День(ВыборкаПоРабот нику.Период));
ПерваяПоловина = День(ВыборкаПоРаботнику.Пе риод) <= 15;
УчитыватьВыходнойДень = Истина;

Пока ВыборкаПоРаботнику.Следую� �ий() Цикл
//скдРаботаСОтчетами.Добави� �ьЗначениеИндикатора(Индик атор,1);
Если НЕ ПредыдущаяДата = ВыборкаПоРаботнику.Период Тогда
// Очищаем соответствие
ВидыВремениЗаДень.Очистит� �();
КонецЕсли;

//Если ВыборкаПоРаботнику.Норма = 0 Тогда
//ОтработаноЧасовЗаДень = 0;
//ОтработаноЧасовЗаДеньСтр = "";
//СимволДня = "В";
//Иначе
Если ВыборкаПоРаботнику.Норма = 0 Тогда
ОтработаноЧасовЗаДень = "";
ОтработаноЧасовЗаДеньСтр = "";
СимволДня = "В";

ИначеЕсли ВыборкаПоРаботнику.Норма = 0 Тогда
ОтработаноЧасовЗаДень = 0;
ОтработаноЧасовЗаДеньСтр = "";
СимволДня = "В";

ИначеЕсли ВыборкаПоРаботнику.Норма <> 0 Тогда
ОтработаноЧасовЗаДень = "";
ОтработаноЧасовЗаДеньСтр = "";
СимволДня = "Я";

Норма = ОтработаноЧасовЗаДень ;
КонецЕсли;
Если ВыборкаПоРаботнику.Явка = 0 Тогда
ОтработаноЧасовЗаДень = 0;
ОтработаноЧасовЗаДеньСтр = "";
СимволДня = "Х\З";
ДнейНеявки = ДнейНеявки + 1;
ЧасовНеявки = ЧасовНеявки + ВыборкаПоРаботнику.Норма;

Иначе
ОтработаноЧасовЗаДень = Число(Формат(ВыборкаПоРабо тнику.Явка,"ЧДЦ=2"));
//Если ВыборкаПоРаботнику.Вечерн� �е = NULL или ВыборкаПоРаботнику.Вечерн� �е = 0 Тогда
// Вечерние = 0;
//Иначе
// Вечерние = Число(Формат(ВыборкаПоРабо тнику.Вечерние,"ЧДЦ=2"));
//КонецЕсли;
//Если ВыборкаПоРаботнику.Ночные = NULL или ВыборкаПоРаботнику.Ночные = 0 Тогда
// Ночные = 0;

//Иначе
// Ночные = Число(Формат(ВыборкаПоРабо тнику.Ночные,"ЧДЦ=2"));
//КонецЕсли;
//Явка = ОтработаноЧасовЗаДень - Вечерние - Ночные;
Явка = ОтработаноЧасовЗаДень ;
Норма = ОтработаноЧасовЗаДень ;
//ОтработаноЧасовЗаДеньСтр = Строка(Явка) + ?(Вечерние <> 0, "/" + Строка(Вечерние), "") + ?(Ночные <> 0, "/" + Строка(Ночные), "");
ОтработаноЧасовЗаДеньСтр = Строка(Явка);
//СимволДня = "Я" + ?(Вечерние <> 0, "/В", "") + ?(Ночные <> 0, "/Н", "");
//СимволДня = "Я";
КонецЕсли;

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

//Если ОтработаноЧасовЗаДень <> 0 Тогда
Если ПерваяПоловина Тогда
ДниПерваяПоловина = ДниПерваяПоловина + 1;
ЧасыПерваяПоловина = ЧасыПерваяПоловина + ОтработаноЧасовЗаДень

Иначе
ДниВтораяПоловина = ДниВтораяПоловина + 1;
ЧасыВтораяПоловина = ЧасыВтораяПоловина + ОтработаноЧасовЗаДень
//КонецЕсли;
КонецЕсли;
КонецЦикла;

// заполняем раздел "Отработано за"
ОбластьДанныхСтрока.Парам� �тры.ДниПерваяПоловина = ДниПерваяПоловина;
ОбластьДанныхСтрока.Парам� �тры.ЧасыПерваяПоловина = ЧасыПерваяПоловина;
ОбластьДанныхСтрока.Парам� �тры.ДниВтораяПоловина = ДниВтораяПоловина;
ОбластьДанныхСтрока.Парам� �тры.ЧасыВтораяПоловина = ЧасыВтораяПоловина;
ОбластьДанныхСтрока.Парам� �тры.ДниЗаМесяц = ДниПерваяПоловина + ДниВтораяПоловина;
ОбластьДанныхСтрока.Парам� �тры.ЧасыЗаМесяц = ЧасыПерваяПоловина + ЧасыВтораяПоловина;

// заполняем раздел "Неявки по причинам"
Если ДнейНеявки <> 0 Тогда
ОбластьДанныхСтрока.Парам� �тры["НеявкаКод1"] = "НН";
ОбластьДанныхСтрока.Парам� �тры["НеявкаДниЧасы1"] = "" + ДнейНеявки + "(" + ЧасовНеявки + ")";
КонецЕсли;

// Проверим, уместится ли строка на странице или надо открывать новую страницу
Если Не скдРаботаСОтчетами.Провер� �тьВыводТабличногоДокумен� �а(ДокументРезультат, ОбластьДанныхСтрока) Тогда
ДокументРезультат.Вывести� �оризонтальныйРазделитель� �траниц();
ДокументРезультат.Вывести( ОбластьДанныхКолонтитул);
КонецЕсли;

ДокументРезультат.Вывести( ОбластьДанныхСтрока);

КонецЦикла;
//КонецЦикла;
Если Не скдРаботаСОтчетами.Провер� �тьВыводТабличногоДокумен� �а(ДокументРезультат, ОбластьДанныхПодвал) Тогда
ПоследняяСтрокаЛиста = ДокументРезультат.Получит� �Область(ДокументРезультат .ВысотаТаблицы - 3,,ДокументРезультат.Высота Таблицы,);
ДокументРезультат.Удалить� �бласть(ДокументРезультат.� �бласть(ДокументРезультат.� �ысотаТаблицы - 3,,ДокументРезультат.Высота Таблицы,),);
ДокументРезультат.Вывести� �оризонтальныйРазделитель� �траниц();
ДокументРезультат.Вывести( ОбластьДанныхКолонтитул);
ДокументРезультат.Вывести( ПоследняяСтрокаЛиста);
КонецЕсли;
ДокументРезультат.Вывести( ОбластьДанныхПодвал);
КонецЦикла;

//КонецЦикла;
//КонецЦикла;
//Индикатор.Закрыть();
Возврат ДокументРезультат;

КонецФункции