8.х Загрузка данных из Эксель в справочник Физические лица

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем sergqwert, 30 апр 2017.

  1. TopicStarter Overlay
    sergqwert
    Offline

    sergqwert

    Регистрация:
    27 ноя 2016
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Не получается заполнить строку ФИО(остаются пустыми строки) и поле Удостоверение личности(паспортные данные). Подскажите, пожалуйста, как это сделать? Код ниже.

    Процедура ПрочитатьФайл(ИмяФайла) Экспорт

    ВыбФайл = Новый Файл(ИмяФайла);
    Если НЕ ВыбФайл.Существует() Тогда
    Сообщить("Файл не существует!");
    Возврат;
    КонецЕсли;

    Попытка
    Excel = Новый COMОбъект("Excel.Application");
    Excel.WorkBooks.Open(ИмяФайла);
    // Состояние("Обработка файла Microsoft Excel...");
    ExcelЛист = Excel.Sheets(1);
    Исключение
    Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
    Возврат;

    КонецПопытки;
    //Если ПустаяСтрока(ExcelЛист.Cells(1,3).Value) или ПустаяСтрока(Строка(ExcelЛист.Cells(1,4).Value)) тогда
    // Сообщить("Проверьте правильность указания файла");
    // Возврат;
    //КонецЕсли;

    Фл = 1;
    НомСтр = 12;

    Сообщить("Начата загрузка справочника ФизЛица");
    Пока Фл = 1 Цикл
    Наименование = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,2).Value));
    НовФизЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент();

    НовФизЛицо.Наименование = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,2).Value));
    НовФизЛицо.ДатаРождения = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,3).Value));
    НовФизЛицо.ИНН = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,7).Value));
    НовФизЛицо.Должность = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,6).Value));
    НовФизЛицо.НомерБанковскойКарточки = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,8).Value));
    НовФизЛицо.УдостоверениеЛичности = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,4).Value));

    Если СокрЛП(Строка(ExcelЛист.Cells(НомСтр,5).Value)) = "М" Тогда
    НовФизЛицо.ПолФизическихЛиц = Перечисления.ПолФизическихЛиц.Мужской;
    ИначеЕсли СокрЛП(Строка(ExcelЛист.Cells(НомСтр,5).Value)) = "Ж" Тогда
    НовФизЛицо.ПолФизическихЛиц = Перечисления.ПолФизическихЛиц.Женский;
    КонецЕсли;

    НовФизЛицо.Записать();

    Если СокрЛП(Строка(ExcelЛист.Cells(НомСтр,4).Value)) <> "" Тогда
    ЗаписьВРегистрСведений = РегистрыСведений.ПаспортныеДанныеФизЛиц.СоздатьНаборЗаписей();
    ЗаписьВРегистрСведений.Отбор.ФизЛицо.Значение = НовФизЛицо.Ссылка;
    ТЗ = ЗаписьВРегистрСведений.Выгрузить();
    Новая = ТЗ.Добавить();
    Новая.ФизЛицо = НовФизЛицо.Ссылка;
    Новая.Период = ТекущаяДата();
    Новая.Вид = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,9).Value));
    //Новая.Вид = Справочники.ДокументыУдостоверяющиеЛичность.НайтиПоНаименованию(Наименование);

    Новая.ДокументСерия = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,10).Value));
    Новая.ДокументНомер = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,11).Value));
    Новая.ДокументДатаВыдачи = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,11).Value));
    Новая.ДокументКемВыдан = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,13).Value));
    ДатаРегистрации = СокрЛП(Строка(ExcelЛист.Cells(НомСтр,12).Value));
    ЗаписьВРегистрСведений.Загрузить(ТЗ);
    ЗаписьВРегистрСведений.Записать();
    //ПаспортныеДанныеЗаписаны = Истина;
    КонецЕсли;

    Если СокрЛП(Строка(ExcelЛист.Cells(НомСтр,2).Value)) <> "" Тогда

    ЗаписьВРегистрСведений = РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей();
    ЗаписьВРегистрСведений.Отбор.ФизЛицо.Значение = НовФизЛицо.Ссылка;
    ТЗ = ЗаписьВРегистрСведений.Выгрузить();
    Новая = ТЗ.Добавить();
    Новая.ФизЛицо = НовФизЛицо.Ссылка;
    Новая.Фамилия = СокрЛП(Строка.Фамилия) ;
    Новая.Имя = СокрЛП(Строка.Имя);
    Новая.Отчество = СокрЛП(Строка.Отчество);
    ЗаписьВРегистрСведений.Загрузить(ТЗ);
    ЗаписьВРегистрСведений.Записать();
    КонецЕсли;

    НомСтр = НомСтр+1;
    Если ПустаяСтрока(ExcelЛист.Cells(НомСтр,1).Value) тогда
    Фл = 0;
    Сообщить("Завершена загрузка справочника ФизЛица");
    КонецЕсли;
    КонецЦикла;
    Excel.WorkBooks.Close();
    Excel = 0;
    КонецПроцедуры
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.128
    Симпатии:
    953
    Баллы:
    204
    отборы наборов записей точно устанавливаются?
  3. NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    217
    Симпатии:
    2
    Баллы:
    29
    Удостоверение личности, после создания записи в регистре надо присвоить это значение в самом справочнике данного физ лица. Вы сначала просто присваиваете текст. А значение параметра у вас ссылка, так? А при открытии данного значения нет. Посмотрите в РС, создается запись по этому физлицу или нет, если да то соответственно, присвоите значение, и не забываем запись данного элемента, в конце.

Поделиться этой страницей