Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Командировки и Отпуска


Автор: bucdapus 14.11.2010, 19:14
задача состоит в том чтобы дописать кусок кода в общий модуль документа "Командировки организации", а именно чтобы перед записью командировки происходила проверка а не находится ли сотрудник или сотрудники в отпуске. т.е если сотрудника организации отправили в отпуск с 14 ноября по 1 декабря. то при заполнении командировки другим лицом он не мог отправить сотрудника в командировку с 14 ноября по 1 декабря. я написал кусок... но только если в документе 1 сотрудник ... Как сделать чтобы шла проверка всех????

ДатаНачалаКомандировки = РаботникиОрганизации[0].ДатаНачала;
                Запрос = Новый Запрос;
                Запрос.УстановитьПараметр("ФизЛицо",РаботникиОрганизации[0].ФизЛицо);
                Запрос.УстановитьПараметр("Организация",Организация);
                Запрос.Текст = "ВЫБРАТЬ
                               |              ОтпускаОрганизацийРаботникиОрганизации.ФизЛицо КАК ФизЛицо,
                               |              ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала КАК ДатаНачала,
                               |              ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания КАК ДатаОкончания,
                               |              ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация КАК Организация,
                               |              ОтпускаОрганизацийРаботникиОрганизации.Ссылка КАК Ссылка
                               |ИЗ
                               |              Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
                               |ГДЕ
                               |              ОтпускаОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления = ЛОЖЬ
                               |              И ОтпускаОрганизацийРаботникиОрганизации.ФизЛицо = &ФизЛицо
                               |              И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация";
                                                                                 
                ВыборкаКонтактныеЛица = Запрос.Выполнить().Выбрать();
                Пока ВыборкаКонтактныеЛица.Следующий() Цикл
                               //Сообщить(ВыборкаКонтактныеЛица.ФизЛицо);
                               //Сообщить(ВыборкаКонтактныеЛица.ДатаНачала);
                               //Сообщить(ВыборкаКонтактныеЛица.ДатаОкончания);
                               Если (ДатаНачалаКомандировки>=ВыборкаКонтактныеЛица.ДатаНачала) и (ДатаНачалаКомандировки<=ВыборкаКонтактныеЛица.ДатаОкончания) Тогда
                                               Сообщить("Ошибка записи командировки!!! У "+ВыборкаКонтактныеЛица.ФизЛицо+"  отпуск до "+ВыборкаКонтактныеЛица.ДатаОкончания+". Документ об отпуске "+ВыборкаКонтактныеЛица.Ссылка);
                                               Отказ = Истина;
                               КонецЕсли;
                КонецЦикла;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)