Имя: Пароль:
1C
 
РегистрыСведений.Назв.СоздатьНаборЗаписей() 1с83 ОФ УПП
0 Casper211
 
11.04.16
11:35
Добрый день!
В табличной части на форме, изменяю значение поля и хочу изменить данные 1 поля в регистре сведений, делаю отбор:


        НаборЗаписей = РегистрыСведений.Доставка.СоздатьНаборЗаписей();      
    НайденаяСсылка = РегистрыСведений.Доставка.Выбрать();
    НаборЗаписей.Отбор.ЗаказПокупателя.Использование = Истина;
    НаборЗаписей.Отбор.ЗаказПокупателя.ВидСравнения =ВидСравнения.Равно;
    НаборЗаписей.Отбор.ЗаказПокупателя.Значение = ЭлементыФормы.СписокДокументов.ТекущаяСтрока.Ссылка;
    НоваЗапись = НаборЗаписей.Добавить();
    НоваЗапись.НомерТТН = Элемент.Значение;
    НаборЗаписей.Записать();


Но так не хочет записывать.{Форма.ОсновнаяФорма.Форма(1184)}: Ошибка при вызове метода контекста (Записать)
    НаборЗаписей.Записать();
по причине:
Запись не верна! Значение поля не соответствует установленному отбору: Доставка: ,  (Регистр сведений: Доставка; Номер строки: 1; Поле: ЗаказПокупателя)

Как сделать чтобы изменить (переписать) только 1 поле в регистре??
1 1sanekmaloi1
 
11.04.16
11:42
Либо прочитай набор и обходи записи меняя поле, либо устанавливай значения измерений, набор у тебя с отбором по "заказПокупателя", а новаязапись.ЗаказПокупателя = "пустая ссылка"
2 Casper211
 
11.04.16
11:46
(1)

НаборЗаписей = РегистрыСведений.Доставка.СоздатьНаборЗаписей();      
    НаборЗаписей.Отбор.ЗаказПокупателя.Использование = Истина;
    НаборЗаписей.Отбор.ЗаказПокупателя.ВидСравнения =ВидСравнения.Равно;
    НаборЗаписей.Отбор.ЗаказПокупателя.Значение = ЭлементыФормы.СписокДокументов.ТекущиеДанные.Ссылка;
    НаборЗаписей.Отбор.Контрагент.Использование = Истина;
    НаборЗаписей.Отбор.Контрагент.ВидСравнения =ВидСравнения.Равно;
    НаборЗаписей.Отбор.Контрагент.Значение = ЭлементыФормы.СписокДокументов.ТекущиеДанные.Контрагент;
    НаборЗаписей.Прочитать();
    //обходи записи меняя поле
    НоваЗапись = НаборЗаписей.Добавить();
    НоваЗапись.НомерТТН = Элемент.Значение;
    НаборЗаписей.Записать();

Извини, а как их обойти?
3 1sanekmaloi1
 
11.04.16
11:50
Для каждого запись из НаборЗаписей
  запись.номерттн = элемент.значение;
КонецЦикла
Набор.записать();
4 Casper211
 
11.04.16
11:56
(3) Большое спасибо. Все получилось
Еще раз спасибо.

НаборЗаписей = РегистрыСведений.Доставка.СоздатьНаборЗаписей();      
    НаборЗаписей.Отбор.ЗаказПокупателя.Использование = Истина;
    НаборЗаписей.Отбор.ЗаказПокупателя.ВидСравнения =ВидСравнения.Равно;
    НаборЗаписей.Отбор.ЗаказПокупателя.Значение = ЭлементыФормы.СписокДокументов.ТекущиеДанные.Ссылка;
    НаборЗаписей.Отбор.Контрагент.Использование = Истина;
    НаборЗаписей.Отбор.Контрагент.ВидСравнения =ВидСравнения.Равно;
    НаборЗаписей.Отбор.Контрагент.Значение = ЭлементыФормы.СписокДокументов.ТекущиеДанные.Контрагент;
    НаборЗаписей.Прочитать();
    
    Для каждого НоваяЗапись из НаборЗаписей Цикл
      НоваяЗапись.НомерТТН = Элемент.Значение;
    КонецЦикла;
    НаборЗаписей.Записать();
5 ДенисЧ
 
11.04.16
11:58
А просто
НаборЗаписей.Отбор.Контрагент.Установить(ЭлементыФормы.СписокДокументов.ТекущиеДанные.Контрагент);

не катит?
6 Casper211
 
11.04.16
12:01
(5)И так работает,и вам большое спасибо за оптимизацию кода. И за помощь