Имя: Пароль:
1C
1С v8
ЗУП 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) разобралась! заработало! огромное спасибо!