![]() |
![]() |
![]() |
|
ЗУП - табель Т-13 - а че там до сих пор все так криво? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
15.08.13
✎
13:14
|
Условия накладываются только на итоговую таблицу в СКД
в которую еще и все уволенные попадают табель на 5 человек из 1200 штатных по одному отделению формируется минут 5. |
|||
1
RomaH
naïve
15.08.13
✎
13:15
|
или никто этим отчетом не пользуется?
|
|||
2
wPa
15.08.13
✎
13:15
|
(0) это вечный объект обновлений
|
|||
3
RomaH
naïve
15.08.13
✎
13:50
|
ВЫБРАТЬ
СрезПоследних.Сотрудник КАК Сотрудник ПОМЕСТИТЬ втРаботающиеСотрудники ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НачалоПериода, ) КАК СрезПоследних ГДЕ ВЫБОР КОГДА СрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1) И СрезПоследних.ПериодЗавершения <= &НачалоПериода ТОГДА СрезПоследних.ПричинаИзмененияСостоянияЗавершения ИНАЧЕ СрезПоследних.ПричинаИзмененияСостояния КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РаботникиОрганизаций.Сотрудник ИЗ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ГДЕ РаботникиОрганизаций.Период МЕЖДУ &НачалоПериода И &КонецПериода И РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) ИНДЕКСИРОВАТЬ ПО Сотрудник ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ ПоследниеДаты.ПериодРегистрации КАК ПериодРегистрации, РаботникиОрганизаций.Сотрудник КАК Сотрудник, ВЫБОР КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА РаботникиОрганизаций.ОбособленноеПодразделениеЗавершения ИНАЧЕ РаботникиОрганизаций.ОбособленноеПодразделение КОНЕЦ КАК Организация, РаботникиОрганизаций.Сотрудник.Физлицо КАК Физлицо, ВЫБОР КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА РаботникиОрганизаций.ПодразделениеОрганизацииЗавершения ИНАЧЕ РаботникиОрганизаций.ПодразделениеОрганизации КОНЕЦ КАК ПодразделениеОрганизации, ВЫБОР КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА РаботникиОрганизаций.ДолжностьЗавершения ИНАЧЕ РаботникиОрганизаций.Должность КОНЕЦ КАК Должность, ВЫБОР КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА РаботникиОрганизаций.ГрафикРаботыЗавершения ИНАЧЕ РаботникиОрганизаций.ГрафикРаботы КОНЕЦ КАК ГрафикРаботы, РаботникиОрганизаций.Организация КАК ГоловнаяОрганизация, ПоследниеДаты.ДатаКалендаря ПОМЕСТИТЬ Сотрудники ИЗ (ВЫБРАТЬ ДатыПоследнихДвижений.ПериодРегистрации КАК ПериодРегистрации, ДатыПоследнихДвижений.Период КАК Период, РаботникиОрганизаций.Сотрудник КАК Физлицо, РаботникиОрганизаций.Организация КАК Организация, КОЛИЧЕСТВО(РаботникиОрганизаций.Период) КАК КолВоДвижений, ДатыПоследнихДвижений.ДатаКалендаря КАК ДатаКалендаря ИЗ (ВЫБРАТЬ Периоды.Период КАК ПериодРегистрации, МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период, РаботникиОрганизаций.Сотрудник КАК Физлицо, РаботникиОрганизаций.Организация КАК Организация, Периоды.ДатаКалендаря КАК ДатаКалендаря ИЗ (ВЫБРАТЬ РАЗЛИЧНЫЕ НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, МЕСЯЦ) КАК Период, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода) КАК Периоды ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ПО (РаботникиОрганизаций.Период <= Периоды.ДатаКалендаря) {ГДЕ РаботникиОрганизаций.Сотрудник.Физлицо.* КАК Физлицо} СГРУППИРОВАТЬ ПО Периоды.Период, РаботникиОрганизаций.Организация, РаботникиОрганизаций.Сотрудник, Периоды.ДатаКалендаря) КАК ДатыПоследнихДвижений ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ВНУТРЕННЕЕ СОЕДИНЕНИЕ втРаботающиеСотрудники КАК втРаботающиеСотрудники ПО РаботникиОрганизаций.Сотрудник = втРаботающиеСотрудники.Сотрудник ПО ДатыПоследнихДвижений.Организация = РаботникиОрганизаций.Организация И ДатыПоследнихДвижений.Период = РаботникиОрганизаций.Период И ДатыПоследнихДвижений.Физлицо = РаботникиОрганизаций.Сотрудник {ГДЕ РаботникиОрганизаций.Сотрудник.Физлицо.* КАК Физлицо} СГРУППИРОВАТЬ ПО ДатыПоследнихДвижений.ПериодРегистрации, РаботникиОрганизаций.Организация, ДатыПоследнихДвижений.Период, РаботникиОрганизаций.Сотрудник, ДатыПоследнихДвижений.ДатаКалендаря) КАК ПоследниеДаты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ВНУТРЕННЕЕ СОЕДИНЕНИЕ втРаботающиеСотрудники КАК втРаботающиеСотрудники ПО (втРаботающиеСотрудники.Сотрудник = РаботникиОрганизаций.Сотрудник) ПО ПоследниеДаты.Организация = РаботникиОрганизаций.Организация И ПоследниеДаты.Период = РаботникиОрганизаций.Период И ПоследниеДаты.Физлицо = РаботникиОрганизаций.Сотрудник ГДЕ (ПоследниеДаты.КолВоДвижений = 2 И РаботникиОрганизаций.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) ИЛИ ПоследниеДаты.КолВоДвижений = 1) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ Сотрудники.ПериодРегистрации КАК ПериодРегистрации, Сотрудники.Сотрудник КАК Сотрудник, Сотрудники.Организация КАК Организация, Сотрудники.Физлицо КАК Физлицо, Сотрудники.ПодразделениеОрганизации КАК ПодразделениеОрганизации, Сотрудники.Должность КАК Должность, Сотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация, Сотрудники.ДатаКалендаря КАК ДатаКалендаря, Сотрудники.ГрафикРаботы {ВЫБРАТЬ ПериодРегистрации, Сотрудник.*, Организация.*, Физлицо.*, ПодразделениеОрганизации.*, Должность.*, ГоловнаяОрганизация.*, ДатаКалендаря} ИЗ Сотрудники КАК Сотрудники {ГДЕ Сотрудники.ПериодРегистрации, Сотрудники.Сотрудник.*, Сотрудники.Организация.*, Сотрудники.Физлицо.*, Сотрудники.ПодразделениеОрганизации.*, Сотрудники.Должность.*, Сотрудники.ГоловнаяОрганизация.*, Сотрудники.ДатаКалендаря} вот такая доработка не внесет ошибок в отчет? исключаем уволенных из выборки разница - 260 сек с отбором по подразделению до и 8 сек - после |
|||
4
RomaH
naïve
15.08.13
✎
13:52
|
добавляется первая временная таблица и связи по ней во второй с регистром работники
|
|||
5
ptiz
15.08.13
✎
13:54
|
(0) Небось, база файловая?
|
|||
6
RomaH
naïve
15.08.13
✎
13:56
|
(5) ага, а ускорения в 30 раз я добился переносом файловой на серверную
|
|||
7
RomaH
naïve
15.08.13
✎
13:58
|
(5) 2000 сотрудников в штате и 5 лет работы в базе с огромной текучкой
|
|||
8
RomaH
naïve
15.08.13
✎
14:01
|
и сюда же
как ускорить еще и это? // Проверяет, умещаются ли переданные табличные документы на страницу при печати. // // Параметры // ТабДокумент – Табличный документ // ВыводимыеОбласти – Массив из проверяемых таблиц или табличный документ // РезультатПриОшибке - Какой возвращать результат при возникновении ошибки // // Возвращаемое значение: // Булево – умещаются или нет переданные документы // Функция ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, РезультатПриОшибке = Истина) Экспорт Попытка Возврат ТабДокумент.ПроверитьВывод(ВыводимыеОбласти); Исключение Возврат РезультатПриОшибке; КонецПопытки; КонецФункции // ПроверитьВыводТабличногоДокумента() табель на большое число сотрудников (на всю организацию) упирается в эту проверку - чуть меньше секунды на одно обращение ... |
|||
9
RomaH
naïve
21.08.13
✎
10:41
|
(8) вроде все следующие после 2 листа содержат одинаковое количество строк?
т.е. можно посчитать количество выводимых строк на втором листе, а дальше делать не ПроверитьВывод а просто считать строки выведенные на лист? |
|||
10
ptiz
21.08.13
✎
10:43
|
(9) Мы не против.
Просто 1С не заморачивается такой оптимизацией. |
|||
11
Serg_1960
21.08.13
✎
11:04
|
(9) Нет, это не совсем верное/полное заключение.
Надо ещё проверить/изменить макет - убрать в свойствах ячеек строки "переносить" на "обрезать". А то, например, могут ФИО и/или должность не поместится в одну строку - и вместо одной строки будет две строки(или более) в печатной форме. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |