7.7 Подскажите пожалуйста как отредактировать элемент справочника

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Денис44, 14 сен 2011.

  1. TopicStarter Overlay
    Денис44
    Offline

    Денис44

    Регистрация:
    9 фев 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Пытаюсь отредактировать один из реквизитов справочника не пользуясь формой, т.е. программно.
    Код:
    Для сч1=0 по ТабличнаяЧасть1.Количество()-1 Цикл
    НомЧека=ТабличнаяЧасть1.Получить(сч1).НомерЧека;
    СпрВесовая = Справочники.ДанныеСВесовых;
    СпрВесовая.НайтиПоРеквизиту("НомерЧека",НомЧека).НомерАкта = ЭтаФорма.ЭлементыФормы.НомерАкта.Значение;
    КонецЦикла;
    
    
    В ответ 1С выдает

    {Справочник.Акты.Форма.ФормаЭлемента(227)}: Поле объекта недоступно для записи (НомерАкта)
    СпрВесовая.НайтиПоРеквизиту("НомерЧека",НомЧека).НомерАкта = ЭтаФорма.ЭлементыФормы.НомерАкта.Значение;


    Порылся в книжке 1с, в ней ничего не написано о редактироваини уже имеющихся элементов справочника, только про добавление. С добавлением записей в этот же справочник проблем нет. Подскажите пожалуйста как решить эту проблемку.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    НайтиПоРеквизиту возвращает 1 или 0 (в зависимости от успеха)...
    Код:
    Если СпрВесовая.НайтиПоРеквизиту("НомерЧека",НомЧека)=1 Тогда
    СпрВесовая.НомерАкта = ЭтаФорма.ЭлементыФормы.НомерАкта.Значение;
    КонецЕсли;
    
    
  3. TopicStarter Overlay
    Денис44
    Offline

    Денис44

    Регистрация:
    9 фев 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Странная картина

    НайтиПоРеквизиту должно в любом случае возвращать 1, т.к. параметр НомЧека берется из ТабличнойЧасти, в которой находится содержимое справочника ДанныеСВесовых, отобранное по некоторым параметрам.

    Код:
    СпрВесовая = Справочники.ДанныеСВесовых;
    
    Для сч1=0 по ТабличнаяЧасть1.Количество()-1 Цикл
    НомЧека=СокрЛП(ТабличнаяЧасть1.Получить(сч1).НомерЧека);
    Сообщить(СпрВесовая.НайтиПоРеквизиту("НомерЧека",НомЧека).Сумма);
    Если СпрВесовая.НайтиПоРеквизиту("НомерЧека",НомЧека)=1 Тогда
    СпрВесовая.НомерАкта = ЭтаФорма.ЭлементыФормы.НомерАкта.Значение;
    КонецЕсли;	
    КонецЦикла;
    
    
    И получается следующее: "Сообщить" выводит правильные данные "Сумма", соотвествующие параметру "НомЧека", следовательно "НайтиПоРеквизиту" работает, а строчка
    Код:
    СпрВесовая.НомерАкта = ЭтаФорма.ЭлементыФормы.НомерАкта.Значение;
    
    пропускается...
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    1. Судя по коду разделом вы ошиблись (у вас не 7.7, а 8);
    2. НайтиПоРеквизиту будет возвращать ссылку на найденный элемент справочника;
    3. Чтобы изменить найденный элемент нужно получить объект, а затем его записать.
    Код:
    СпрВесовая = Справочники.ДанныеСВесовых;
    Для каждого ТекСтрока Из ТабличнаяЧасть1 Цикл
    НомЧека=СокрЛП(ТекСтрока.НомерЧека);
    Сообщить(СпрВесовая.НайтиПоРеквизиту("НомерЧека",НомЧека).Сумма);
    НайденнаяСсылка  = СпрВесовая.НайтиПоРеквизиту("НомерЧека",НомЧека);
    Если НайденнаяСсылка  <> СпрВесовая.ПустаяСсылка() Тогда
    СпрВесоваяОбъект = НайденнаяСсылка.ПолучитьОбъект();
    СпрВесоваяОбъект.НомерАкта = ЭтаФорма.ЭлементыФормы.НомерАкта.Значение;
    СпрВесоваяОбъект.Записать();
    КонецЕсли;
    КонецЦикла;
    
    
  5. TopicStarter Overlay
    Денис44
    Offline

    Денис44

    Регистрация:
    9 фев 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Спасибо, всё заработало!

Поделиться этой страницей