Имя: Пароль:
1C
1С v8
Убрать должность у сотрудника программно в ЗУП 2.5
0 Чайник1983
 
28.05.18
08:50
Брали человека на работу по трудовому договору ввели ему должность и подразделение, потом оказалось что это не правильно и взяли его по договору подряда но должность осталась.
Скрин: https://yadi.sk/i/4gsoz8ij3Wbx3C
1 Фрэнки
 
28.05.18
08:56
Есть элемент справочника. Есть у этого элемента непустые поля...

и что?
2 Чайник1983
 
28.05.18
08:59
(1) И это поля нужно очистить (продолжаю мысль).
3 Чайник1983
 
28.05.18
09:01
если это возможно.
4 Фрэнки
 
28.05.18
09:01
(2) так в какой момент трудности появляются?

Вам нужен программный код, обработка, инструкция или конфигурация выдает ошибки и блокирует действие?
5 Чайник1983
 
28.05.18
09:02
Процедура ОчиститьДолжности()
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СотрудникиОрганизаций.Ссылка,
        |    СотрудникиОрганизаций.ТекущееПодразделениеОрганизации,
        |    СотрудникиОрганизаций.ТекущаяДолжностьОрганизации,
        |    СотрудникиОрганизаций.ВидДоговора
        |ИЗ
        |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
        |ГДЕ
        |    СотрудникиОрганизаций.ЭтоГруппа = ЛОЖЬ
        |    И СотрудникиОрганизаций.ВидДоговора = &ВидДоговора
        |    И СотрудникиОрганизаций.ТекущаяДолжностьОрганизации <> ЗНАЧЕНИЕ(Справочник.ДолжностиОрганизаций.ПустаяСсылка)";
    
    Запрос.УстановитьПараметр("ВидДоговора", Перечисления.ВидыДоговоровСФизЛицами.Подряда);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    Выгрузка = РезультатЗапроса.Выгрузить();
    
    
    Пока Выборка.Следующий() Цикл
        
        Если Выборка.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.Подряда Тогда
            
            
            
        КонецЕсли;
        
    КонецЦикла;

КонецПроцедуры
6 Чайник1983
 
28.05.18
09:03
сейчас немного не дописал.
7 Чайник1983
 
28.05.18
09:07
Пока Выборка.Следующий() Цикл
        
        Если Выборка.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.Подряда Тогда
            
        Сотрудник = Справочники.СотрудникиОрганизаций.НайтиПоНаименованию(Выборка.Ссылка);
        Должность = Сотрудник.ТекущаяДолжностьОрганизации;
    
Вот не знаю что дальше и правильно ли вообще делаю?
            
        КонецЕсли;
        
    КонецЦикла;
8 Фрэнки
 
28.05.18
09:16
:) Копию базы делать не забывай

Вы в следующий раз прямо в топике пишите, что опыта программирования нет, но хочется научиться.

А программно решили чистить, что период уже успели закрыть?

Открывайте Синтакс-помощник и смотрите на
СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
ПолучитьОбъект (GetObject)

Ссылка уже есть в Выборке
9 Чайник1983
 
28.05.18
09:25
Вы в следующий раз прямо в топике пишите, что опыта программирования нет, "но хочется научиться".- вот здесь содержится ответ на ваш вопрос)
10 Чайник1983
 
28.05.18
10:00
(8) Отлично помогло,  спасибо за наводку)
11 Чайник1983
 
28.05.18
10:03
Пока Выборка.Следующий() Цикл
        
        Если Выборка.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.Подряда Тогда
            
            Сотрудник = Выборка.Ссылка;    
            Объект = Сотрудник.ПолучитьОбъект();
            Объект.ТекущаяДолжностьОрганизации = Новый(Тип("СправочникОбъект.ДолжностиОрганизаций"));
            Попытка
                Объект.Записать();
            Исключение
                Предупреждение("" + Объект + " " + ОписаниеОшибки(), 6);
            КонецПопытки;
            
                
        КонецЕсли;
        
    КонецЦикла;
12 Alexandr_U1982
 
28.05.18
10:32
(11) Объект.ТекущаяДолжностьОрганизации = Новый(Тип("СправочникОбъект.ДолжностиОрганизаций"));

можно заменить на

Объект.ТекущаяДолжностьОрганизации = Справочники.ДолжностиОрганизаций.ПустаяСсылка();
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший