8.х Цикл для встроенной таблицы

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

  1. TopicStarter Overlay
    auricomwxl
    Offline

    auricomwxl

    Регистрация:
    4 янв 2010
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Привет.

    Для каждого элемента есть вложенная таблица. Например Петров содержит реквезиты(влож. табл.) Организация,
    НачалоРаботы, ..., Должность. Нужно создать цикл, где Сотрудник - Должность.

    Код:
    Процедура Кнопка2Нажатие(Элемент)
    СпрВыборка = Справочники.Сотрудники.Выбрать(); 
    Пока СпрВыборка.Следующий() Цикл 
    Сообщить(СпрВыборка.Код + " " + СпрВыборка.Наименование);  
    Для Каждого стр Из СпрВыборка.Должность Цикл  
    Сообщить(" " + стр.Должность); 
    КонецЦикла;  
    КонецЦикла;
    КонецПроцедуры
    
    Этот вариант не работает, так как использ. вложенная таблица, а не подчиненный элемент.
  2. Siddy
    Offline

    Siddy Опытный в 1С

    Регистрация:
    18 мар 2009
    Сообщения:
    311
    Симпатии:
    0
    Баллы:
    26
    эмм..., я правильно понял, что нужно вывести информацию о всех сотрудниках в таком формате: "<Код> <ФИО> <Должность>"?
  3. Gfdtk
    Offline

    Gfdtk Опытный в 1С

    Регистрация:
    28 апр 2008
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    что вы имеете ввиду под вложенной таблицой?
    если подчиненный справочник? тогда нужно делать отбор по этому справочнику с использование владельца - метод справочника
    Код:
    Выбрать(<Родитель>, <Владелец>, <Отбор>, <Порядок>)
    
  4. redwonder
    Offline

    redwonder

    Регистрация:
    25 фев 2010
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Проверил код, работает нормально (v8.1), если типы выводимой информации соответственные. Т.е. если, например, должность это СправочникСсылка, то тебе надо писать Должность.Наименование. Ну и тому подобное.
  5. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Вложенные таблицы существуют только на уровне языка запросов, если изобрели за сегодняшний вечер что-то новое, значит я пока ничего не знаю. Вообще, на сколько я знаю, вложенные таблицы применяются на уровне базы данных, это сложный тип данных ссылающийся на таблицы базы данных, что Вы имеете ввиду ни совсем понятно.

  6. TopicStarter Overlay
    auricomwxl
    Offline

    auricomwxl

    Регистрация:
    4 янв 2010
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Красным обведена вложенная таблица(поправте если ошибаюсь). И код при такой структуре не работает((
    Извиняюсь, только что посмотрел, не вложенная таблица, а табличная часть(логически она вложена :unsure: )...
    На рисунке все видно. Код должен выводить имя сотрудника и должность, вот..

    Посмотреть вложение 3438

    Вложения:

    • 01.gif
      01.gif
      Размер файла:
      20,1 КБ
      Просмотров:
      35
  7. Siddy
    Offline

    Siddy Опытный в 1С

    Регистрация:
    18 мар 2009
    Сообщения:
    311
    Симпатии:
    0
    Баллы:
    26
    табличная часть, а не вложенная таблица. а с кодом, вроде все ок. что не работает?
  8. TopicStarter Overlay
    auricomwxl
    Offline

    auricomwxl

    Регистрация:
    4 янв 2010
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    {Обработка.Справочник.Форма.Форма(16)}: Поле объекта не обнаружено (Должность)
    Для Каждого стр Из СпрВыборка.Должность Цикл
  9. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Давайте всё-таки начинать работать с 1с v8, а не v7...

    Код:
    Функция ПолучитьРезультатЗапроса_Bonifacy()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    СотрудникиТрудоваяДеятельность.Ссылка КАК Сотрудник,
    |    СотрудникиТрудоваяДеятельность.Организация КАК Организация,
    |    СотрудникиТрудоваяДеятельность.НачалоРаботы КАК НачалоРаботы,
    |    СотрудникиТрудоваяДеятельность.ОкончаниеРаботы КАК ОкончаниеРаботы,
    |    СотрудникиТрудоваяДеятельность.Должность КАК Должность
    |ИЗ
    |    Справочник.Сотрудники.ТрудоваяДеятельность КАК СотрудникиТрудоваяДеятельность
    |ГДЕ
    |    СотрудникиТрудоваяДеятельность.Ссылка В(&СписокСотрудников)";
    
    //Параметры запроса
    Запрос.УстановитьПараметр("СписокСотрудников",);// Справочник ссылка: Сотрудники
    ДанныеСотрудников = Запрос.Выполнить().Выгрузить();
    
    Для каждого ДанныеСотрудника из ДанныеСотрудников Цикл
    // Тут доступы поля Сотрудник, Организация, НачалоРаботы, ОкончаниеРаботы, Должность, т.е. вот так получим должность
    Сообщить(ДанныеСотрудника.Наименование);
    Сообщить(ДанныеСотрудника.Должность.Наименование);    
    Цикл;
    
    КонецФункции //ПолучитьРезультатЗапроса_Bonifacy
    
    
    
    Удачи!
  10. PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    Добрый день, помогите с проблемой, в типовой УТ 10.3 есть док "Инвентаризация товаров на складе", проблема в том что в таб части дока строки отсортированы по номенклатуре, при печать ИНВ19(сличительной ведомости) в табличном документе весь товар не попарядку, то есть не отсортирован. Смотрел запрос из которого попадают данные в ТабДок не помогло
    Код:
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("Курс",            Параметры.Курс);
    Запрос.УстановитьПараметр("Кратность",       Параметры.Кратность);
    Запрос.УстановитьПараметр("ВидСкладаНТТ",    Перечисления.ВидыСкладов.НТТ);
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |	Номер  КАК НомерДокумента,
    |	Дата   КАК ДатаДокумента,
    |	Дата   КАК ДатаНачалаИнвентаризации,
    |	Организация КАК Руководители,
    |	Организация,
    |	Склад.Представление КАК ПредставлениеСклада,
    |	Товары.(
    |		НомерСтроки КАК Номер,
    |		Номенклатура,
    |		Номенклатура.НаименованиеПолное КАК ТоварНаименование,
    |		Номенклатура." + ТоварКод + "   КАК ТоварКод,
    |		ЕдиницаИзмерения.Представление  КАК ЕдиницаИзмеренияНаименование,
    |		ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК ЕдиницаИзмеренияКодПоОКЕИ,
    |		Количество                     КАК ФактКоличество,
    |		КоличествоУчет                 КАК БухКоличество,
    |		ВЫБОР
    |			КОГДА Склад.ВидСклада = &ВидСкладаНТТ ТОГДА ЦенаВРознице
    |			ИНАЧЕ Цена * &Курс / &Кратность
    |		КОНЕЦ КАК Цена,
    |		ВЫБОР
    |			КОГДА Склад.ВидСклада = &ВидСкладаНТТ ТОГДА Количество * ЦенаВРознице
    |			ИНАЧЕ Сумма * &Курс / &Кратность
    |		КОНЕЦ КАК ФактСумма,
    |		ВЫБОР
    |			КОГДА Склад.ВидСклада = &ВидСкладаНТТ ТОГДА КоличествоУчет *ЦенаВРознице
    |			ИНАЧЕ СуммаУчет * &Курс / &Кратность
    |		КОНЕЦ КАК БухСумма,
    |		ХарактеристикаНоменклатуры     КАК Характеристика,
    |		СерияНоменклатуры КАК Серия
    |	)
    |ИЗ
    |	Документ.ИнвентаризацияТоваровНаСкладе КАК ИнвентаризацияТоваровНаСкладе
    |
    |ГДЕ
    |	ИнвентаризацияТоваровНаСкладе.Ссылка = &ТекущийДокумент";
    
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
    
    как можно вложенную таблицу отсортировать по возрастанию "Товары"?
  11. 1cUserAndrew
    Offline

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

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    В самый конец запроса надо добавить:

    УПОРЯДОЧИТЬ ПО
    Товары.НомерСтроки


    В смысле в конец текста запроса

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