8.х Вывод значений выборки в таблицу

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем wwolk, 28 янв 2015.

  1. TopicStarter Overlay
    wwolk
    Offline

    wwolk

    Регистрация:
    28 янв 2015
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Здравствйуте, пытаюсь изучать 1С.
    Нашёл в на просторах сети код выборки данных из справочника. Переделал под себя:
    Имется Справочник Техника с реквизитами, собственно необходимо сделать выборку по определённому реквизиту что у кода получается.
    Однако данные выводятся в в виде служебного сообщения. Как сделать так что бы данные выводились в табличном варианте? Можно ли сделать так чтобы их в последствии можно было вывести на печать?

    Процедура Кнопка1Нажатие(Элемент)
    Выборка = Справочники.Техника.Выбрать();
    Пока Выборка.Следующий() = 1 Цикл // начало перебора элементов справочника в цикле
    //действия с очередным элементом ...
    Если ВводДанных = Выборка.Сотрудник тогда
    Сообщить("Наименование " + Выборка.Наименование + " Производитель " + Выборка.Производитель + " Модель " + Выборка.Модель
    + " Заводской Номер " + Выборка.ЗавНомер + " Инвентарный " + Выборка.Инвентарный + " Дата Выпуска " + Выборка.ДатаВыпуска
    + " Состояние " + Выборка.Состояние + " Сотрудник " + Выборка.Сотрудник + " Кабинет " + Выборка.Кабинет);
    КонецЕсли;
    КонецЦикла;

    КонецПроцедуры
  2. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    ну Вы спросили... Может сначала книги почитать и/или возьмите любую ВПФ и смотрите как там происходит вывод... Примерно:
    Код:
    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("МойМакет");
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); //в макете должна быть область
    ОбластьДетЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    //вывод области
    ТабДок.Вывести(ОбластьЗаголовок);
    Пока Выборка.Следующий() = 1 Цикл
    ОбластьДетЗаписей.Параметры.Наименование = Выборка.Наименование;
    ...
    ТабДок.Вывести(ОбластьДетЗаписей);
    КонецЦикла;
    Последнее редактирование: 28 янв 2015
    wwolk нравится это.
  3. TopicStarter Overlay
    wwolk
    Offline

    wwolk

    Регистрация:
    28 янв 2015
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Если вам не трудно, можете пояснить...
    Код:
    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("МойМакет");
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); //в макете должна быть область
    ОбластьДетЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    Эта часть кода создает пустой табличный документ.
    Я вручную создаю макет документа, с именем "Мой макет" и определяю в этом макете области - Заголовок и Детали.
    Далее в области детали создаю ячейку с заполнением "Параметр" и параметром "Наименование", достаточно одной ячейки с таким параметром или их нужно несколько?

    Ниже не совсем понятно, откуда выводится Заголовок если эта область пустая.
    Как понимаю мне надо вручную в макете прописывать шапку для вывода?
    Код:
    //вывод области
    ТабДок.Вывести(ОбластьЗаголовок);
    
    Ниже идёт цикл с присваиванием ячейке "Наименование",( которую я определил заранее), данных выборки?
    Код:
    Пока Выборка.Следующий() = 1 Цикл
    ОбластьДетЗаписей.Параметры.Наименование = Выборка.Наименование;
    
    Код:
    ТабДок.Вывести(ОбластьДетЗаписей);
    Эта строка открывает новое окно с табличной формой?

    Что у меня получилось:
    Код:
    Процедура Кнопка1Нажатие(Элемент)
    //создаем табл документ
    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Область1"); //в макете должна быть область
    ОбластьДетЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    
    ТабДок.Вывести(ОбластьЗаголовок);
       
       Выборка = Справочники.Техника.Выбрать();
         Пока Выборка.Следующий() = 1 Цикл // начало перебора элементов справочника в цикле
    //действия с очередным элементом ...
         Если ВводДанных = Выборка.Сотрудник тогда
    //вывод области
    ОбластьДетЗаписей.Параметры.наименование = Выборка.Наименование;
    ТабДок.Вывести(ОбластьДетЗаписей);
    ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьДетЗаписей);     
          КонецЕсли;   
    КонецЦикла;
    
    КонецПроцедуры
    
    По нажатию кнопки ОК ничего не происходит. Как я понял команда "ТабДок.Вывести(ОбластьДетЗаписей);" не работает?
    Добавил на форму поле табличного документа, и вывел данные в него, но туда выводится только первая запись из справочника по этому сотруднику.
  4. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Код:
    Пока Выборка.Следующий() = 1 Цикл 
    Для чего в коде ?
  5. TopicStarter Overlay
    wwolk
    Offline

    wwolk

    Регистрация:
    28 янв 2015
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Как я понимаю это перебор элементов справочника - Техника.
  6. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    В отладчике смотрите, это ваш лучший друг.
  7. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    лучше книги почитать... Посмотрите ВПФ для БП-2.0, не хочется копировать текст, думаю суть поймете

    Вложения:

  8. TopicStarter Overlay
    wwolk
    Offline

    wwolk

    Регистрация:
    28 янв 2015
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    1111.JPG

    Оказывается я неправильно выделил области.
    Огромное спасибо rshakiro, код работает, но только с выводом на компонент "Поле Табличного документа".
    Единственное не могу понять, что делает команда "ТабДок.Вывести(ОбластьДетЗаписей);", может подскажете?
  9. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Выводит область макета в табличный документ.
  10. TopicStarter Overlay
    wwolk
    Offline

    wwolk

    Регистрация:
    28 янв 2015
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Да, я уже нашёл команду, которая всё таки эту таблицу отображает.
    Код:
    ТабДок.Показать();
    Вот чего не хватало.

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