|
Автоматические заполнение полей документа при выборе сотрудника. | ☑ | ||
---|---|---|---|---|
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) Неисповедимы пути Господни (С) :))))))))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |