|
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) Примерно вот такой такой код должен помочь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |