Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Не получается записать данные в регистр

Не получается записать данные в регистр
Я
   FFIL0S0FF
 
10.05.18 - 11:58
Добрый день.
УПП регистр сведений Контактная информация
Делаю обработку для загрузки пропусков из текстового файла.

Проблема в том что если в регистре уже есть запись то номер пропуска записывается и изменяется.
А если записи в регистре нет то новая запись не записывается. Но могу понять почему.

Сам код:

Процедура КнопкаВыполнитьНажатие(Кнопка)
ТекстовыйДок = Новый ТекстовыйДокумент();
ТекстовыйДок.Прочитать(ПутьКФайлу);
КоличествоСтрок = ТекстовыйДок.КоличествоСтрок();
Для Сч=2 по КоличествоСтрок Цикл
    
 
    СтрокаИзФайла = ТекстовыйДок.ПолучитьСтроку(Сч);

    МассивЗначений =СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла,";",Ложь);    
    Если МассивЗначений.ВГраница()>5 Тогда    
    НомерКарты = МассивЗначений[6];
    МассивЗначений[6]= НомерКарты;    
    СтрокаФИО = СокрЛП(МассивЗначений[0]) +" "+ СокрЛП(МассивЗначений[1])+" " +СокрЛП(МассивЗначений[2]);
    
    НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Объект.Установить(Справочники.ФизическиеЛица.НайтиПоНаименованию(СтрокаФИО));
    НаборЗаписей.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Другое);
    НаборЗаписей.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Номер пропуска"));    

    НаборЗаписей.Прочитать();
    Для каждого Запись из НаборЗаписей Цикл
        Запись.Представление = СокрЛП(НомерКарты);
            КонецЦикла;
    НаборЗаписей.Записать(); 

    
КонецЕсли;

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



Проблема в том что если в регистре уже есть запись то номер пропуска записывается и изменяется.
А если записи в регистре нет то новая запись не записывается. Не могу понять почему?
 
 
   DrShad
 
1 - 10.05.18 - 12:00
кто же пишет РС наборами?
   FFIL0S0FF
 
2 - 10.05.18 - 12:04
А как нужно? Я нашел именно такой способ поэтому делаю так.
   1Сергей
 
3 - 10.05.18 - 12:05
(2) ищи другой способ
   hhhh
 
4 - 10.05.18 - 12:07
(2) забыл  НаборЗаписей.Добавить();

поэтому не добавляется новая запись
   Малыш Джон
 
5 - 10.05.18 - 12:09
(1) а что не так?
   Волшебник
 
6 - 10.05.18 - 12:10
(1) Платформа всегда
   ugorchina
 
7 - 10.05.18 - 12:17
(1) а вы как пишите?
   DrShad
 
8 - 10.05.18 - 12:19
(7) через менеджер записи
а наборами только очищаю
   ugorchina
 
9 - 10.05.18 - 12:32
(8) или я туплю даже если менеджер записи не нужно разве писать затем  НаборЗаписей = МенеджерЗаписи.СоздатьНаборЗаписей();
?
или я ошибаюсь?
   DrShad
 
10 - 10.05.18 - 12:34
(9) а ты попробуй
 
 Рекламное место пустует
   ugorchina
 
11 - 10.05.18 - 12:36
(10) нет возможности
   FFIL0S0FF
 
12 - 10.05.18 - 12:39
(10) Ваш способ действительно показался мне более удобным.
погуглил...
сделал...

Процедура КнопкаВыполнитьНажатие(Кнопка)
ТекстовыйДок = Новый ТекстовыйДокумент();
ТекстовыйДок.Прочитать(ПутьКФайлу);
КоличествоСтрок = ТекстовыйДок.КоличествоСтрок();
Для Сч=2 по КоличествоСтрок Цикл
    
 
    СтрокаИзФайла = ТекстовыйДок.ПолучитьСтроку(Сч);

    МассивЗначений =СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла,";",Ложь);    
    Если МассивЗначений.ВГраница()>5 Тогда    
    НомерКарты = МассивЗначений[6];
    МассивЗначений[6]= НомерКарты;    
    СтрокаФИО = СокрЛП(МассивЗначений[0]) +" "+ СокрЛП(МассивЗначений[1])+" " +СокрЛП(МассивЗначений[2]);
    
    НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
    
    НаборЗаписей.Объект=Справочники.ФизическиеЛица.НайтиПоНаименованию(СтрокаФИО);
    НаборЗаписей.Тип=Перечисления.ТипыКонтактнойИнформации.Другое;
    НаборЗаписей.Вид=Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Номер пропуска");
    НаборЗаписей.Представление  = СокрЛП(НомерКарты);

    
    НаборЗаписей.Записать(Истина);
    
КонецЕсли;

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


Но теперь вылезает ошибка:

Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать(Истина);
по причине:
Не удалось записать: "Контактная информация"!

Я что то сделал не так? У регистра 3 измерения и я их заполняю.
+ в предыдущем вареанте работало с такими значениями на изменение.
   lEvGl
 
13 - 10.05.18 - 13:14
(1) че бы нет, тем более при загрузке из файла, а то ж получится как в (12)
   lEvGl
 
14 - 10.05.18 - 13:16
(12) "запись с такими значениями измерений уже существует"?
   FFIL0S0FF
 
15 - 10.05.18 - 13:29
нет
   lEvGl
 
16 - 10.05.18 - 13:39
с такими ключевыми полями?
   lubitelxml
 
17 - 10.05.18 - 13:42
(12)
    НомерКарты = МассивЗначений[6];
    МассивЗначений[6]= НомерКарты; 
не расскажешь для чего вторая строка?
   Мандалай
 
18 - 10.05.18 - 13:44
Поставь галочку "Остановка по ошибке" и запусти свой алгоритм, только войди в режим отладки. Увидишь где ругается, скорее всего какая нибудь проверка в модуле при записи выполняется.
   lEvGl
 
19 - 10.05.18 - 13:46
(17)+
ну а так для варианта из 0 в (4) уже все сказали
   DrShad
 
20 - 10.05.18 - 13:47
у менеджера записей еще есть метод Выбран()
на всякий случай

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует