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

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

Сам код:

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

    СтрокаИзФайла = ТекстовыйДок.ПолучитьСтроку(Сч);

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

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

    
КонецЕсли;

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



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

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

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

    СтрокаИзФайла = ТекстовыйДок.ПолучитьСтроку(Сч);

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

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

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


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

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

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