Имя: Пароль:
1C
1С v8
Автоматические заполнение полей документа при выборе сотрудника.
0 wvwvuoq
 
12.11.20
06:51
Всем доброе утро, не могу разобраться с реализацией задачи. В 1С работаю всего месяц, разрабатываю некое проектное решение, оно сделано, но мне вдруг захотелось его еще чуть-чуть доработать, и тут я поплыл...
Задание: Конфигурация 1С:ЗУП 8.3, существует документ "Результаты Аттестации Сотрудников", в форме документа есть кнопка "Подбор", необходимо чтобы при выборе пользователем сотрудника через подбор, автоматические заполнялись поля формы, т.е при выборе сотрудника подтягивались должность, подразделение, разряд.
В модуле формы найден следующий код, то что закомментировано это я уже добавлял, этот код автоматически подтягивает Должность выбранного сотрудника, ну и дату аттестации. Вопрос: Как реализовать цикл, чтобы подтягивалось все, смысл понимаю, и что скорей всего нужно идти циклом "Для каждого", но что то застрял на этом моменте.
Буду благодарен за ответ!
&НаСервере
Процедура ОбработкаПодбораНаСервере(Сотрудники)
    КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, Сотрудники, "Должность");
    //КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, Сотрудники, "Подразделение");
    //КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, Сотрудники, "РазрядКатегория");
    ДатаАттестации = ДатаАттестацииПоследнейСтроки();
    Если ДатаАттестации = Неопределено Тогда
        ДатаАттестации = Объект.Дата;
    КонецЕсли;
    ВремяРегистрацииСотрудников = ЗарплатаКадрыРасширенный.ВремяРегистрацииСотрудниковДокумента(Объект.Ссылка, Сотрудники, ДатаАттестации);
    
    Строки = Новый Массив;
    
    Для Каждого Сотрудник Из Сотрудники Цикл
        Если НетРезультатовСотрудника(Сотрудник) Тогда
            Строка = НовыйРезультатСотрудника(Сотрудник, ВремяРегистрацииСотрудников, КадровыеДанныеСотрудников);
            Строки.Добавить(Строка);                        
        КонецЕсли;
    КонецЦикла;    
    
    ОбновитьОплатуТрудаСотрудников(Строки);
    
КонецПроцедуры

&НаСервере
Функция НовыйРезультатСотрудника(Сотрудник, ВремяРегистрацииСотрудников, КадровыеДанныеСотрудников)
    
    НоваяСтрока = Объект.РезультатыАттестации.Добавить();
    НоваяСтрока.Сотрудник = Сотрудник;
    НоваяСтрока.ВремяРегистрации = ВремяРегистрацииСотрудников.Получить(Сотрудник);
    НоваяСтрока.ДатаАттестации = НоваяСтрока.ВремяРегистрации;
    КадровыеДанныеСотрудника = КадровыеДанныеСотрудников.Найти(Сотрудник, "Сотрудник");
    Если Не КадровыеДанныеСотрудника = Неопределено Тогда
        НоваяСтрока.Должность = КадровыеДанныеСотрудника.Должность;
    //    НоваяСтрока.Цех = КадровыеДанныеСотрудника.Подразделение;
    //    НоваяСтрока.Разряд = КадровыеДанныеСотрудника.РазрядКатегория;
    КонецЕсли;

    Возврат НоваяСтрока;
    
КонецФункции
1 strange2007
 
12.11.20
07:03
Только начал изучать 1С и сразу стал переписывать ЗУП3х???? Вот такого не видел вообще никогда.
В запроссе кроме должности напиши остальные данные, которые нужны. Список можно подглядеть в описании этой огромной функции.
2 wvwvuoq
 
12.11.20
07:13
(1) В запросе они есть, смотрел в общем модуле, если допустим я раскомментирую подразделение и разряд, то в переменную КадровыеДанныеСотрудников запишется только разряд, и он автоматически подтянет разряд, и это понятно, что тем самым я просто одной переменной КадровыеДанныеСотрудников присваю поочередно значения, и оно возвращает последнее присвоенное, т.е разряд, вот и думаю как реализовать цикл, чтобы он перебирал эти значения
3 strange2007
 
12.11.20
07:24
(2) Просто напиши там, где "Должность" через запятую остальные параметры. Например, "Должность, Подразделение и т.д.". Т.е. КадровыеДанныеСотрудников должна вызываться один раз со списком всех параметров, а не много раз
4 wvwvuoq
 
12.11.20
07:31
(3) Работает! Удивительно, весь день ломать голову, а оказывается нужно было пару слов добавить....
Спасибо огромноое)
5 Масянька
 
12.11.20
08:19
(1) Неисповедимы пути Господни (С) :))))))))