Имя: Пароль:
1C
1С v8
Изменить тип записи в регистре сведений
0 first_may
 
03.02.14
13:28
Добрый день. Надо заменить тип АдресЭлектроннойПочты на ВебСтраница.

Весь текст обработки:
    ЗапросТекст = "
    |ВЫБРАТЬ
    |    КонтактнаяИнформация.Объект,
    |    КонтактнаяИнформация.Тип,
    |    КонтактнаяИнформация.Вид,
    |    КонтактнаяИнформация.Представление
    |ИЗ
    |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |    КонтактнаяИнформация.Тип = &Тип
    |    И КонтактнаяИнформация.Вид = &Вид";
    
    Запрос = Новый Запрос;
    Запрос.Текст = ЗапросТекст;
    Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00051"));
    Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    
    Выборка.Следующий();
    //Пока Выборка.Следующий() Цикл
        НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Объект.Значение = Выборка.Объект;
        НаборЗаписей.Отбор.Объект.Использование = Истина;
        НаборЗаписей.Отбор.Тип.Значение = Выборка.Тип;
        НаборЗаписей.Отбор.Тип.Использование = Истина;
        НаборЗаписей.Отбор.Вид.Значение = Выборка.Вид;
        НаборЗаписей.Отбор.Вид.Использование = Истина;
        НаборЗаписей.Прочитать();
        Если НаборЗаписей.Количество() > 0 Тогда
            НаборЗаписей[0].Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница;
            НаборЗаписей.Записать(Истина);
        КонецЕсли;
    //КонецЦикла;

Однако при выполнении выдается сообщение:
{Форма.Форма(34)}: Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля не соответствует установленному отбору: Орбита / Москва : Веб-страница : URL сайта (Регистр сведений: Контактная информация; Поле: Тип)
            НаборЗаписей.Записать(Истина);
по причине:
Запись не верна! Значение поля не соответствует установленному отбору: Орбита / Москва : Веб-страница : URL сайта (Регистр сведений: Контактная информация; Поле: Тип)

Как изменить тип?
1 Рэйв
 
03.02.14
13:31
ВСЕ поля надо заполнять.В том числе и "отборные"
2 first_may
 
03.02.14
13:35
(1) написал
Если НаборЗаписей.Количество() > 0 Тогда
    НаборЗаписей[0].Объект = Выборка.Объект;
    НаборЗаписей[0].Вид = Выборка.Вид;
    НаборЗаписей[0].Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница;
    НаборЗаписей.Записать(Истина);
КонецЕсли;

ошибка та же.
3 Рэйв
 
03.02.14
13:36
(2)ВСЕ - это значит все до одного:=)
4 Maxus43
 
03.02.14
13:36
Отбор стоит на старые поля, изменив измерения - это уже другой набор, и записывать его надо с правильным отбором.

Надо "удалить" старый набор записей и "добавить" новый
5 Maxus43
 
03.02.14
13:37
либо не ставить отбор на ТИП, и менять набор весь
6 Enders
 
03.02.14
13:40
(4)+100

Что бы изменить измерение надо: Или не устанавливать на него отбор, или
а) прочитать
б) выгрузить в ТЗ
в) Очистить набор
г) изменить в ТЗ то, что надо
д) создать новый набор
е) загрузить измененную ТЗ
7 first_may
 
03.02.14
13:46
(4) я понимаю, что отбор стоит старые поля... скорей всего надо "удалить" старый набор записей и "добавить" новый .
8 Maxus43
 
03.02.14
13:48
(7) выгружай в ТЗ, очищай и записывай старый набор.
создавай новый набор с правильным отбором (или меняй набор у старого), загружай ТЗ, записывай
9 first_may
 
03.02.14
14:08
(8) а так нельзя:

Если НаборЗаписей.Количество() > 0 Тогда
    НаборЗаписей.Удалить();
            
    НаборЗаписей.Добавить();
    НаборЗаписей[0].Объект = Выборка.Объект;
    НаборЗаписей[0].Вид = Выборка.Вид;
    НаборЗаписей[0].Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница;
    НаборЗаписей. Записать(Истина);
КонецЕсли;
10 Maxus43
 
03.02.14
14:20
(9) ошибка в том чот ОТБОР наложен не тот, в строках

        НаборЗаписей.Отбор.Тип.Значение = Выборка.Тип;
        НаборЗаписей.Отбор.Тип.Использование = Истина;
...
11 first_may
 
03.02.14
14:26
(10) ТО есть?
12 hhhh
 
03.02.14
14:27
(11)

       НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Объект.Значение = Выборка.Объект;
        НаборЗаписей.Отбор.Объект.Использование = Истина;
        НаборЗаписей.Отбор.Тип.Значение = Выборка.Тип;
        НаборЗаписей.Отбор.Тип.Использование = Истина;
        НаборЗаписей.Отбор.Вид.Значение = Выборка.Вид;
        НаборЗаписей.Отбор.Вид.Использование = Истина;
        НаборЗаписей.Прочитать();
      НаборЗаписей.Отбор.Тип.Значение = Перечисления.ТипыКонтактнойИнформации.ВебСтраница;
        НаборЗаписей.Отбор.Тип.Использование = Истина;
  
Если НаборЗаписей.Количество() > 0 Тогда
    НаборЗаписей.Удалить();
            
    НаборЗаписей.Добавить();
    НаборЗаписей[0].Объект = Выборка.Объект;
    НаборЗаписей[0].Вид = Выборка.Вид;
    НаборЗаписей[0].Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница;
    НаборЗаписей. Записать(Истина);
КонецЕсли;
13 Maxus43
 
03.02.14
14:28
(12) не удалится старый набор жеж
14 first_may
 
03.02.14
14:30
А может у кого нить есть обработка для 8.1:
ПоискИЗаменаЗначенийСотбором.epf