powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Как выбрать Приказы По Отпускам, только после последнего приема на работу?
10 сообщений из 10, страница 1 из 1
Как выбрать Приказы По Отпускам, только после последнего приема на работу?
    #35209891
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

1Cv77 Кадры
есть сотрудники, которые увольнялись и приходили вновь (и я такой же)
табельный номер за нами сохраняется, то есть справочник Сотрудники использует ту же запись (тот же Сотрудник.Код)

получается несколько документов ПриказОприемеНаРаботу, у таких как мы

нужно выбрать Приказы по отпускам, всех работающих сотрудников, именно в запросе

мой запрос берет все приказы по отпускам, да же те которые были после первого приема на работу

Спасибо!
С Уважением Игорь.
...
Рейтинг: 0 / 0
Как выбрать Приказы По Отпускам, только после последнего приема на работу?
    #35210973
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Размер вознаграждения в студию
...
Рейтинг: 0 / 0
Как выбрать Приказы По Отпускам, только после последнего приема на работу?
    #35213704
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет у меня ничего, могу натурой отработать (овощи, например, то же натуральный продукт)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ПриказОПриеме = глПриказПоСотруднику(Запрос.Сотрудник, дтаДО, "ПриказОПриемеНаРаботу");

// здесь надо ПЕРЕБРАТЬ приказы по отпуску и подсуммировать <Использовано>,
// потому что ЗАПРОС берёт не нужные старые отпуска, если сотрудник устраивался несколько раз

Использовано =  0 ;	

Документы = СоздатьОбъект("Документ");
Документы.ВыбратьПоЗначению(ПриказОПриеме.ДатаПриема, дтаОкончание, "Сотрудник", Запрос.Сотрудник);

Пока Документы.ПолучитьДокумент() =  1  Цикл
	Если Документы.Вид() = "ПриказПоОтпуску" Тогда
		если (Документы.НачалоПериода >= дтаНачало) И (Документы.НачалоПериода <= дтаОкончание) Тогда
			Использовано = Использовано + Документы.КоличествоДнейОтпуска;
		конецесли;
	КонецЕсли;
КонецЦикла;
а как это запросом сделать?
...
Рейтинг: 0 / 0
Как выбрать Приказы По Отпускам, только после последнего приема на работу?
    #35215350
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну начнем с того, что в 7.7 язык запросов недостаточно развит чтобы только голым запросом можно было это сделать, вижу 2 варианта
1) Выборка приказов запросом , по сути дела замена
Код: plaintext
1.
2.
Документы = СоздатьОбъект("Документ");
Документы.ВыбратьПоЗначению....
на запрос
2) написать сфою функцию и использовать ее в запросе, в этом случае будет работать еще медленнее чем
Код: plaintext
1.
2.
Документы = СоздатьОбъект("Документ");
Документы.ВыбратьПоЗначению....

Вот общая концепция
...
Рейтинг: 0 / 0
Как выбрать Приказы По Отпускам, только после последнего приема на работу?
    #35216242
Хэх...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смотри на мыле - когда начинал, пытался что-то ваять... В качестве примера сойдет.
...
Рейтинг: 0 / 0
Как выбрать Приказы По Отпускам, только после последнего приема на работу?
    #35216410
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хэх...Смотри на мыле - когда начинал, пытался что-то ваять... В качестве примера сойдет.
Ваш пример посмотрел, благодарю.
В принципе, я тоже делаю перебором, т.е. в цикле.

Дело в том что в книге "описание встроенного языка" на стр 800
пишут, что можно обратиться в запросе сразу к двум документам через запятую (описано не очень подробно)

я сделал так, но не правильно. Да и условием трудности в запросе.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ЗапросОтпуска = СоздатьОбъект("Запрос");

стр_ = "
|        ТекДок = Документ.ПриказПоОтпуску.ТекущийДокумент, Документ.ПриказОПриемеНаРаботу.ТекущийДокумент;
|        Отпуск = Документ.ПриказПоОтпуску.ТекущийДокумент;
|       КолДней = Документ.ПриказПоОтпуску.КоличествоДнейОтпуска;
|
| НачалоПериода = Документ.ПриказПоОтпуску.НачалоПериода;
|
|    ДатаПриема = Документ.ПриказОПриемеНаРаботу.ДатаПриема;
|
| Группировка ТекДок без Групп;
| Условие ((НачалоПериода >= дтаНачало) И (НачалоПериода <= дтаОкончание));
| Функция Использовано = Сумма(КолДней) Когда (ДатаПриема ??????????);
|";

похоже вы оба правы, пока так и оставлю как сделал, перебором
С уважением Игорь.
...
Рейтинг: 0 / 0
Как выбрать Приказы По Отпускам, только после последнего приема на работу?
    #35217590
Хэх...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это кусок из модуля формы списка справочника "Сотрудники":
...............................
Периодический = СоздатьОбъект("Периодический");

Периодический.ИспользоватьОбъект("СостояниеФизлица",ТекущийЭлемент());
СостояниеФЗ = Периодический.ЗначениеНаДату(ДатаАктуальности);

Если Периодический.НайтиЗначение(ДатаАктуальности,-1)=1 Тогда
ДатаПриема = Периодический.ДатаЗнач
КонецЕсли;
...............................

Дальше хоть запросом, хоть перебором...
...
Рейтинг: 0 / 0
Как выбрать Приказы По Отпускам, только после последнего приема на работу?
    #35219522
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашел этот код, Функция СостояниеСотрудника() для колонки "Состояние"
пример интересен
но если не запросом, то я использую функцию из глобального модуля глПриказПоСотруднику()
которая то же возвращает последнюю ДатуПриема

а мне хотелось запросом, как-нибудь так
Код: plaintext
1.
стр_ = "
|        ТекДок = Документ.ПриказПоОтпуску.ТекущийДокумент,  Документ.ПриказОПриемеНаРаботу.ТекущийДокумент;
что бы выйграть в скорости, и выбрать всех сотрудников, за конкретный период, конечно.
...
Рейтинг: 0 / 0
Как выбрать Приказы По Отпускам, только после последнего приема на работу?
    #35221946
Хэх...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще... не рекомендуется получать данные из доков(могут быть изменены без проведения). В 7.7 у каждой компоненты свое "хранилище" актуальных данных: оперучет - регистры, бухия - БухИтоги, а в зарплате - Журналы расчетов...:) Порой в этом напрвлении.
...
Рейтинг: 0 / 0
Как выбрать Приказы По Отпускам, только после последнего приема на работу?
    #35223475
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за разъяснения и примеры.
С уважением Игорь.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Как выбрать Приказы По Отпускам, только после последнего приема на работу?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]