Как составить отчет, выводящий сотрудников, работавших на дату в 77?

Новая тема
"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)}: Переменная не определена (Типч)"
"То что вы нашли в интернете, это довольно простой кусок алгоритма с точки зрения корректности собираемых данных. Его особенности:
- не будут выведены все сотрудники, находящиеся в отпуске по уходу за ребенком
- не будут выведены все сотрудники, являющиеся внешними совместителями
- не будут выведены все сотрудники, работающие по договору гражданско-правового характера

Сразу у вас оно не заработало потому что алгоритм, который вы видите написан для заполнения табличной части какого то документа, вероятно табеля учета рабочего времени и ожидается, что есть табличная часть, предопределенный реквизит ДатаДок, описывающий момент, на который происходит выборка и все такое. Короче, в чистом виде, как вы это нашли, вас это не устроит, совершенно точно.
Алгоритм должен быть примерно такой:

НужнаяДата=Дата("26.03.2006"); //какая то дата, на которую формируем выборку
Сотрудники=СоздатьОбъект("Справочник.Сотрудники");
Сотрудники.ВыбратьЭлементы(0);
Пока Сотрудники.ПолучитьЭлемент(1)=1 Цикл
    ТекСотрудник=Сотрудники.ТекущийЭлемент()
    Если ПустоеЗначение(ТекСотрудник.СостояниеФизЛица.Получить(НужнаяДата))=0 Тогда
         Сообщить(ТекСотрудник);
    ИначеЕсли глВидРасчетаДействует(ТекСотрудник,,НужнаяДата,НужнаяДата)=1 Тогда
         Сообщить(ТекСотрудник);
    КонецЕсли;
КонецЦикла;"
Читают тему
(гостей: 1)

Быстрый переход