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

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

  1. TopicStarter Overlay
    bel4onysh
    Offline

    bel4onysh

    Регистрация:
    7 сен 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Сделал так, не работает
    Код:
    Для каждого Реквизит Из Ссылка.Метаданные().Реквизиты Цикл
    
    МойРеквизит = Реквизит.Представление();
    
    Попытка
    
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |	P11001.ОрганГосударственнойРегистрации КАК ОрганГосударственнойРегистрации,
    |	P11001.ОргПравФорма КАК ОргПравФорма,
    |	P11001.ПолноеНаименованиеЮЛ_Рус КАК ПолноеНаименованиеЮЛ_Рус,
    |	P11001.СокращенноеНаименованиеЮЛ_Рус КАК СокращенноеНаименованиеЮЛ_Рус,
    |	P11001.ПолноеНаименованиеЮЛ_Нар КАК ПолноеНаименованиеЮЛ_Нар,
    |	P11001.СокращенноеНаименованиеЮЛ_Нар КАК СокращенноеНаименованиеЮЛ_Нар,
    |	P11001.ЯзыкНар КАК ЯзыкНар,
    |	P11001.ПолноеНаименованиеЮЛ_ИнЯз КАК ПолноеНаименованиеЮЛ_ИнЯз,
    |	P11001.СокращенноеНаименованиеЮЛ_ИнЯз КАК СокращенноеНаименованиеЮЛ_ИнЯз,
    |	P11001.ЯзыкИн КАК ЯзыкИн,
    |	P11001.ВидМестонахожденияЮЛ КАК ВидМестонахожденияЮЛ,
    |	P11001.НаименованиеЕИО КАК НаименованиеЕИО
    |ИЗ
    |	Документ.P11001 КАК P11001";
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
    
    Область = Элементыформы.ПолеТабДок1.Области[МойРеквизит];
    Область.Значение = Выборка[МойРеквизит];
    
    КонецЦикла;
    
    Исключение
    
    КонецПопытки;
    
    КонецЦикла;
    
    Пока заполняю присвоением соответствий значений реквизитам документа.
  2. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ну так судя по скриншоту, там ведь нет циклов. Там только поля с формы переносятся в ячейки ПоляТабличногоДокумента. У каждой такой ячейки ведь будет свое уникальное имя, зачем по ним бегать?
    Код:
    Для каждого Реквизит Из ДокументСсылка.Метаданные().Реквизиты Цикл
    
    здесь берем из документа все реквизиты.
    Код:
    Элементыформы.ПолеТабличногоДокумента1.Области[МойРеквизит].Значение = Выборка[МойРеквизит];
    
    здесь пытаемся найти по имени ячейки этот реквизит и присвоить ему значение. Не нашли, ну и фиг с ним в исключение вылетим в пустое, переход на следующее значение реквизита. А на ПолеТабличногоДокумента по имени оно то само их заполнит.
    Или я че-то не понимаю?

    Сорокин, а у вас макета нету? Если все это дело выводить через макет? Как обычно в ВПФ?
  3. TopicStarter Overlay
    bel4onysh
    Offline

    bel4onysh

    Регистрация:
    7 сен 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Shurikvz, спасибо!!!

    Все заработало, вместо Реквизит.Представление поставил "Имя"
    Код:
    Для каждого Реквизит Из Ссылка.Метаданные().Реквизиты Цикл
    
    МойРеквизит = Реквизит.Имя;
    
    Попытка
    
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |	P11001.ОрганГосударственнойРегистрации КАК ОрганГосударственнойРегистрации,
    |	P11001.ОргПравФорма КАК ОргПравФорма,
    |	P11001.ПолноеНаименованиеЮЛ_Рус КАК ПолноеНаименованиеЮЛ_Рус,
    |	P11001.СокращенноеНаименованиеЮЛ_Рус КАК СокращенноеНаименованиеЮЛ_Рус,
    |	P11001.ПолноеНаименованиеЮЛ_Нар КАК ПолноеНаименованиеЮЛ_Нар,
    |	P11001.СокращенноеНаименованиеЮЛ_Нар КАК СокращенноеНаименованиеЮЛ_Нар,
    |	P11001.ЯзыкНар КАК ЯзыкНар,
    |	P11001.ПолноеНаименованиеЮЛ_ИнЯз КАК ПолноеНаименованиеЮЛ_ИнЯз,
    |	P11001.СокращенноеНаименованиеЮЛ_ИнЯз КАК СокращенноеНаименованиеЮЛ_ИнЯз,
    |	P11001.ЯзыкИн КАК ЯзыкИн,
    |	P11001.ВидМестонахожденияЮЛ КАК ВидМестонахожденияЮЛ,
    |	P11001.НаименованиеЕИО КАК НаименованиеЕИО
    |ИЗ
    |	Документ.P11001 КАК P11001";
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
    
    Область = Элементыформы.ПолеТабДок1.Области[МойРеквизит];
    Область.Значение = Выборка[МойРеквизит];
    
    КонецЦикла;
    
    Исключение
    
    КонецПопытки;
    
    КонецЦикла;
    
  4. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Код:
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    P11001.ОрганГосударственнойРегистрации КАК ОрганГосударственнойРегистрации,
    |    P11001.ОргПравФорма КАК ОргПравФорма,
    |    P11001.ПолноеНаименованиеЮЛ_Рус КАК ПолноеНаименованиеЮЛ_Рус,
    |    P11001.СокращенноеНаименованиеЮЛ_Рус КАК СокращенноеНаименованиеЮЛ_Рус,
    |    P11001.ПолноеНаименованиеЮЛ_Нар КАК ПолноеНаименованиеЮЛ_Нар,
    |    P11001.СокращенноеНаименованиеЮЛ_Нар КАК СокращенноеНаименованиеЮЛ_Нар,
    |    P11001.ЯзыкНар КАК ЯзыкНар,
    |    P11001.ПолноеНаименованиеЮЛ_ИнЯз КАК ПолноеНаименованиеЮЛ_ИнЯз,
    |    P11001.СокращенноеНаименованиеЮЛ_ИнЯз КАК СокращенноеНаименованиеЮЛ_ИнЯз,
    |    P11001.ЯзыкИн КАК ЯзыкИн,
    |    P11001.ВидМестонахожденияЮЛ КАК ВидМестонахожденияЮЛ,
    |    P11001.НаименованиеЕИО КАК НаименованиеЕИО
    |ИЗ
    |    Документ.P11001 КАК P11001";
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();        
    Для каждого Реквизит Из Ссылка.Метаданные().Реквизиты Цикл
    
    МойРеквизит = Реквизит.Имя;
    
    Попытка
    Область = Элементыформы.ПолеТабДок1.Области[МойРеквизит];
    Область.Значение = Выборка[МойРеквизит];
    Исключение
    //Для дебага
    //Сообщить("Не найдена область или поле запроса: " + МойРеквизит);
    КонецПопытки;
    
    КонецЦикла;
    
    
    
    Сорокин, я думаю как-то так будет намного лучше.. :)
    Только в запрос еще добавьте "Где Документ.P11001.Ссылка = &Ссылка".
  5. TopicStarter Overlay
    bel4onysh
    Offline

    bel4onysh

    Регистрация:
    7 сен 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Еще раз всем спасибо за помощь, все работает! ))) :angry:

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