![]() |
|
ЗУП 3.1 Получить кадровые данные сотрудника | ☑ | ||
---|---|---|---|---|
0
Тринадцать
20.04.20
✎
15:04
|
Всем привет! ЗУП 3.1.13.146 В печатную форму кадрового приказа пытаюсь вывести данные сотрудника до кадрового перевода. Использую функцию КадровыйУчет.КадровыеДанныеСотрудников
Параметры все передаю. Дополнительных отборов не нужно, поэтому ПоляОтбораПереодическихДанных = Неопределено. Не совсем понимаю что ей не хватает? ДатаМинусДень = СсылкаНаДокумент.Дата -86400; КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, СсылкаНаДокумент.Сотрудник, "Должность, Подразделение", ДатаМинусДень ,Неопределено, Истина); ОбластьРаботник.Параметры.ДолжностьПрежняя = КадровыеДанныеСотрудников[0].Должность; ОбластьРаботник.Параметры.ПодразделениеПрежнееНаПечать = КадровыеДанныеСотрудников[0].Подразделение; Выдает ошибку: Поле объекта не обнаружено (ЛевоеЗначение) {ОбщийМодуль.ЗарплатаКадрыПериодическиеРегистры.Модуль(3988)}: Если ЭтоСрез {ОбщийМодуль.ЗарплатаКадрыПериодическиеРегистры.Модуль(5310)}: Если ИспользоватьПервичныйРегистр(ПараметрыПостроения, ИмяРегистра, Истина) Тогда {ОбщийМодуль.ЗарплатаКадрыПериодическиеРегистры.Модуль(190)}: ДобавитьЗапросВТИмяРегистраСрез(ОписаниеПакета, ИмяРегистра, ТолькоРазрешенные, ОписаниеФильтра, ПараметрыПостроения, СрезПоследних, ИмяСоздаваемойТаблицы); {ОбщийМодуль.ЗарплатаКадрыОбщиеНаборыДанных.Модуль(691)}: Возврат ЗарплатаКадрыПериодическиеРегистры.ЗапросВТИмяРегистраСрез(ИмяРегистра, ТолькоРазрешенные, ОписаниеФильтра, ПараметрыПостроения, СрезПоследних, ИмяСоздаваемойТаблицы); {ОбщийМодуль.КадровыйУчетБазовый.Модуль(6701)}: ЗапросВТИмяРегистраСрез = ЗарплатаКадрыОбщиеНаборыДанных.ЗапросВТИмяРегистраСрез( {ОбщийМодуль.КадровыйУчетБазовый.Модуль(6727)}: ЗапросВТ = ЗапросВТСведенияКадровойИсторииСотрудников(ТолькоРазрешенные, ОписательВременнойТаблицыОтборов, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень, ИмяВТСведенияКадровойИсторииСотрудников); {ОбщийМодуль.КадровыйУчетРасширенный.Модуль(19308)}: КадровыйУчетБазовый.ДобавитьТекстЗапросаВТСведенияКадроваяИсторияСотрудников(Запрос, ТолькоРазрешенные, ОписательВременнойТаблицыОтборов, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень, ИсточникиДанных, ИмяВТСведенияКадровойИсторииСотрудников); {ОбщийМодуль.КадровыйУчетВнутренний.Модуль(1114)}: КадровыйУчетРасширенный.ДобавитьТекстЗапросаВТСведенияКадроваяИсторияСотрудников(Запрос, ТолькоРазрешенные, ОписательВременнойТаблицыОтборов, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень, ИсточникиДанных); {ОбщийМодуль.КадровыйУчет.Модуль(4687)}: КадровыйУчетВнутренний.ДобавитьТекстЗапросаВТСведенияКадроваяИсторияСотрудников(Запрос, ТолькоРазрешенные, ОписательВременнойТаблицыОтборов, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень, ИсточникиДанных); {ОбщийМодуль.КадровыйУчетБазовый.Модуль(5141)}: КадровыйУчет.ДобавитьТекстЗапросаВТСведенияКадроваяИсторияСотрудников(Запрос, ТолькоРазрешенные, ОписательВТОтборов, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень, ИсточникиДанных); {ОбщийМодуль.КадровыйУчетРасширенный.Модуль(2340)}: Запрос = КадровыйУчетБазовый.ЗапросВТКадровыеДанныеСотрудников( {ОбщийМодуль.КадровыйУчетВнутренний.Модуль(892)}: Возврат КадровыйУчетРасширенный.ЗапросВТКадровыеДанныеСотрудников(ТолькоРазрешенные, ОписательВременнойТаблицыОтборов, КадровыеДанные, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень, ИсточникиДанных, ИмяВТКадровыеДанныеСотрудников, ТаблицаОтборовСодержитПолеФизическоеЛицо, УничтожитьВспомогательныеТаблицы); {ОбщийМодуль.КадровыйУчет.Модуль(2039)}: Возврат КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеСотрудников(ТолькоРазрешенные, ОписательВременнойТаблицыОтборов, КадровыеДанные, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень, ИсточникиДанных, ИмяВТКадровыеДанныеСотрудников, ТаблицаОтборовСодержитПолеФизическоеЛицо, УничтожитьВспомогательныеТаблицы); {ОбщийМодуль.КадровыйУчет.Модуль(2677)}: Запрос = ЗапросВТКадровыеДанныеСотрудников( {ОбщийМодуль.КадровыйУчет.Модуль(2598)}: СоздатьВТКадровыеДанныеСотрудников(ОписательВременныхТаблиц, ТолькоРазрешенные, КадровыеДанные, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень); {ОбщийМодуль.КадровыйУчет.Модуль(90)}: СоздатьНаДатуВТКадровыеДанныеСотрудников(Запрос.МенеджерВременныхТаблиц, ТолькоРазрешенные, СписокСотрудников, КадровыеДанные, ДатаПолученияДанных, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень); {ВнешняяОбработка.КадровыйПеревод.МодульОбъекта(102)}: ДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Ложь, СсылкаНаДокумент.Сотрудник, Поля, ВремяРегистрации, ПоляОтбораПериодическихДанных, Ложь); {ВнешняяОбработка.КадровыйПеревод.МодульОбъекта(43)}: УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"ПФ_MXL_Т5_Внешний", "Кадровый перевод (Внешний)", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати)); {ОбщийМодуль.УправлениеПечатью.Модуль(1610)}: ВнешняяОбработкаОбъект.Печать( {ОбщаяФорма.ПечатьДокументов.Форма(486)}: УправлениеПечатью.ПечатьПоВнешнемуИсточнику( {ОбщаяФорма.ПечатьДокументов.Форма(43)}: КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ); {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(240)}: ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, Форма); {ОбщийМодуль.УправлениеПечатьюКлиент.Модуль(127)}: ВыполнитьОбработкуОповещения(ОписаниеПроцедурыЗавершения, СписокДокументов); {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(38)}: УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеОповещения, ОбъектыНазначения, Форма); {ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(488)}: МодульУправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы( {ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(258)}: ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати); {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(101)}: МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма); {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(26)}: ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения); {ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(190)}: ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды); {ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(60)}: ПродолжитьВыполнениеКоманды(Контекст); {ЖурналДокументов.ПриемыПереводыУвольнения.Форма.ФормаСписка.Форма(97)}: ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список); |
|||
1
dka80
20.04.20
✎
16:05
|
ТекущиеКадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, МассивОбъектов, "Страна,ГрафикРаботы,ДатаОкончания,СрочныйДоговор,ДатаДоговораКонтракта,НомерДоговораКонтракта,ДатаНачала,ТарифнаяСтавка,ВидЗанятости,КоличествоСтавок,ФамилияИО,ФИОПолные,Организация,Подразделение,Должность,ДокументПредставление", ДатаНачала);
Массив сотрудников передавай |
|||
2
Тринадцать
21.04.20
✎
19:21
|
Добавила массив сотрудников (по сути сотрудник всегда будет только один, т.к печатаю из док Кадровый перевод).
МассивСотрудников = Новый Массив(); МассивСотрудников.Добавить(СсылкаНаДокумент.Сотрудник.Наименование); теперь выдает - индекс находится за пределами массива |
|||
3
Amra
21.04.20
✎
19:24
|
МассивСотрудников.Добавить(СсылкаНаДокумент.Сотрудник) !!
МАссив сотрудников, а не массив строк, елки |
|||
4
Тринадцать
22.04.20
✎
13:20
|
(3) Но если делаю так, то опять выходит ошибка про "левоеЗначение" из (0)
Вообще функция работает, проверила через Сообщить МассивСотрудников = Новый Массив(); МассивСотрудников.Добавить(СсылкаНаДокумент.Сотрудник); ДатаМинусДень = СсылкаНаДокумент.Дата -86400; КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, МассивСотрудников, "Должность, Подразделение", ДатаМинусДень ,Неопределено, Истина)[0]; Для каждого Элемент из КадровыеДанныеСотрудников Цикл Сообщить(элемент); КонецЦикла; Выдает сначала ошибку про "левоеЗначение" а затем сообщает данные |
|||
5
Тринадцать
30.04.20
✎
07:44
|
Ребята, без вас не могу разобраться..
Похоже что ошибка в передаче параметров в фунцию. Из описания: Функция КадровыеДанныеФизическихЛиц(ТолькоРазрешенные, СписокФизическихЛиц, КадровыеДанные, ДатаПолученияДанных = '00010101', ПоляОтбораПериодическихДанных = Неопределено) Экспорт // Подготовим Запрос и Менеджер временных таблиц. Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; // Сформируем временную таблицу ВТКадровыеДанныеФизическихЛиц. СоздатьНаДатуВТКадровыеДанныеФизическихЛиц(Запрос.МенеджерВременныхТаблиц, ТолькоРазрешенные, СписокФизическихЛиц, КадровыеДанные, ДатаПолученияДанных, ПоляОтбораПериодическихДанных); // Выберем кадровые данные физлиц из временной таблицы. Запрос.Текст = "ВЫБРАТЬ КадровыеДанныеФизическихЛиц.* ИЗ ВТКадровыеДанныеФизическихЛиц КАК КадровыеДанныеФизическихЛиц"; КадровыеДанныеФизическихЛиц = Запрос.Выполнить().Выгрузить(); Возврат КадровыеДанныеФизическихЛиц; КонецФункции // Возвращает таблицу значений заполненную данными сотрудников, перечисленными в // параметре СписокНеобходимыхДанных. // // Параметры: // ТолькоРазрешенные - Булево // СписокСотрудников - Массив ссылок на элементы справочника сотрудники или // СправочникСсылка.Сотрудники. // КадровыеДанные - Строка - список полей данных, перечисленных через запятую // или Массив строк с полями данных, которые необходимо получить. // ДатаПолученияДанных - дата на которую необходимо получить данные сотрудников, // применимо к данным, носящим периодический характер. // Если дату не указывать, будут получены самые последние данные. // // // ПоляОтбораПериодическихДанных - Структура, в качестве ключа указывается имя таблицы, содержащей // периодические данные (например ФИОФизическихЛиц, ГражданствоФизическихЛиц). // В качестве значений коллекция условий отбора, // соединяемых по "И" и применяемых к регистру сведений. // Коллекция строки которой имеют поля. // * ЛевоеЗначение - строка, имя поля регистра сведений. // * ВидСравнения - строка, вид сравнения, допустимый в языке запросов. // * ПравоеЗначение - значение для сравнения с полем ЛевоеЗначение. // // Список полей, допустимых в параметре КадровыеДанные см. КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеСотрудников. // // Возвращаемое значение: // ТаблицаЗначений - Таблица значений, содержащая запрошенные данные. Делаю так: МассивСотрудников = Новый Массив(); МассивСотрудников.Добавить(СсылкаНаДокумент.Сотрудник); ДатаМинусДень = СсылкаНаДокумент.Дата -86400; СсылкиНаОбъекты = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СсылкаНаДокумент); СтруктураОтбораКадровыхДанных = Новый Структура("ЛевоеЗначение, ВидСравнения, ПравоеЗначение", " В", СсылкиНаОбъекты); Отбор = Новый Массив; Отбор.Добавить(СтруктураОтбораКадровыхДанных); ПоляОтбораПериодическихДанных = Новый Структура; ПоляОтбораПериодическихДанных.Вставить("ЛевоеЗначение", Отбор); ПоляОтбораПериодическихДанных.Вставить("ВидСравнения", Отбор); ПоляОтбораПериодическихДанных.Вставить("ПравоеЗначение", Отбор); КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, МассивСотрудников, "Должность, Подразделение", ДатаМинусДень , истина); ТекущиеКадровыеДанныеСотрудника = КадровыеДанныеСотрудников[0]; ОбластьРаботник.Параметры.ДолжностьПрежняя = ТекущиеКадровыеДанныеСотрудника.Должность; ОбластьРаботник.Параметры.ПодразделениеПрежнееНаПечать = ТекущиеКадровыеДанныеСотрудника.Подразделение; Выдает ошибку Значение не является значением объектного типа (Свойство) Подскажите, как правильно передать параметры? |
|||
6
SleepyHead
гуру
30.04.20
✎
08:36
|
Оставлю какой-нибудь комментарий, чтобы понаблюдать, чем кончится (борщом или наконец осознает ответ, данный в 3)
|
|||
7
SleepyHead
гуру
30.04.20
✎
08:37
|
(4) КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, МассивСотрудников, "Должность, Подразделение", ДатаМинусДень ,Неопределено, Истина)[0];
Для каждого Элемент из КадровыеДанныеСотрудников Цикл Подумай о том, что у тебя КадровыеДанныеСотрудников после того, как ты выбрала из нее первую строку таблицы значений. И что происходит, когда ты применяешь к этому цикл "Для каждого". |
|||
8
dka80
30.04.20
✎
12:01
|
МассивСотрудников = Новый Массив();
МассивСотрудников.Добавить(СсылкаНаДокумент.Сотрудник); ДатаМинусДень = НачалоДня(СсылкаНаДокумент.Дата) - 1; ТекущиеКадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, МассивСотрудников, "Подразделение,Должность", ДатаМинусДень ); |
|||
9
Тринадцать
30.04.20
✎
12:29
|
(8)Спасибо!
(7) применяю цикл, чтобы посмотреть какие данные выдает. получается, что не правильно вывожу их в параметры печатной формы Если делаю (8) ОбластьРаботник.Параметры.ДолжностьПрежняя = ТекущиеКадровыеДанныеСотрудника.Должность; Поле объекта не обнаружено (Должность) |
|||
10
SleepyHead
гуру
30.04.20
✎
12:40
|
Как мило...
|
|||
11
ИУБиПовиц
30.04.20
✎
13:05
|
А если как то так? текущие кадровые это ж вроде ТЗ.
Да и если это прием, то какая предыдущая должность будет?:) (?ТекущиеКадровыеДанныеСотрудника.Количество()>0, ТекущиеКадровыеДанныеСотрудника[0].Должность, "немая") |
|||
12
Тринадцать
30.04.20
✎
13:21
|
(11) да, это ТЗ
печатная форма к кадровому переводу, поэтому пред.должность точно будет ТекущиеКадровыеДанныеСотрудника[0].Должность - выдает опять Поле объекта не обнаружено (ЛевоеЗначение) не пойму что я делаю не так... |
|||
13
dka80
30.04.20
✎
13:37
|
(9) отладчиком поставь уже точку останова и посмотри что в ТекущиеКадровыеДанныеСотрудника - там таблица значений. Посмотри, есть ли в ней строки?
|
|||
14
dka80
30.04.20
✎
13:42
|
Я сильно подозреваю, что там строк нет, поскольку ты берешь дату на предыдущий день. А если ССылкаНаДокумент - это Прием на работу, то на предыдущий день сотрудник не работал и данных нет. Поэтому у тебя и ошибка
|
|||
15
Тринадцать
30.04.20
✎
19:01
|
(14) разобралась! заработало! огромное спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |