при перегоне данные паспорта физического лица записываю в регистр Документы Физических лиц,
но они почему-то не попадают, не отображаются в карточке физического лица.
точно тоже происходит и с контактами физического лица,
они записіваются в регистр, но не попадают в карточку,
и с датой принятия и увольнения сотрудника, и с суммой аванса.
В чём проблема?
необходимо зарегистрироваться для просмотра ссылки
Для Индекс = 0 По Данные.Количество() - 1 Цикл
если СокрЛП(Данные[Индекс].ИНН)<>"" Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ФизическиеЛица.Ссылка КАК Ссылка
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица
|ГДЕ
| ФизическиеЛица.КодПоДРФО = &ИНН";
Запрос.УстановитьПараметр("ИНН", Данные[Индекс].ИНН);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
ФизЛицо = Выборка.Ссылка.ПолучитьОбъект();
Иначе
ФизЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент();
КонецЕсли;
ФизЛицо.Наименование= СокрЛП(Данные[Индекс].ФИО);
ФизЛицо.ФИО = СокрЛП(Данные[Индекс].ФИО);
ФизЛицо.КодПоДРФО = СокрЛП(Данные[Индекс].ИНН);
ФизЛицо.ДатаРождения = Дата(Сред(Лев(Данные[Индекс].Дата_рождения, 10),7,4),Сред(Лев(Данные[Индекс].Дата_рождения, 10),4,2),Сред(Лев(Данные[Индекс].Дата_рождения, 10),1,2));
ФизЛицо.Пол = Данные[Индекс].Пол;
ФизЛицо.Фамилия= СокрЛП(Данные[Индекс].Фамилия);
ФизЛицо.Имя=СокрЛП(Данные[Индекс].Имя);
ФизЛицо.Отчество=СокрЛП(Данные[Индекс].Отчество);
ФизЛицо.Инициалы=(Лев(Данные[Индекс].Имя, 1))+"."+(Лев(Данные[Индекс].Фамилия, 1)) +".";
ФизЛицо.Записать();
// Указываем вид документа
ВидДокумента = Справочники.ВидыДокументовФизическихЛиц.Паспорт; // Или другой вид в BAS КУП
// Создаем набор записей регистра
НаборЗаписей = РегистрыСведений.ДокументыФизическихЛиц.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Физлицо.Установить(ФизЛицо.Ссылка);
НаборЗаписей.Отбор.ВидДокумента.Установить(ВидДокумента);
// Добавляем новую запись
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Физлицо = ФизЛицо.Ссылка;
НоваяЗапись.ВидДокумента = ВидДокумента;
НоваяЗапись.Серия = СокрЛП(Данные[Индекс].Серия_паспорта);
НоваяЗапись.Номер = СокрЛП(Данные[Индекс].Н_паспорта);
НоваяЗапись.ДатаВыдачи = Дата(Сред(Лев(Данные[Индекс].Дата_выдачи_паспорта, 10),7,4),Сред(Лев(Данные[Индекс].Дата_выдачи_паспорта, 10),4,2),Сред(Лев(Данные[Индекс].Дата_выдачи_паспорта, 10),1,2));
НоваяЗапись.ЯвляетсяДокументомУдостоверяющимЛичность=Истина;
НоваяЗапись.Активность=Истина;
НоваяЗапись.СтранаВыдачи=Справочники.СтраныМира.Украина;
НоваяЗапись.КемВыдан= СокрЛП(Данные[Индекс].Кем_выдан_паспорт);
НоваяЗапись.Период = ТекущаяДата(); // Для периодического регистра
// Пытаемся записать
Попытка
НаборЗаписей.Записать(Истина); // Заменить существующие записи
// Успешно записано
Исключение
// Здесь можно добавить логирование ошибки, если нужно
// Ошибка при записи
КонецПопытки;
// Получаем виды контактной информации
ВидТелефона = Справочники.ВидыКонтактнойИнформации.ТелефонМобильныйФизическиеЛица;
ВидАдреса = Справочники.ВидыКонтактнойИнформации.АдресМестаПроживанияФизическиеЛица;
// Создаем менеджер для работы с контактной информацией
МенеджерКонтактов = УправлениеКонтактнойИнформацией;
Попытка
// Заполняем телефон, если передан
Если ЗначениеЗаполнено(Данные[Индекс].Телефон) Тогда
ЗначенияПолейТелефон = Новый Массив;
ЗначенияПолейТелефон.Добавить(Новый Структура("ИмяПоля, Значение", "НомерТелефона", Данные[Индекс].Телефон));
МенеджерКонтактов.ЗаписатьКонтактнуюИнформацию(
ФизЛицо.Ссылка,
СокрЛП(Данные[Индекс].Телефон), // Представление
ВидТелефона,
Перечисления.ТипыКонтактнойИнформации.Телефон,
МенеджерКонтактов.КонтактнаяИнформацияВJSON(СокрЛП(Данные[Индекс].Телефон))
);
КонецЕсли;
// Заполняем адрес, если передан
Если ЗначениеЗаполнено(Данные[Индекс].Адрес_сотрудника) Тогда
ЗначенияПолейАдрес = Новый Массив;
ЗначенияПолейАдрес.Добавить(Новый Структура("ИмяПоля, Значение", "Представление", Данные[Индекс].Адрес_сотрудника));
МенеджерКонтактов.ЗаписатьКонтактнуюИнформацию(
ФизЛицо.Ссылка,
СокрЛП(Данные[Индекс].Адрес_сотрудника), // Представление
ВидАдреса,
Перечисления.ТипыКонтактнойИнформации.Адрес,
МенеджерКонтактов.КонтактнаяИнформацияВJSON(СокрЛП(Данные[Индекс].Адрес_сотрудника))
);
КонецЕсли;
Исключение
// Логирование ошибки, если нужно
// Сообщить(ОписаниеОшибки());
КонецПопытки;
////==============================================
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|Организации.Ссылка КАК Ссылка,
|Организации.КодПоЕДРПОУ КАК КодПоЕДРПОУ
|ИЗ
|Справочник.Организации КАК Организации
|ГДЕ
|Организации.КодПоЕДРПОУ = &Код";
Запрос.УстановитьПараметр("Код", "34994962");
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
Организация = Выборка.Ссылка.ПолучитьОбъект();
Иначе
// Сотрудник = Справочники.Сотрудники.СоздатьЭлемент();
КонецЕсли;
// Поиск сотрудника по табельному номеру
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка КАК Ссылка
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.ФизическоеЛицо = &ФизическоеЛицо";
Запрос.УстановитьПараметр("ФизическоеЛицо", ФизЛицо.Ссылка);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
Сотрудник = Выборка.Ссылка.ПолучитьОбъект();
Иначе
Сотрудник = Справочники.Сотрудники.СоздатьЭлемент();
КонецЕсли;
Сотрудник.ФизическоеЛицо = ФизЛицо.Ссылка;
Сотрудник.Наименование= СокрЛП(ФизЛицо.Наименование);
Сотрудник.ГоловнаяОрганизация= Организация.Ссылка;
Сотрудник.Записать();
ЗаполнитьКадровыеДанныеСотрудника(Сотрудник.Ссылка,Дата(Сред(Лев(Данные[Индекс].Дата_приёма, 10),7,4),Сред(Лев(Данные[Индекс].Дата_приёма, 10),4,2),Сред(Лев(Данные[Индекс].Дата_приёма, 10),1,2)),Дата(Сред(Лев(Данные[Индекс].Дата_увольнения, 10),7,4),Сред(Лев(Данные[Индекс].Дата_увольнения, 10),4,2),Сред(Лев(Данные[Индекс].Дата_увольнения, 10),1,2))
, СокрЛП(Данные[Индекс].Табельный_Номер));
// УстановитьСуммуАванса(Сотрудник.Ссылка, Данные[Индекс].Аванс, Данные[Индекс].Дата_приёма);
конецЕсли;
КонецЦикла;