Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 17:56

как обратиться к одному из реквизитов табличной части??

Автор mila1231, 17 сен 2015, 04:19

0 Пользователей и 1 гость просматривают эту тему.

mila1231

Есть документ, в нём есть табличная часть, как обратиться к одному из реквизитов табличной части??
.....
вот запрос
Запрос.Текст = "ВЫБРАТЬ

                  |   Приемка_СИ.Номер,
                  |   Приемка_СИ.Приборы.(
                  |      Заводской_Номер,
                  |   )
                  |ИЗ
                  |   Документ.Приемка_СИ КАК Приемка_СИ";   
ВыборкаДанные = Запрос.Выполнить().Выбрать();
   
не могу понять, как обратиться к Заводской_номер...
т.е по сути должно быть что то под вид этого...

ОбластьДанные.Параметры.ЗавНомер_акт=ВыборкаДанный.Приборы.Заводской_Номер;
но по всей видимости я ошибаюсь, как правильно??
         
               

Luzer1C

ОбластьДанные.Параметры.ЗавНомер_акт=ВыборкаДанный.Приборы.Заводской_Номер;
1. В запросе выбрать ссылку на документ
2. Прописать так:
ОбластьДанные.Параметры.ЗавНомер_акт=ВыборкаДанный.Ссылка.Приборы[0].Заводской_Номер;
т.е. берём 1-ую строку ТЧ.
3. Или делаем обход в цикле:
Для каждого СтрокаТЧ ИЗ ВыборкаДанный.Ссылка.Приборы Цикл
    ОбластьДанные.Параметры.ЗавНомер_акт = СтрокаТЧ.Заводской_Номер;
КонецЦикла

4. Или в запросе обратиться сразу к ТЧ Приборы и в качестве параметра указать ссылку на документ.
Халамбалам.

mila1231

Спасибо добавила в запрос строку

|    Приемка_СИ.ССылка,

дальше стало работать)), но не совсем так как надо...
как я поняла если мы делаем обход

Для каждого СтрокаТЧ ИЗ ВыборкаДанные.Ссылка.Приборы Цикл
        ОбластьДанные.Параметры.ЗавНомер_акт = СтрокаТЧ.Заводской_Номер;
КонецЦикла;

то, должны выбираться все данные, заполненные в табличном поле, т.е я имею в виду, если заполнена не одна строка, а например две, т.е два заводских номера или я не права?
Задача в том, чтоб вывести эти данные в отчёт, соответственно я делаю так:

Пока ВыборкаДанные.следующий() Цикл
      
   ОбластьШапка.Параметры.номер_акт = "№"+ номер+" "+ "от" + " " +Формат(Дата,"ДФ=""дд.ММ.гггг""");

     Для каждого СтрокаТЧ ИЗ ВыборкаДанные.Ссылка.Приборы Цикл
        ОбластьДанные.Параметры.ЗавНомер_акт = СтрокаТЧ.Заводской_Номер;
    КонецЦикла
      
КонецЦикла;
     
может подскажите, где ошибка??


Luzer1C

Использование Для каждого - обход всех строк ТЧ, сколько их бы там не было.
Для каждого СтрокаТЧ ИЗ ВыборкаДанные.Ссылка.Приборы Цикл
        ОбластьДанные.Параметры.ЗавНомер_акт = СтрокаТЧ.Заводской_Номер;
    ТабличныйДокумент.Вывести(ОбластьДанные);
КонецЦикла


А что конкретно нужно?
Халамбалам.

mila1231

Нужно вывести данные табличной части документа в отчёт. В табличном документе может быть несколько строк (например пускай будет больше одной, т.е две)
соответственно мне эти две строки и нужно вывести в отчёт. Сама процедура счас выглядит так.


ТабДок   = новый ТабличныйДокумент;
   табДок.Очистить();


   
   Запрос = Новый запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |   Приемка_СИ.Контрагент.Полное_наименование,
                  |   Приемка_СИ.Контрагент.ИНН,
                  |   Приемка_СИ.Дата,
                  |   Приемка_СИ.Номер,
               |    Приемка_СИ.ССылка,

                  |   Приемка_СИ.Приборы.(
                  |      Заводской_Номер,
                  |      Тип_СИ.Наименование,
                  |      Марка.Наименование,
                  |      ДУ.Наименование,
                  |      Год_выпуска,
                  |      Паспорт,
                  |      Предыдущее_свидетельство
                  |   )
                  |ИЗ
                  |   Документ.Приемка_СИ КАК Приемка_СИ";               
               
               
               
   ВыборкаДанные = Запрос.Выполнить().Выбрать();
   
    // получаем макет
   Макет = ПолучитьМакет ("Макет_акт");

   ОбластьШапка = макет.ПолучитьОбласть("Шапка");
   
   ОбластьЗаголовок = макет.ПолучитьОбласть("Заголовок");
   
   ОбластьДанные  = Макет.получитьОбласть ("Данные");
   
   ОбластьПодвал  = Макет.получитьОбласть ("Подвал");
   
   Пока ВыборкаДанные.следующий() Цикл
      
   ОбластьШапка.Параметры.номер_акт = "№"+ номер+" "+ "от" + " " +Формат(Дата,"ДФ=""дд.ММ.гггг""");

    Для каждого СтрокаТЧ ИЗ ВыборкаДанные.Ссылка.Приборы Цикл
        ОбластьДанные.Параметры.ЗавНомер_акт = СтрокаТЧ.Заводской_Номер;
    КонецЦикла;
      
КонецЦикла;
     


//ТабДок.вывести(ОбластьДанные);
    ТабДок.вывести(ОбластьШапка );
    ТабДок.вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьДанные);

    ТабДок.Вывести(ОбластьПодвал);

    ТабДок.показать();

и в результате выводится последняя строка табличного документа.

Luzer1C

Для каждого СтрокаТЧ ИЗ ВыборкаДанные.Ссылка.Приборы Цикл
        ОбластьДанные.Параметры.ЗавНомер_акт = СтрокаТЧ.Заводской_Номер;
    ТабличныйДокумент.Вывести(ОбластьДанные);
КонецЦикла

Читать умеем или не по глазам?
Нужно добавить строку:
ТабДок.Вывести(ОбластьДанные);
Халамбалам.

mila1231

ещё раз спасибо, оно было, но не там, где надо, поэтому и не работало.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск