|
Как достать данные из табЧасть Справочника с помощью запроса | ☑ | ||
---|---|---|---|---|
0
heyfec
13.12.14
✎
14:48
|
Как достать реквизит РеквизитОдин?Пишешь Выборка.ТабЧасть.РеквизитОдин пишет нет такого реквизита.
Функция ЗапросТабличнойЧастиКолонкаОдин() Экспорт КолонкаОдин = Новый Массив(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Сотрудники.ТабЧасть.( | Реквизит1 КАК РеквизитОдин | ), | Сотрудники.ФИО, | Улицы.ФИО КАК ФИО1, | Улицы.Улица |ИЗ | Справочник.Сотрудники КАК Сотрудники | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Улицы КАК Улицы | ПО Сотрудники.ФИО = Улицы.ФИО"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Выборка.Сбросить(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.ФИО + " " + Выборка.Улица); Колонки = Выборка.ТабЧасть; Для К = 0 по 1 Цикл Сообщить(Колонки); КонецЦикла; КонецЦикла; Возврат КолонкаОдин; КонецФункции |
|||
1
mrFreeman
13.12.14
✎
14:52
|
пятнично, но сегодня суббота )
|
|||
2
Sattelite
13.12.14
✎
15:04
|
(0)Попробуй добавь синоним к ТабЧасть
Запрос.Текст = "ВЫБРАТЬ | Сотрудники.ТабЧасть.( | Реквизит1 КАК РеквизитОдин | ) КАК ТабЧасть, |
|||
3
heyfec
13.12.14
✎
15:12
|
Отвечает вот что
{ОбщийМодуль.ЗагрузкаизЭксель.Модуль(107)}: Поле объекта не обнаружено (РеквизитОдин) Сообщить(Колонки.РеквизитОдин); |
|||
4
heyfec
13.12.14
✎
15:25
|
Если вот так то пишет
Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Выборка.Сбросить(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.ФИО + " " + Выборка.Улица); Для Каждого ТабЧасть из Выборка Цикл Сообщить(ТабЧасть.РеквизитОдин); КонецЦикла; КонецЦикла; Возврат КолонкаОдин; {ОбщийМодуль.ЗагрузкаизЭксель.Модуль(107)}: Итератор для значения не определен Для Каждого ТабЧасть из Выборка Цикл |
|||
5
heyfec
13.12.14
✎
15:25
|
{ОбщийМодуль.ЗагрузкаизЭксель.Модуль(107)}: Итератор для значения не определен
Для Каждого ТабЧасть из Выборка Цикл |
|||
6
heyfec
13.12.14
✎
15:56
|
Вот так он достает данные из табличной части без проблем. Но тут табЧасть находится на первом уровне.
Функция ЗапросТабличнойЧастиКолонкаОдин() Экспорт КолонкаОдин = Новый Массив(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", Справочники.Сотрудники); Запрос.Текст = "ВЫБРАТЬ | СотрудникиТабЧасть.Реквизит1 как РеквизитОдин |ИЗ | Справочник.Сотрудники.ТабЧасть КАК СотрудникиТабЧасть"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Выборка.Сбросить(); Пока Выборка.Следующий() Цикл Колонка = Выборка.РеквизитОдин; Сообщить(Колонка); КонецЦикла; Возврат КолонкаОдин; КонецФункции |
|||
7
Sattelite
13.12.14
✎
16:27
|
(6)В таб части есть реквизит - "Ссылка", Это ссылка на таблицу с реквизитами шапки...
|
|||
8
Кокорочка
13.12.14
✎
16:30
|
ТС, Вы в (6) обращаетесь к табличной части справочника, а в (0) к самому справочнику.Разницу чувствуете?
|
|||
9
heyfec
13.12.14
✎
17:00
|
(8) Разницу чувствую, но как из (6) получить данные из РеквизитаОдин не понимаю.
|
|||
10
heyfec
13.12.14
✎
17:07
|
Если так то тоже не работает
Функция ЗапросТабличнойЧастиКолонкаОдин() Экспорт КолонкаОдин = Новый Массив(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", Справочники.Сотрудники); Запрос.Текст = "ВЫБРАТЬ | СотрудникиТабЧасть.Реквизит1 как РеквизитОдин |ИЗ | Справочник.Сотрудники.ТабЧасть КАК СотрудникиТабЧасть"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Выборка.Сбросить(); Пока Выборка.Следующий() Цикл Колонка = Выборка.ТабЧасть.Колонки.Получить(0); Сообщить(Колонка.РеквизитОдин); КонецЦикла; Возврат КолонкаОдин; КонецФункции |
|||
11
heyfec
13.12.14
✎
17:09
|
Функция ЗапросТабличнойЧастиКолонкаОдин() Экспорт
КолонкаОдин = Новый Массив(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", Справочники.Сотрудники); Запрос.Текст = "ВЫБРАТЬ | СотрудникиТабЧасть.Реквизит1 как РеквизитОдин |ИЗ | Справочник.Сотрудники.ТабЧасть КАК СотрудникиТабЧасть"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Выборка.Сбросить(); Пока Выборка.Следующий() Цикл Колонка = Выборка.ТабЧасть.Колонки.Получить(0); Для к=0 по 1 цикл Сообщить(Колонка.РеквизитОдин); КонецЦикла КонецЦикла; Возврат КолонкаОдин; КонецФункции И так тоже не работает |
|||
12
s911Oleg
13.12.14
✎
17:16
|
и где происходит заполнение массива "КолонкаОдин"?
|
|||
13
heyfec
13.12.14
✎
17:19
|
(12) Подожди пока до этого не дошли пока дошли до оператора Сообщить(Колонка.РеквизитОдин);
|
|||
14
heyfec
13.12.14
✎
17:29
|
По идее должно быть так
ИмяПеременной = КолонкаРезультатаЗапроса.ИмяКолонки а для табличной части справочника ИмяПеременной = КолонкаРезультатаЗапроса.ТабЧасть.ИмяКолонки но так не работает не хватает кокого -то оператора. |
|||
15
heyfec
13.12.14
✎
17:40
|
(13) В данном случае Сообщить(Колонка) выводит не то что находится в колонке а пишет "Коллекция колонок результата запроса" а то что в этих колонках написано вообще не выводит, а Сообщить(Колонка.РеквизитОдин); пишет нет такого реквизита хотя он есть и если этот запрос засунуть в отчет он выводит то что нужно, то есть запрос сам правильный.
|
|||
16
Mankubus
13.12.14
✎
17:50
|
научитесь пользоваться отладчиком
|
|||
17
heyfec
13.12.14
✎
18:04
|
И так тоже не работает
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Сотрудники.ТабЧасть.( | Реквизит1 КАК РеквизитОдин | ), | Сотрудники.ФИО, | Улицы.ФИО КАК ФИО1, | Улицы.Улица |ИЗ | Справочник.Сотрудники КАК Сотрудники | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Улицы КАК Улицы | ПО Сотрудники.ФИО = Улицы.ФИО"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Выборка.Сбросить(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.ФИО + " " + Выборка.Улица); Колонки = Выборка.ТабЧасть.колонки; Для каждого Колонка Из Колонки Цикл ИмяПоля = Колонка.Имя; зн = Выборка[ИмяПоля]; Сообщить(зн); КонецЦикла; КонецЦикла; |
|||
18
ДенисЧ
13.12.14
✎
18:08
|
Учу пользоваться кнопкой F2. Дорого
|
|||
19
heyfec
13.12.14
✎
18:08
|
(16)Отладчиком я умею пользоваться
|
|||
20
notebug
13.12.14
✎
19:12
|
выборка.табчасть.выгрузить();
|
|||
21
notebug
13.12.14
✎
19:14
|
хотя бы в отладчике смотрели типы, с которыми работаете. это не так сложно
|
|||
22
KSN
13.12.14
✎
19:46
|
В отладчике и будет показывать таблицу значений, а на самом деле там выборка из запроса.
|
|||
23
heyfec
13.12.14
✎
22:14
|
Наконец-то заработало
КолонкаОдин = Новый Массив(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Сотрудники.ТабЧасть.( | Реквизит1 КАК РеквизитОдин | ), | Сотрудники.ФИО, | Улицы.ФИО КАК ФИО1, | Улицы.Улица |ИЗ | Справочник.Сотрудники КАК Сотрудники | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Улицы КАК Улицы | ПО Сотрудники.ФИО = Улицы.ФИО"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Выборка.Сбросить(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.ФИО + " " + Выборка.Улица); Колонки = Выборка.ТабЧасть.Выгрузить(); Для каждого Колонка Из Колонки Цикл ЗН = Колонка.РеквизитОдин; Сообщить("зн" + " " + ЗН); КонецЦикла; КонецЦикла; |
|||
24
heyfec
13.12.14
✎
22:19
|
Спасибки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |