8.х Заполнение табличной части документа

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

  1. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.

    Пытаюсь сделать такую возможность:

    В документе пользователь выбирает из выпадающего списка значение реквизита документа. ПриИзменении этого поля ТабличнаяЧасть документа должна заполниться автоматически.

    Конфигурация не типовая, делаю сам.

    Документ ЗаполнениеДанных:
    Реквизиты: Комната

    Табличная часть Приборы
    Реквизиты: Прибор, ЗначениеВход, ЗначениеВыход, Разница

    Пример:
    Пользователь выбирает комнату из списка. В табличной части должны появиться строчки со списком всех приборов, находящихся в этой комнате. Далее пользователь заполняет уже вручную другие поля табличной части.

    Пока для проверки просто пытаюсь заполнить поле ввода Прибор (ссылка на справочник Приборы) значением одного элемента "ИА1" из справочника Приборы.

    Код:
    Процедура КомнатаПриИзменении(Элемент)
    
    НоваяСтрока = ЭтотОбъект.Приборы.Добавить();
    
    // Заполнить значения реквизитов.
    Прибор = Справочники.Приборы.НайтиПоНаименованию("ИА1", Истина);
    ПриборОбъект = Прибор.ПолучитьОбъект();
    НоваяСтрока.Прибор = ПриборОбъект.Наименование;
    // Записать документ.	
    ЭтотОбъект.Записать();
    
    КонецПроцедуры
    
    
    В результате строка в ТЧ создается. Номер строки заполняется. Но поле Прибор остается пустым, хотя в ПриборОбъект.Наименование хранится правильное значение (смотрел при отладке).
    Этот документ еще не записан и не проведен

    Может быть как то по-другому нужно это делать?
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну во первых я бы сначал Очищал ТЧ

    1. У вас в ТЧ поле прибор какгого типа? скорее всего ссылка на справочник приборы, зачем наименование присваивать и Объект получать

    Код:
    Процедура КомнатаПриИзменении(Элемент)
    ЭтотОбъект.Приборы.Очистить();
    НоваяСтрока = ЭтотОбъект.Приборы.Добавить();		// Заполнить значения реквизитов.
    
    Прибор = Справочники.Приборы.НайтиПоНаименованию("ИА1", Истина);	
    
    НоваяСтрока.Прибор = Прибор;             // Записать   
    документ.ЭтотОбъект.Записать();	
    
    КонецПроцедуры
    
  3. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    1. Вообще бы хорошо перед очисткой вопрос задать пользователю.
    2. Drago, зачем писать ЭтотОбъект.Приборы.Очистить() если можно просто Приборы.Очистить()? ну и далее с добавлением такая же штука.
    3. Зачем записывать документ? Пользователь же еще будет править его.
    Ну если уж записывать, то лучше ЗаписатьВФорме().
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Просто иг их пользователей знает. не пишут же конкретно есть реквизит ТЧ или нет. Может человек просто на документ Табличное поле бухнул и все. Как он к нему обратился так и я .... что бы хотя бы работало
  5. SSSS
    Offline

    SSSS

    Регистрация:
    1 ноя 2010
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    А если не указывать явно как в данном случае НайтиПоНаименованию("ИА1", Истина), а по реквизиту справочника автоматически заполнить табличную часть? Или вместо "ИА1" нужно получать поле из справочника по которому поля в таблице будут идентифицироваться?

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