|   |   | 
| 
 | v7: Обработки, чтобы оклад не менялся для уволенных программистов | ☑ | ||
|---|---|---|---|---|
| 0
    
        anna2212 16.04.20✎ 02:34 | 
        Подскажите,пожалуйста, что надо изменить в данном способе реализации этой обработки, чтобы оклад не менялся для уволенных программистов?
 Процедура Выполнить2() Должн = СоздатьОбъект("Справочник.Должности"); Должн.НайтиПоНаименованию("Программист"); Сотрудник = СоздатьОбъект("Справочник.Сотрудники"); Сотрудник.ВыбратьЭлементыПоРеквизиту("Должность", Должн, 0, 0); Пока Сотрудник.ПолучитьЭлемент() = 1 Цикл Сотрудник.Оклад = Число(200000); Сотрудник.Записать(); Сообщить("Заменен оклад для сотрудника: " + СокрЛП(Сотрудник.Наименование)); КонецЦикла; КонецПроцедуры Для однозначности ответа рекомендуется привести измененный программный код, в котором игнорируются уволенные сотрудники. | |||
| 1
    
        victuan1 16.04.20✎ 05:02 | 
        Какая конфигурация 1С? Какой релиз?     | |||
| 2
    
        big 16.04.20✎ 05:20 | 
        Если Должн.НайтиПоНаименованию("Программист") = 0 Тогда
 Сообщить("Не нашли должность Программист"); Возврат; КонецЕсли; .... .... .... Если Сотрудник.ВыбратьЭлементыПоРеквизиту("Должность", Должн, 0, 0) = 0 Тогда Сообщить("Не нашли сотрудников с такой должностью"); Возврат; КонецЕсли; Пока Сотрудник.ПолучитьЭлемент() = 1 Цикл Если Сотрудник.Уволен = 1 Тогда // я тут просто не знаю какой там признак, что он уволен Продолжить; КонецЕсли; ... ... КонецЦикла; | |||
| 3
    
        SleepyHead гуру 16.04.20✎ 05:27 | 
        (0) Зовите ваших уволенных программистов обратно )     | |||
| 4
    
        anna2212 16.04.20✎ 05:54 | 
        Версия конфигурации 7.7     | |||
| 5
    
        anna2212 16.04.20✎ 05:55 | 
        Спасибо большое за помощь, попробую сдать. Преподаватель дал задание такое, попробую сдать)     | |||
| 6
    
        Sserj 16.04.20✎ 06:53 | 
        update $Справочник.Сотрудники set $Справочник.Сотрудники.Оклад = 200000
 where $Справочник.Сотрудники.Должность = (select top 1 д.id from $Справочник.Должности as д where left(д.descr, 11) = 'Программист') and ismark = 0 | |||
| 7
    
        MWWRuza гуру 16.04.20✎ 08:40 | 
        Блин, это всего-лишь задание...
 А я то уже подумал, что начали программистов увольнять, и они к пасхе яйца закладывают... Только, по вопросу, сразу возникло стойкое ощущение - "а может не зря увольняют - ???" :-))) | |||
| 8
    
        Злопчинский 16.04.20✎ 09:28 | 
        (0)
 п.2 - взять первый и второй кусок кода если не найдена должность и нет программистов среди сотрудников Сотрудник.ВыбратьЭлементыПоРеквизиту("Должность", Должн, 0, 0) - не надо так делать, Должн - это (упрощенно) не найденная тобой должность, а нечто другое Сотрудник.ВыбратьЭлементыПоРеквизиту("Должность", Должн.ТекущийЭлемент(), 0, 0) Сотрудник.Оклад = 200000; //справа от знака = итак уже число записано первым оператором внутри цикла д.б. Если Сотрудник.ЭтоГруппа()=1 Тогда Продолжить; КонецЕсли; | |||
| 9
    
        Андрей_Андреич naïve 16.04.20✎ 09:31 | 
        (7) Зато оклад всем к 200 подравняли, чтобы не так обидно     | |||
| 10
    
        Kigo_Kigo 16.04.20✎ 09:32 | 
        (8) Это всего лишь задание для теста
 Если Сотрудник.Уволен = 1 Тогда Продолжить; КонецЕсли; этого достаточно | |||
| 11
    
        Хряк 16.04.20✎ 10:24 | 
        и скорее всего реквизит оклад периодический     | |||
| 12
    
        Kigo_Kigo 16.04.20✎ 10:27 | 
        (11) Если бы он был переодический, то требования у ТС не было бы     | |||
| 13
    
        MWWRuza гуру 16.04.20✎ 20:24 | 
        (10) Если Сотрудник.Уволен = 1 Тогда
 Ну, из ТЗ мы не знаем, какие реквизиты и т.п. есть в исходной конфе... Я бы предположил, что должно быть так: Если Сотрудник.Статус = Перечисление.Уволен Тогда Но, оклад 200 000 мне нравится :-))) | |||
| 14
    
        vladko 17.04.20✎ 09:24 | 
        > Если Сотрудник.Статус = Перечисление.Уволен Тогда
 точнее Если Сотрудник.Статус = Перечисление.СтатусыСотрудников.Уволен Тогда | |||
| 15
    
        Kigo_Kigo 17.04.20✎ 09:53 | 
        (13) (14) 
 Мам, а нафига нам все эти приблуды в московском зоопарке?(с) Детеныш верблюда :))) | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |