helpf.pro
Регистрация

Выгрузка сотрудников из Камина

qwed557
26.04.2010 14:13Прочитано: 4167
есть обработка в камине, так вот вопрос как мен отсеять сотрудников которые уже уволены и в запросе выбрать только тех кто на данный момент работает, ну или не в запросе может еще как нибудь отсеять. Вот модуль самой обработки: Что надо поправить?
Код 1C v 8.х
 Процедура КнопкаВыполнитьНажатие(Кнопка)
Текст = Новый ТекстовыйДокумент();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ФИОСотрудников.Фамилия КАК Фамилия,
| ФИОСотрудников.Имя КАК Имя,
| ФИОСотрудников.Отчество КАК Отчество,
| Сотрудники.Документ.ДатаВыдачи,
| Сотрудники.Документ.КемВыдан,
| Сотрудники.Документ.НомерДокумента,
| Сотрудники.Документ.СерияДокумента,
| Сотрудники.Ссылка,
| Сотрудники.ТрудовойСтаж.(
| ДокументУвольнение.Дата,
| ДокументУвольнение.Ссылка
| ),
| Сотрудники.ДатаРождения
|ИЗ
| РегистрСведений.ФИОСотрудников КАК ФИОСотрудников
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
| ПО ФИОСотрудников.Сотрудник = Сотрудники.Ссылка
|ГДЕ
| Сотрудники.ПометкаУдаления = ЛОЖЬ
| И Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения > '26.04.2010'
|
|УПОРЯДОЧИТЬ ПО
| Фамилия,
| Имя,
| Отчество";


//Документы.
//Запрос.УстановитьПараметр("ПустоеУвольнение", Документы.Увольнение.ПустаяСсылка());
Результат = Запрос.Выполнить();
Выборка = результат.Выбрать();

КолВо = Выборка.Количество();
ЭлементыФормы.Колво.Значение = Колво;

//ПрогрессБар***************************************************************
// ЭлементыФормы.ИндикаторЗагрузки.МаксимальноеЗначение = Выборка.Количество();
// ЭлементыФормы.ИндикаторЗагрузки.МинимальноеЗначение = 0;
//****************************************************************************
Пока Выборка.Следующий() Цикл

СпрОбъект = Выборка.Ссылка.ПолучитьОбъект();
// Если (Спробъект.ТрудовойСтаж[0].КадровыйДокумент.ДатаУвольнения = Null) или(Не ЗначениеЗаполнено(Спробъект.ТрудовойСтаж[0].КадровыйДокумент.ДатаУвольнения))ИЛИ (Спробъект.ТрудовойСтаж[0].КадровыйДокумент.ДатаУвольнения > РабочаяДата) Тогда

Спробъект = "" + Выборка.Фамилия + ";" + Выборка.Имя + ";" + Выборка.Отчество + ";" + СокрЛП(Выборка.ДокументНомерДокумента) + "" + СокрЛП(Выборка.ДокументСерияДокумента) + ";" + СокрЛП(Выборка.ДокументДатаВыдачи) + "" + СокрЛП(Выборка.ДокументКемВыдан) +";" + СокрЛП(СпрОбъект.КонтактнаяИнформация[0].Информация) +";" + СокрЛП(СпрОбъект.КонтактнаяИнформация[1].Информация) + ";" + Формат(Выборка.ДатаРождения, "ДФ=""yyyyММdd""");
Текст.ДобавитьСтроку(СпрОбъект);
// КонецЕсли;
КонецЦикла;
//Бар Его ваще надо убрать*****************************************
// Для Сч = 0 По Выборка.Количество() - 1 Цикл
// ЭлементыФормы.ИндикаторЗагрузки.Значение = Сч;
//**********************************************

// КонецЦикла;
текст.записать("C:\BankMoskvi.txt");
КонецПроцедуры
Yandex
Возможно, вас также заинтересует
Реклама на портале
qwed557
26.04.2010 14:21Ответ № 1
Забыл добавить что у некоторых пользователей стоит дата увольнения в 2011 году, у некоторых вообще это поле пустое
qwed557
26.04.2010 14:21Ответ № 2
Вопрос закрыт!
qwed557
26.04.2010 14:23Ответ № 3
Вопрос не закрыт, это я случайно так кликнул что закры
E_Migachev
26.04.2010 16:26Ответ № 4
Если я правильно понял, то данный запрос выводит тебе тех сотрудников у которых дата увольнения больше 26.04.2010. так?
qwed557
26.04.2010 17:22Ответ № 5
да , но мне надо чтобы выводил и тех у кого дата пустая
E_Migachev
26.04.2010 17:56Ответ № 6
так тогда:
Код 1C v 8.х
 
|ГДЕ
| Сотрудники.ПометкаУдаления = ЛОЖЬ
| И (Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения > '26.04.2010'
| ИЛИ Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения = '00010101000000' )


Попробуй так!
qwed557
27.04.2010 05:54Ответ № 7
а что означают эти цифры 00010101000000 ? И кстати ругается на
Ошибка при вызове метода контекста (Выполнить): {(21, 66)}: Синтаксическая ошибка "'00010101000000'"
ИЛИ Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения = <<?>>'00010101000000' )
Результат = Запрос.Выполнить();
qwed557
27.04.2010 05:54Ответ № 8
а что означают эти цифры 00010101000000 ? И кстати ругается на
Ошибка при вызове метода контекста (Выполнить): {(21, 66)}: Синтаксическая ошибка "'00010101000000'"
ИЛИ Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения = <<?>>'00010101000000' )
Результат = Запрос.Выполнить();
E_Migachev
27.04.2010 08:28Ответ № 9
00010101000000 - Это пустая дата
Тогда пробуй так:
Код 1C v 8.х
 ... "
|ГДЕ
| Сотрудники.ПометкаУдаления = ЛОЖЬ
| И (Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения > '26.04.2010'
| ИЛИ Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения = &ПустДата)";
ПустДата = 00010101000000;
Запрос.УстановитьПараметр("ПустДата", ПустДата);
Результат = Запрос.Выполнить();
//....
E_Migachev
27.04.2010 08:30Ответ № 10
Ой, в 6-ой строке надо так:
Код 1C v 8.х
 ПустДата = Дата('00010101000000');   
qwed557
27.04.2010 08:44Ответ № 11
Все равно выгружает всех подряд с таким кодом |ГДЕ
| (Сотрудники.ПометкаУдаления = ЛОЖЬ
| ИЛИ Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения > &Дата
| ИЛИ Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения = &ПустДата)
|
|УПОРЯДОЧИТЬ ПО
| Фамилия,
| Имя,
| Отчество";
ПустДата = Дата('00010101000000');
Запрос.УстановитьПараметр("Дата", "27.04.2010");
Запрос.УстановитьПараметр("ПустДата", ПустДата);
Результат = Запрос.Выполнить();

Может надо к чему то другому обращаться , я всмысле про Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения
E_Migachev
27.04.2010 09:55Ответ № 12
А так:
Код 1C v 8.х
 |ГДЕ
| (Сотрудники.ПометкаУдаления = ЛОЖЬ
| И (Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения > &Дата
| ИЛИ Сотрудники.ТрудовойСтаж.ДокументУвольнение.ДатаУвольнения = &ПустДата))
|
|УПОРЯДОЧИТЬ ПО
| Фамилия,
| Имя,
| Отчество";
ПустДата = Дата('00010101000000');
Запрос.УстановитьПараметр("Дата", РабочаяДата());
Запрос.УстановитьПараметр("ПустДата", ПустДата);
Результат = Запрос.Выполнить();
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.