Имя: Пароль:
1C
 
КадровыеПеремещения
, ,
0 Бурундук
 
29.10.21
22:02
Функция СотрудникУжеНаходитсяВДанномПодразделении(Сотрудник, Подразделение)
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    КадровыеПеремещенияСрезПоследних.Период КАК Период,
                       |    КадровыеПеремещенияСрезПоследних.Сотрудник КАК Сотрудник,
                       |    КадровыеПеремещенияСрезПоследних.Подразделение КАК Подразделение,
                       |    КадровыеПеремещенияСрезПоследних.ПричинаИзмененияСостояния КАК ПричинаИзмененияСостояния
                       |ИЗ
                       |    РегистрСведений.КадровыеПеремещения.СрезПоследних КАК КадровыеПеремещенияСрезПоследних
                       |ГДЕ
                       |    КадровыеПеремещенияСрезПоследних.Сотрудник = &Сотрудник
                       |    И КадровыеПеремещенияСрезПоследних.Подразделение = &Подразделение
                       |    И КадровыеПеремещенияСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояний.Увольнение)";
        Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
        Запрос.УстановитьПараметр("Подразделение", Подразделение);
        Результат = Запрос.Выполнить();
        Выборка = Результат.Выбрать();
        Если Выборка.Следующий() Тогда
            Возврат Истина;
        КонецЕсли;
        Возврат Ложь;
        КонецФункции
    
    Процедура ОбработкаПроведения(Отказ, РежимПроведения)
        //Проверка
        Если СотрудникУволен(Сотрудник) Тогда
            Сообщить("Документ нельзя провести! Данный сотрудник был уволен!");
            Отказ = Истина;
            Возврат;
        КонецЕсли;  
        //Проверка
        Если СотрудникНеПринятНаРаботу(Сотрудник) Тогда
            Сообщить("Документ не проведён! Сотрудник ещё не был принят на работу!");
            Отказ = ИСТИНА;
            Возврат;
        КонецЕсли;  
        //Проверка
        Если СотрудникУжеНаходитсяВДанномПодразделении(Сотрудник, Подразделение) Тогда
            Сообщить("Документ не проведён! Сотрудник не может быть перемещён в подразделение, в котором находится в настоящее время!");
            Отказ = Истина;
            Возврат;
            КонецЕсли;


Функция не срабатывает и документ проводится. несмотря на запрет перемещать сотрудника на одно и то же подразделение. Что не так сделала? Просьба не кидать тапками, я всего месяц осваиваю программирование 1С
1 Бурундук
 
29.10.21
22:12
На две первые функции вызванные в процедуре не обращайте внимание, они работают
2 Бурундук
 
29.10.21
22:32
Я извиняюсь, код работает, просто я неправильно проверила его
3 Бурундук
 
29.10.21
22:36
Я всё написала верн
4 ГдеСобака Зарыта
 
29.10.21
22:55
Молодец! Теперь перепиши чтоб все три проверки делались одним запросом, и период не забывай учитывать.
5 Бурундук
 
29.10.21
23:08
ГдеСобакаЗакрыта, спасибо, а что с периодом, я же указала СрезПоследних?
6 серый КТУЛХУ
 
29.10.21
23:22
(5): на какую дату срез - укажи.
ну и там же в параметрах после даты среза последних - через запятую отбор из "ГДЕ..." переставь туда.
7 Бурундук
 
30.10.21
09:53
Я после среза тогда просто скобки поставлю. Этих два параметра и указать, сотрудник и подразделение, да?
8 МихаилМ
 
30.10.21
12:40
(7)нет. дата нужна тоже.
9 МихаилМ
 
30.10.21
12:41
(7)Вы не можете самостоятельно работать , т.к. не понимаете смысла проведения документов.
10 SuperMario
 
30.10.21
12:49
+(9) Автор, двухтомник по конфигурированию предлагать не буду (есть мнение ,что не осилите). Хотя бы Радченко "Практическое пособие разработчика" почитайте ,прежде чем за разработку садиться!
11 Бурундук
 
30.10.21
13:47
Дорогой друг, ты видимо не дочитался, перечитай внимательно моё сообщение. Я осваиваю это всего месяц. Я на данный момент ОБУЧАЮСЬ!!!! (10)
12 acht
 
30.10.21
13:52
(11) На начинается...
А вы от всех рекомендуемых учебников так нос воротите или только от некоторых?
13 Бурундук
 
30.10.21
13:56
(12)Укажите мне, пожалуйста, где я написала. что я не собираюсь читать пособия??? Я ещё раз повторяюсь, я месяц как начала осваивать программирование по видеоурока и в дальнейшем я обязательно буду читать книгу Радченко "практическое пособие разработчика", она у меня скачанная! Вы если не поняли меня до конца, не стоит делать скоропалительные выводы! Я знаю, что не прочитав этих книг мне не светит стать разработчиком!
14 Смотрящий
 
30.10.21
13:56
А фото в профиле где ?
15 МихаилМ
 
30.10.21
13:57
(11) "осваиваю" и "обучаюсь" - разные термины. если люди не знакомы - к ним принято обращаться на "Вы".
16 Бурундук
 
30.10.21
13:58
(15) Извините, если задела ваши чувства
17 acht
 
30.10.21
13:58
(13) > и в дальнейшем я обязательно буду
Начните сейчас. Заранее. Перед тем как идти отхватывать на форумах.
18 серый КТУЛХУ
 
30.10.21
14:01
(11): милая вы наша. тогда почему вы не хватаетесь за ключевые термины, поиск по которым много может прояснить. в нашем деле - как и в любом другом - ценится самостоятельная работа и инициатива. в частности вам уже накидали достаточно информации для того. чтобы вы, например(!), полазили в поисковике по словам "временные таблицы в запросе", и спросили что-нибудь типа:
а вот так если:
|ИЗ РегистрСведений.КадровыеПеремещения.СрезПоследних(&НаКакуюДатуНужноПроверить,
|    Сотрудник = &Сотрудник И Подразделение = &Подразделение
|    И ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояний.Увольнение)) КАК КадровыеПеремещенияСрезПоследних
--- правильно?..
(ну и по другим под-вопросам - тоже. а претензии тут - дело абсолютно гиблое. вас обосрут - и справедливо, причес самое трагичное будет то, что вы не поймете, что сами в этом виноваты. не надо так. думайте. пробуйте. спрашивайте. но аккуратно. и - постарайтесь не обижаться)
19 серый КТУЛХУ
 
30.10.21
14:10
(18): * не временные а виртуальные (таблицы в запросе), прдн
20 Бурундук
 
30.10.21
19:05
серый КТУЛХУ, там где вы написали, что условие(ГДЕ) нужно указать в параметре, я это и так знаю. Но разве если я не задаю в скобках первый параметр &Период, не означает ли это, что подставится текущая дата???
21 МихаилМ
 
30.10.21
19:57
(20) текущая дата подставится. но мир 1с полон идиотизма и как следствие -  перепроведение ЗАДНИМ ЧИСЛОМ.
вот тут то и возникнет ошибка в Вашей дилетантской программе.

и такие базовые вещи Вам на этом форуме объяснять не должны. т.к. это азы, которые вы должны прочитать самостоятельно.
22 acht
 
30.10.21
20:15
(20)(21) Если в срезе последних не указывать параметр периода, то будут выбираться наиболее поздние записи, без ограничения по дате.

Это, пожалуй, еще раз подчеркивает необходимость обучения базовым вещам, перед тем как идти писать что-то на форум.
23 Бурундук
 
30.10.21
20:26
Понятно, спасибо всем. Конечно, мне в любом случае нужно читать пособие Радченко
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший