helpf.pro
Регистрация

v8.2 УП: Регистр сведений ФИОФизЛиц

Ponomarenko
05.03.2012 14:43Прочитано: 4145
Здравствуйте.У нас 1С УПП 8.2.При переносе спр.ФизЛиц из 1С Комплексной 7.7 в 1С УПП 8.2 в спр. ФизЛиц поля Фамилия, Имя, Отчество получились не заполненными. Пытаюсь заполнить эти поля след.образом:
Процедура ВыполнитьЗапросСервер()
Набор = РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей();
Выборка = Справочники.ФизическиеЛица.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа<>Истина Тогда
СсылкаОб = Выборка.Ссылка;
Наименование = СсылкаОб.Наименование;
Фамилия=Лев(Наименование,Найти(Наименование," "));
// Обращение к другим данным справочника.
Имя=Сред(Наименование,Найти(Наименование," ")+1);
Имя1=Лев(Имя,Найти(Имя," "));
Отчество=Сред(Имя,Найти(Имя," "));
Сообщить(Наименование+ " 1 "+Фамилия+" 2 "+Имя1+" 3 "+Отчество);
//******************************************************
Набор = РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей();
ФизЛицо = Наименование;//тут Ваше физ. лицо из справ
Набор.Отбор.ФизЛицо.Установить(СсылкаОб.Наименование);
Набор.Отбор.Период.Установить(ТекущаяДата());
Набор.Прочитать();
Если Набор.Количество() = 0 Тогда
Сообщить("Не нашла "+Наименование );
СтрокаДанных = Набор.Добавить();
СтрокаДанных.ФизЛицо=СсылкаОб.Наименование;
СтрокаДанных.Период = ТекущаяДата();
СтрокаДанных.Фамилия=Фамилия;
СтрокаДанных.Имя=Имя1;
СтрокаДанных.Отчество=Отчество;
Набор.Записать();

Иначе
Фамилия=Фамилия;
Имя=Имя1;
Отчество=Отчество;
Набор.Записать();
Сообщить("*******Нашла "+Наименование );
КонецЕсли;

//******************************************************
КонецЕсли;
КонецЦикла;
КонецПроцедуры

При выполнении обработки появляется ошибка:
{Обработка.ДозагрузкаФизЛиц.Форма.Форма.Форма(103)}: Ошибка при вызове метода контекста (Записать)
Набор.Записать();
по причине:
Запись не верна! Значение поля "Физическое лицо" не может быть пустым!: ФИОФизЛиц: 05.03.2012, (Регистр сведений: Фамилия, имя, отчество физического лица)
Подскажите, что я делаю не правильно!!!
Yandex
Возможно, вас также заинтересует
Реклама на портале
Vladimir88
05.03.2012 15:42Ответ № 1
Измерение ФизЛицо - имеет тип не сторока , а справочник физлица. т.е.

Код 1C v 8.х
 Процедура ВыполнитьЗапросСервер() 
Набор = РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей();
Выборка = Справочники.ФизическиеЛица.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
СсылкаОб = Выборка.Ссылка;
Наименование = СсылкаОб.Наименование;
Фамилия=Лев(Наименование,Найти(Наименование," "));
// Обращение к другим данным справочника.
Имя=Сред(Наименование,Найти(Наименование," ")+1);
Имя1=Лев(Имя,Найти(Имя," "));
Отчество=Сред(Имя,Найти(Имя," "));
Сообщить(Наименование+ " 1 "+Фамилия+" 2 "+Имя1+" 3 "+Отчество);
//******************************************************
Набор = РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей();
ФизЛицо = Наименование;//тут Ваше физ. лицо из справ
Набор.Отбор.ФизЛицо.Установить(СсылкаОб);
Набор.Отбор.Период.Установить(ТекущаяДата());
Набор.Прочитать();
Если Набор.Количество() = 0 Тогда
Сообщить("Не нашла "+Наименование );
СтрокаДанных = Набор.Добавить();
СтрокаДанных.ФизЛицо=СсылкаОб;
СтрокаДанных.Период = ТекущаяДата();
СтрокаДанных.Фамилия=Фамилия;
СтрокаДанных.Имя=Имя1;
СтрокаДанных.Отчество=Отчество;
Набор.Записать();
Иначе
Сообщить("*******Нашла "+Наименование );
КонецЕсли;
//******************************************************
КонецЦикла;
КонецПроцедуры

Изменено 05.03.12 15:44:26
Ponomarenko
06.03.2012 07:06Ответ № 2
Спасибо. Все получилось.
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.