Как составить отчет, выводящий сотрудников, работавших на дату в 77?
16.04.2010
16:42
#1
"1С 77.025 ЗиК 7.70.295
Нужен отчет, который выбирал бы сотрудников, работавших на предприятии на определенную дату. В Отчеты - Произвольные нет реквизита отбора по датам (т.е. показать всех, у кого Дата приема на работу > произвольная дата < увольнения или работа по н.в) Как его составить? Или сделать обработку?
Нашел в интернете:
СпрСот = СоздатьОбъект("Справочник.Сотрудники");
СпрСот.ВыбратьЭлементы();
Пока СпрСот.ПолучитьЭлемент() = 1 Цикл
Если СпрСот.СостояниеФизЛица.Получить(ДатаДок) = Перечисление.СостояниеФизЛица.СотрудникОсновной Тогда
НоваяСтрока();
Сотрудник = СпрСот.ТекущийЭлемент();
ТипЧасов = Типч;
КонецЕсли;
КонецЦикла;
Запускаю во внешней обработке, но у меня она выдает:
Если СпрСот.СостояниеФизЛица.Получить(ДатаДок<>>) = Перечисление.СостояниеФизЛица.СотрудникОсновной Тогда
{\\BASE\EXTFORMS\SOTR_NA_DATU.ERT(6)}: Переменная не определена (ДатаДок)
НоваяСтрока<>>();
{\\BASE\EXTFORMS\SOTR_NA_DATU.ERT(7)}: Процедура не обнаружена (НоваяСтрока)
ТипЧасов = Типч<>>;
{\\BASE\EXTFORMS\SOTR_NA_DATU.ERT(9)}: Переменная не определена (Типч)"
Нужен отчет, который выбирал бы сотрудников, работавших на предприятии на определенную дату. В Отчеты - Произвольные нет реквизита отбора по датам (т.е. показать всех, у кого Дата приема на работу > произвольная дата < увольнения или работа по н.в) Как его составить? Или сделать обработку?
Нашел в интернете:
СпрСот = СоздатьОбъект("Справочник.Сотрудники");
СпрСот.ВыбратьЭлементы();
Пока СпрСот.ПолучитьЭлемент() = 1 Цикл
Если СпрСот.СостояниеФизЛица.Получить(ДатаДок) = Перечисление.СостояниеФизЛица.СотрудникОсновной Тогда
НоваяСтрока();
Сотрудник = СпрСот.ТекущийЭлемент();
ТипЧасов = Типч;
КонецЕсли;
КонецЦикла;
Запускаю во внешней обработке, но у меня она выдает:
Если СпрСот.СостояниеФизЛица.Получить(ДатаДок<>>) = Перечисление.СостояниеФизЛица.СотрудникОсновной Тогда
{\\BASE\EXTFORMS\SOTR_NA_DATU.ERT(6)}: Переменная не определена (ДатаДок)
НоваяСтрока<>>();
{\\BASE\EXTFORMS\SOTR_NA_DATU.ERT(7)}: Процедура не обнаружена (НоваяСтрока)
ТипЧасов = Типч<>>;
{\\BASE\EXTFORMS\SOTR_NA_DATU.ERT(9)}: Переменная не определена (Типч)"
19.04.2010
10:25
#2
"То что вы нашли в интернете, это довольно простой кусок алгоритма с точки зрения корректности собираемых данных. Его особенности:
- не будут выведены все сотрудники, находящиеся в отпуске по уходу за ребенком
- не будут выведены все сотрудники, являющиеся внешними совместителями
- не будут выведены все сотрудники, работающие по договору гражданско-правового характера
Сразу у вас оно не заработало потому что алгоритм, который вы видите написан для заполнения табличной части какого то документа, вероятно табеля учета рабочего времени и ожидается, что есть табличная часть, предопределенный реквизит ДатаДок, описывающий момент, на который происходит выборка и все такое. Короче, в чистом виде, как вы это нашли, вас это не устроит, совершенно точно.
Алгоритм должен быть примерно такой:
НужнаяДата=Дата("26.03.2006"); //какая то дата, на которую формируем выборку
Сотрудники=СоздатьОбъект("Справочник.Сотрудники");
Сотрудники.ВыбратьЭлементы(0);
Пока Сотрудники.ПолучитьЭлемент(1)=1 Цикл
ТекСотрудник=Сотрудники.ТекущийЭлемент()
Если ПустоеЗначение(ТекСотрудник.СостояниеФизЛица.Получить(НужнаяДата))=0 Тогда
Сообщить(ТекСотрудник);
ИначеЕсли глВидРасчетаДействует(ТекСотрудник,,НужнаяДата,НужнаяДата)=1 Тогда
Сообщить(ТекСотрудник);
КонецЕсли;
КонецЦикла;"
- не будут выведены все сотрудники, находящиеся в отпуске по уходу за ребенком
- не будут выведены все сотрудники, являющиеся внешними совместителями
- не будут выведены все сотрудники, работающие по договору гражданско-правового характера
Сразу у вас оно не заработало потому что алгоритм, который вы видите написан для заполнения табличной части какого то документа, вероятно табеля учета рабочего времени и ожидается, что есть табличная часть, предопределенный реквизит ДатаДок, описывающий момент, на который происходит выборка и все такое. Короче, в чистом виде, как вы это нашли, вас это не устроит, совершенно точно.
Алгоритм должен быть примерно такой:
НужнаяДата=Дата("26.03.2006"); //какая то дата, на которую формируем выборку
Сотрудники=СоздатьОбъект("Справочник.Сотрудники");
Сотрудники.ВыбратьЭлементы(0);
Пока Сотрудники.ПолучитьЭлемент(1)=1 Цикл
ТекСотрудник=Сотрудники.ТекущийЭлемент()
Если ПустоеЗначение(ТекСотрудник.СостояниеФизЛица.Получить(НужнаяДата))=0 Тогда
Сообщить(ТекСотрудник);
ИначеЕсли глВидРасчетаДействует(ТекСотрудник,,НужнаяДата,НужнаяДата)=1 Тогда
Сообщить(ТекСотрудник);
КонецЕсли;
КонецЦикла;"
Читают тему
(гостей: 1)