Имя: Пароль:
1C
1C 7.7
v7: Итоги по отработанному времени!
0 skaylanz23
 
10.01.17
19:24
У меня есть процедура, которая рассчитывает количество отработанного времени и мне надо: 1)итог по отработанному времени сотрудника и 2)итог по филиалу. Какой код нужно написать чтобы сформировать данные итоги. Заранее спасибо!

Вот кусочек моей программы куда я бы хотел вставить итоги:

ТЧ.Сортировать("Код,ДатаСоб,Время");
ТЧ2.НоваяКолонка("Филиал",,,,,5,,);
ТЧ2.НоваяКолонка("Код",,,,,8,,);
ТЧ2.НоваяКолонка("ДатаСоб",,,,,5,,);
ТЧ2.НоваяКолонка("Приход",,,,,5,,);
ТЧ2.НоваяКолонка("Уход",,,,,5,,);
ТЧ2.НоваяКолонка("КолОтрМин",,,,,5,,);

Час2 = 0;
Мин2 = 0;
СекОстМин= 0;
Сек2 = 0;

Час3 = 0;
Мин3 = 0;
СекОстМин3 = 0;
Сек2 = 0;

Час4 = 0;
Мин4 = 0;
СекОстМин4 = 0;
Сек4 = 0;

ТекКод = "";
ТекДата = "";
ТекВремя = "";
ТекТип = "";


ТЧ.ВыбратьСтроки();

Пока ТЧ.ПолучитьСтроку() = 1 Цикл

Если ТекКод = "" Тогда

ТекКод = ТЧ.Код;
ТекДата = ТЧ.ДатаСоб;
ТекТип = ТЧ.Тип;

Если ТекТип = "Приход" Тогда

ТекВремя = ТЧ.Время;

Иначе

ТЧ2.НоваяСтрока();
ТЧ2.Филиал = ТЧ.Филиал;
ТЧ2.Код = ТЧ.Код;
ТЧ2.ДатаСоб = ТЧ.ДатаСоб;
ТЧ2.Приход = "0";
ТЧ2.Уход = ТЧ.Время;
ТЧ2.КолОтрМин = "0";

КонецЕсли;

Иначе

Если (ТекКод = ТЧ.Код) и (ТекДата = ТЧ.ДатаСоб) Тогда

Если (ТЧ.Тип = "Уход") и (ТекТип = "Приход") Тогда

ТЧ2.НоваяСтрока();
ТЧ2.Филиал = ТЧ.Филиал;
ТЧ2.Код = ТЧ.Код;
ТЧ2.ДатаСоб = ТЧ.ДатаСоб;
ТЧ2.Приход = ТекВремя;
ТЧ2.Уход = ТЧ.Время;
ТЧ2.КолОтрМин = ТЧ2.Уход - ТЧ2.Приход;

Час4 = Цел(Число(ТЧ2.Приход)/3600);
СекОстМин4 = Число(ТЧ2.Приход)%3600;
Мин4 = Цел((Число(ТЧ2.Приход) - Час4*3600)/60);
Сек4 = СекОстМин4%60;

ТЧ2.Приход = ?(СтрДлина(Строка(Час4))=2,Строка(Час4),"0" + Строка(Час4)) + ":" + ?(Строка(Мин4)=2,Строка(Мин4),"0" + Строка(Мин4)) + ":" + ?(Строка(Сек4)=2,Строка(Сек4),"0" + Строка(Сек4));

Час3 = Цел(Число(ТЧ2.Уход)/3600);
СекОстМин3 = Число(ТЧ2.Уход)%3600;
Мин3 = Цел((Число(ТЧ2.Уход) - Час3*3600)/60);
Сек3 = СекОстМин3%60;

ТЧ2.Уход = ?(СтрДлина(Строка(Час3))=2,Строка(Час3),"0" + Строка(Час3)) + ":" + ?(Строка(Мин3)=2,Строка(Мин3),"0" + Строка(Мин3)) + ":" + ?(Строка(Сек3)=2,Строка(Сек3),"0" + Строка(Сек3));

Час2 = Цел(Число(ТЧ2.КолОтрМин)/3600);
СекОстМин2 = Число(ТЧ2.КолОтрМин)%3600;
Мин2 = Цел((Число(ТЧ2.КолОтрМин) - Час2*3600)/60);
Сек2 = СекОстМин%60;

ТЧ2.КолОтрМин = ?(СтрДлина(Строка(Час2))=2,Строка(Час2),"0" + Строка(Час2)) + ":" + ?(Строка(Мин2)=2,Строка(Мин2),"0" + Строка(Мин2)) + ":" + ?(Строка(Сек2)=2,Строка(Сек2),"0" + Строка(Сек2));

ТекКод = ТЧ.Код;
ТекДата = ТЧ.ДатаСоб;
ТекТип = ТЧ.Тип;

ИначеЕсли ТЧ.Тип = "Приход" Тогда

ТекКод = ТЧ.Код;
ТекДата = ТЧ.ДатаСоб;
ТекТип = ТЧ.Тип;
ТекВремя = ТЧ.Время;

КонецЕсли;

Иначе

Если ТекТип = "Приход" Тогда

ТЧ2.НоваяСтрока();
ТЧ2.Филиал = ТЧ.Филиал;
ТЧ2.Код = ТекКод;
ТЧ2.ДатаСоб = ТекДата;
ТЧ2.Приход = ТекВремя;
ТЧ2.Уход = "0";
ТЧ2.КолОтрМин = "0";

Час4 = Цел(Число(ТЧ2.Приход)/3600);
СекОстМин4 = Число(ТЧ2.Приход)%3600;
Мин4 = Цел((Число(ТЧ2.Приход) - Час4*3600)/60);
Сек4 = СекОстМин4%60;

ТЧ2.Приход = ?(СтрДлина(Строка(Час4))=2,Строка(Час4),"0" + Строка(Час4)) + ":" + ?(Строка(Мин4)=2,Строка(Мин4),"0" + Строка(Мин4)) + ":" + ?(Строка(Сек4)=2,Строка(Сек4),"0" + Строка(Сек4));

КонецЕсли;

ТекКод = ТЧ.Код;
ТекДата = ТЧ.ДатаСоб;
ТекТип = ТЧ.Тип;

Если ТЧ.Тип = "Приход" Тогда

ТекВремя = ТЧ.Время;

Иначе

ТЧ2.НоваяСтрока();
ТЧ2.Филиал = ТЧ.Филиал;
ТЧ2.Код = ТекКод;
ТЧ2.ДатаСоб = ТекДата;
ТЧ2.Приход = "0";
ТЧ2.Уход = ТЧ.Время;
ТЧ2.КолОтрМин = "0";

Час3 = Цел(Число(ТЧ2.Уход)/3600);
СекОстМин3 = Число(ТЧ2.Уход)%3600;
Мин3 = Цел((Число(ТЧ2.Уход) - Час3*3600)/60);
Сек3 = СекОстМин3%60;

ТЧ2.Уход = ?(СтрДлина(Строка(Час3))=2,Строка(Час3),"0" + Строка(Час3)) + ":" + ?(Строка(Мин3)=2,Строка(Мин3),"0" + Строка(Мин3)) + ":" + ?(Строка(Сек3)=2,Строка(Сек3),"0" + Строка(Сек3));

КонецЕсли;

КонецЕсли;

КонецЕсли;    

КонецЦикла;

ТЧ2.Сортировать("Филиал,Код,ДатаСоб");
1 АнтонБ
 
10.01.17
19:29
А где деньги?
2 Djelf
 
10.01.17
23:35
(0) Примерно вот такой такой код должен помочь

    Сообщить("Я не умею пользоваться функциями","!");
    Сообщить("Я не знаю что такое рефакторинг","!");
    Сообщить("Я не знаю что такое Unixtime","!");
    Сообщить("Я не в знал что сотрудники могут работать с вечера до утра","!");
    Сообщить("Прошу меня уволить по собственному желанию","i");
Независимо от того, куда вы едете — это в гору и против ветра!