Имя: Пароль:
1C
1С v8
Почему при записи в РегистрСведений сохраняется только последняя строка?
0 mortal
 
28.12.11
13:49
Приветствую всех!

что-то туплю зело, сабж:

Записываю адреса ФизЛиц в РегистрСведений Контактная информация. Данные беру из Экселя, делаю так:


   Для Каждого Выборка Из Результат Цикл
       Для Каждого Стр Из ТаблицаДокумента Цикл
           Если Стр.ТипЗначения = "Физические лица" Тогда
               Если СокрЛП(Выборка.Ссылка) = СокрЛП(Стр.Объект) Тогда
                   НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();  
                   НаборЗаписей.Записывать = Истина;
                   НоваяЗапись = НаборЗаписей.Добавить();
                   НоваяЗапись.Объект = Справочники.ФизическиеЛица.НайтиПоНаименованию(Стр.Объект);
                   НоваяЗапись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица;
                   НоваяЗапись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
                   НоваяЗапись.Поле1 = Стр.Поле1;
                   НоваяЗапись.Поле2 = Стр.Поле2;
                   НоваяЗапись.Поле3 = Стр.Поле3;
                   НоваяЗапись.Поле4 = Стр.Поле4;
                   НоваяЗапись.Поле5 = Стр.Поле5;
                   НоваяЗапись.Поле6 = Стр.Поле6;
                   НоваяЗапись.Поле7 = Стр.Поле7;
                   НоваяЗапись.Поле8 = Стр.Поле8;
                   НоваяЗапись.Поле9 = Стр.Поле9;
                   НоваяЗапись.Поле10 = Стр.Поле10;
                   НоваяЗапись.Представление = Стр.Представление;
                   Попытка
                       НаборЗаписей.Записать();
                   Исключение
                   КонецПопытки;
               КонецЕсли;
           КонецЕсли;    
       КонецЦикла;
   КонецЦикла;


___________
где выборка - выборка из РС КонтактнаяИнформация текущей базы
и Стр - строка ТаблицыЗначений, куда загрузил данные из Экселя

Проблема такая - записыватся только(!) последняя запись! Если в экселе оставить только строки по одному физлицу - записывает, а если больше - то только поледнюю строку.

ЧЯДНТ???
1 mortal
 
28.12.11
13:50
конфа Комплексная автоматизация, редакция 1.1 (1.1.16.1) , 1С:Предприятие 8.2 (8.2.13.219)
2 aleks-id
 
28.12.11
13:50
НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
это зачем в цикле?
3 Шапокляк
 
28.12.11
13:51
отбор не установлен в наборе записей
4 mortal
 
28.12.11
13:52
(2) выносил - не помогает
5 marty0701
 
28.12.11
13:52
НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();  Хороший последний созданный наборзаписей и записался, что не так? Хочешь записать все, создай 1 раз и запиши.
6 aleks-id
 
28.12.11
13:52
(4) и НаборЗаписей.Записать(); вынести еще надо
7 aleks-id
 
28.12.11
13:53
и вообще. за такие зихеры надо бить!
8 aleks-id
 
28.12.11
13:54
что мешает сразу в запросе получить требуемые данные и загнать их в набор записей?
9 mortal
 
28.12.11
13:55
(7)эээ
а кто такие зихеры?...
10 mortal
 
28.12.11
13:55
:)
11 aleks-id
 
28.12.11
13:55
(9) пояндекси
12 mortal
 
28.12.11
13:57
(8) я привел только урезанный пример - на самом деле переношу КИ по всем объектам (контрагенты, физлица и т.п.)
13 mikecool
 
28.12.11
13:58
ответ дан в (3)
14 mortal
 
28.12.11
16:38
Спасибо всем. особенно (3) и (13)

вот так:

       Для Каждого Стр Из ТаблицаДокумента Цикл
       Если Стр.ТипЗначения = "Физические лица" Тогда
           Если Стр.Вид = "Адрес по прописке физ. лица" Тогда
               //адрес прописки
               НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
               НаборЗаписей.Записывать = Истина;
               НаборЗаписей.Отбор.Объект.Значение = Справочники.ФизическиеЛица.НайтиПоНаименованию(Стр.Объект);
               НаборЗаписей.Отбор.Объект.Использование = Истина;
               НаборЗаписей.Отбор.Вид.Значение = Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица;
               НаборЗаписей.Отбор.Вид.Использование = Истина;
               НаборЗаписей.Отбор.Тип.Значение = Перечисления.ТипыКонтактнойИнформации.Адрес;
               НаборЗаписей.Отбор.Тип.Использование = Истина;
               НоваяЗапись = НаборЗаписей.Добавить();
               НоваяЗапись.Объект = Справочники.ФизическиеЛица.НайтиПоНаименованию(Стр.Объект);
               НоваяЗапись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица;
               НоваяЗапись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
               НоваяЗапись.Поле1 = Стр.Поле1;
               НоваяЗапись.Поле2 = Стр.Поле2;
               НоваяЗапись.Поле3 = Стр.Поле3;
               НоваяЗапись.Поле4 = Стр.Поле4;
               НоваяЗапись.Поле5 = Стр.Поле5;
               НоваяЗапись.Поле6 = Стр.Поле6;
               НоваяЗапись.Поле7 = Стр.Поле7;
               НоваяЗапись.Поле8 = Стр.Поле8;
               НоваяЗапись.Поле9 = Стр.Поле9;
               НоваяЗапись.Поле10 = Стр.Поле10;
               НоваяЗапись.Представление = Стр.Представление;
               Попытка
                   НаборЗаписей.Записать();
                   сообщить("записали    " + НаборЗаписей.Отбор.Объект.Значение.Наименование + ",     " + Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица.Наименование);
               Исключение
               КонецПопытки;
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
___
всё работает :)
15 mortal
 
28.12.11
16:38