8.х Изменение реквизита табличной части открытого документа из обработки

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем BimmerMK, 21 июл 2009.

  1. TopicStarter Overlay
    BimmerMK
    Offline

    BimmerMK

    Регистрация:
    13 фев 2008
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Ситуация следующая: необходимо из обработки изменить реквизит табличной части открытого записанного документа.

    Данная процедура должна изменить в табличной части документа реквизит 'Количество' для всех строк, присутствующих в табличной части обработки:

    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    //Документ - реквизит обработки, который заполняется при ее вызове
    Док = Документ.ПолучитьОбъект();
    Для Каждого ТекСтрока из Номенклатура Цикл
    СтрокаДок = Док["Номенклатура"].Получить(ТекСтрока.НомерСтрокиДок-1);	
    СтрокаДок.Количество = 5;
    КонецЦикла;
    Док.Записать();
    Док.ПолучитьФорму().Обновить();
    КонецПроцедуры
    
    
    В результате, пока на закроешь форму документа и не откроешь ее снова изменений не видно.
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Кури ЖКК, какую форму ты получаешь.
    Если вкратце - получаешь не ту форму, которую хочешь :)

    Получать надо по ссылке, а не по объекту.
  3. e.kogan
    Offline

    e.kogan

    Регистрация:
    2 окт 2008
    Сообщения:
    42
    Симпатии:
    0
    Баллы:
    1
    Вкратце:
    Код:
    мФорма = СсылкаНаОбъект.ПолучитьФорму("ФормаДокумента");
    Если не мФорма.Открыта() Тогда Возврат КонецЕсли;
    мОбъект = мФорма.ДокументОбъект; 
    мОбъект.Прочитать();
    мОбъект.ДатаНомерДокументовОплаты.Загрузить(ДатаНомерДокументовОплаты);
    мОбъект.Записать();
    Если мФорма.Открыта() Тогда
    мФорма.Активизировать();
    Если ДатаНомерДокументовОплаты.Количество() > 1 Тогда
    мФорма.ЭлементыФормы.СписокПРД.Значение=Истина;
    мФорма.ЭлементыФормы.ДополнительныеПараметрыСчетаФактуры.ТекущаяСтраница = мФорма.ЭлементыФормы.ДополнительныеПараметрыСчетаФактуры.Страницы.СписокПлатежноРасчетныхДокументов;
    Иначе
    мФорма.ЭлементыФормы.ДатаНомерДокументовОплаты.ТекущаяСтрока = мОбъект.ДатаНомерДокументовОплаты[0];
    мФорма.ЭлементыФормы.ДополнительныеПараметрыСчетаФактуры.ТекущаяСтраница = мФорма.ЭлементыФормы.ДополнительныеПараметрыСчетаФактуры.Страницы.ПараметрыПлатежноРасчетногоДокумента;
    КонецЕсли;
    мФорма.Обновить();
    КонецЕсли;
    
    
    
    Это фрагмент кода из обработки подбора платежных документов в счёт-фактуру, реализованной как внешняя печатная форма. Переменная СсылкаНаОбъект, как я понимаю, будет аналогична переменной Документ в описанном. Главная особенность такой методики - получение объекта не по ссылке, а по соответствующему реквизиту открытой формы.

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