|
v7: Как убрать уволенных сотрудников из отчета? | ☑ | ||
---|---|---|---|---|
0
Начинающий Админ
26.10.11
✎
09:41
|
Здравствуйте! Я сделала отчет, который формирует сведения об отпусках за период на основе документа ПриказПоОтпуску, но в него попадают все сотрудники, в том числе и уволенные. Подскажите, пожалуйста, как убрать уволенных сотрудников из отчета? И как сделать, чтобы по сотруднику выводились не все его отпуска, а только последний?
|
|||
1
aleks-id
26.10.11
✎
09:45
|
>>Пол:Мужской
>>Я сделала отчет ВТФ? |
|||
2
Amra
26.10.11
✎
09:45
|
Объясняю:
1. Определиться с полом. 2. Если таки женский - вставить фотку в личку. 3. Рассказать, что именно не получается |
|||
3
Jaffar
26.10.11
✎
09:58
|
а чем у вас уволенный сотрудник отличается от работающего? может реквизит ДатаОкончания заполнен? тогда и действовать соответственно (условие в запросе или фильтр при выводе).
а вот с последним отпуском интереснее будет. разве что сначала заполнить для каждого сотрудника таблицу с номерами документов по отпускам или датами начала и окончания отпуска (при заполнении заменять дату на более позднюю), а потом выводить. |
|||
4
aka AMIGO
26.10.11
✎
10:08
|
(0) чтобы не попадали уволенные - напиши условие-фильтр по состоянию физлица "уволен"
ЗЫ. СостояниеФЛ - вычисляемый реквизит, если чо.. |
|||
5
Начинающий Админ
01.11.11
✎
09:59
|
И снова здравствуйте!
Пол - женский, фотку потом вставлю :) Я совсем-совсем начинающий программист, поэтому такие вопросы задаю. Из отчета убрала уволенных, а с последним отпуском еще не работала. Сейчас пытаюсь сделать сортировку по сотруднику, сделала таблицу значений, все условия поставила. Но вот вопрос, как вывести сам отчет? Если пишу ТабСотрудников.Показать(); то ошибка - поле агрегатного объекта не найдено (Показать). Если убираю эту строку, то обработка идет, но таблица не выводится. Помогите, плиз. Вот код: ТабСотрудников = СоздатьОбъект("ТаблицаЗначений"); ТабСотрудников.НоваяКолонка("Сотрудник"); ТабСотрудников.НоваяКолонка("Должность"); ТабСотрудников.НоваяКолонка("Подразделение"); ТабСотрудников.НоваяКолонка("НачалоПериода"); ТабСотрудников.НоваяКолонка("ОкончаниеПериода"); ТабСотрудников.НоваяКолонка("КоличествоДнейОтпуска"); КадрДокументы = СоздатьОбъект("Документ.ПриказПоОтпуску"); КадрДокументы.ВыбратьДокументы(МесяцНачало,МесяцОкончание); Пока КадрДокументы.ПолучитьДокумент() = 1 Цикл ТабСотрудников.НоваяСтрока(); КадрДокумент = КадрДокументы.ТекущийДокумент(); Сотрудник = КадрДокументы.Сотрудник; СостояниеСотрудника = Сотрудник.СостояниеФизЛица.Получить(МесяцОкончание); Если (СостояниеСотрудника = Перечисление.СостояниеФизлица.СотрудникОсновной) или (СостояниеСотрудника = Перечисление.СостояниеФизлица.СотрудникНеосновной) Тогда ВидыОтпуска = КадрДокументы.ВидОтпуска; Если ВидыОтпуска = ВидРасчета.ОтпускОчередной Тогда Сотрудник = КадрДокументы.Сотрудник; Должность = Сотрудник.Должность.Получить(МесяцОкончание); Подразделение = Сотрудник.Подразделение.Получить(МесяцОкончание); НачалоПериода = КадрДокумент.НачалоПериода; ОкончаниеПериода = КадрДокумент.ОкончаниеПериода; КоличествоДнейОтпуска = КадрДокумент.КоличествоДнейОтпуска; Иначе Продолжить; КонецЕсли; КонецЕсли; КонецЦикла; ТабСотрудников.Сортировать("Сотрудник+"); ТабСотрудников.ВыбратьСтроки(); Пока ТабСотрудников.ПолучитьСтроку() = 1 Цикл КонецЦикла; ТабСотрудников.Показать(); КонецПроцедуры |
|||
6
borozavr
01.11.11
✎
10:09
|
(5) Т=СоздатьОбъект("Таблица");
ТабСотрудников.ВыбратьСтроки(); Пока ТабСотрудников.ПолучитьСтроку() = 1 Цикл Т.ВывестиСекцию("Сотрудник") КонецЦикла; Т.Показать("Отчет"); Ну и нарисовать макет. |
|||
7
Начинающий Админ
01.11.11
✎
11:14
|
Сделала так. Пишет ошибку: Секция не найдена Сотрудник.
Макет есть. Т.Показать("Отчет"); - а в скобках название процедуры нужно писать? |
|||
8
ДенисЧ
01.11.11
✎
11:15
|
(7) наверное, секций в макете нет? :-)
Нет, не нужно. И не процедура туда пишется. |
|||
9
Jaffar
01.11.11
✎
11:16
|
(5) Показать() - это метод таблицы (печатной формы) - ее сначала заполнить нужно, перебирая строки ТаблицыЗначений ТабСотрудников.
(7) какие секции есть в макете? как сам макет называется? если не "Таблица" - то нужно написать еще Т.ИспользоватьТаблицу("ТутМоеИмяМакета"); |
|||
10
ЧеловекДуши
01.11.11
✎
11:17
|
Предлагаю их не включать в список
|
|||
11
Начинающий Админ
01.11.11
✎
11:43
|
Макет есть "Таблица". У меня там секции "Шапка" и "Строка". в "Строке" описаны <Сотрудник>, <Должность> и др. Если закомментировать ВывестиСекцию ("Сотрудник"), то обработка выполняется, но выводится совершенно пустая таблица, без шапки. Если оставить - пишет ошибку. Что-то я не соображу никак (((
|
|||
12
zuza
01.11.11
✎
11:48
|
(11) Т.ВывестиСекцию("Строка");
|
|||
13
Jaffar
01.11.11
✎
12:51
|
Т=СоздатьОбъект("Таблица");
Т.ВывестиСекцию("Шапка"); ТабСотрудников.ВыбратьСтроки(); Пока ТабСотрудников.ПолучитьСтроку() = 1 Цикл Т.ВывестиСекцию("Сотрудник") КонецЦикла; Т.Показать("Отчет"); |
|||
14
Jaffar
01.11.11
✎
12:54
|
то ест так:
Т=СоздатьОбъект("Таблица"); Т.ВывестиСекцию("Шапка"); ТабСотрудников.ВыбратьСтроки(); Пока ТабСотрудников.ПолучитьСтроку() = 1 Цикл Т.ВывестиСекцию("Строка") КонецЦикла; Т.Показать("Отчет"); |
|||
15
Начинающий Админ
01.11.11
✎
13:28
|
Спасибо!!! Получилось! Только вот беда - выводит данные самого первого работника во всех строках
|
|||
16
Jaffar
01.11.11
✎
13:50
|
(15) тогда в макете напиши
<ТабСотрудников.Сотрудник>, <ТабСотрудников.Должность> или так: Т=СоздатьОбъект("Таблица"); Т.ВывестиСекцию("Шапка"); ТабСотрудников.ВыбратьСтроки(); Пока ТабСотрудников.ПолучитьСтроку() = 1 Цикл Сотрудник = ТабСотрудников.Сотрудник; Должность = ТабСотрудников.Должность; Т.ВывестиСекцию("Строка") КонецЦикла; Т.Показать("Отчет"); Так сможешь вычислить и вывести в таблицу произвольное значение. |
|||
17
Начинающий Админ
01.11.11
✎
14:11
|
пробовала и так, и так, и оба способа вместе. При первом и втором способах исчезает из таблицы ФИО сотрудника, должность, а остальные данные - все одинаковые (опять по одному сотруднику). Если меняю в модуле и в таблице
Сотрудник = ТабСотрудников.Сотрудник; то выводится этот отчет, сотрудник не определен, и ошибка - Переменная не определена (ТабСотрудниковСотрудник) |
|||
18
Jaffar
01.11.11
✎
14:18
|
(17) 1. ты определись - или присвоить все переменные макета в модуле и потом выводить уже их, или использовать в макете непосредственно реквизиты ТЗ.
я предпочитаю 1-й способ - так проще вносить изменения, не меняя макета. 2. Точка пропущена между "ТабСотрудников" и "Сотрудник" |
|||
19
Начинающий Админ
01.11.11
✎
15:55
|
СПАСИБО!!! :) Наконец-то он получился! Я добавила еще присвоение ТабСотрудников в переменные условия Если и все пошло!!!! Сейчас буду разбираться с выводом только последнего отпуска сотрудника, а не всех отпусков за период.
|
|||
20
Jaffar
01.11.11
✎
16:16
|
(19) сложно, но возможно. например, в (5) перед ТабСотрудников.НоваяСтрока(); проверить, есть ли уже такой сотрудник в таблице. если есть - позиционироваться на нем и записать поверх существующей информации новую, если нет - тогда добавить новую строку и заполнить ее.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |