|
Получить значение из табличной части | ☑ | ||
---|---|---|---|---|
0
Карась
13.08.12
✎
09:49
|
Добрый день!У меня появилась задача для реквизита формы справочника, получить значение должности из табличной части другого справочника. Я пытаюсь вытащить из табличной части справочника значение поля роль контактного лица. Текст запроса пока выглядит так
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентов.а_ВЛице, | КонтактныеЛицаПартнеров.РолиКонтактногоЛица.( | РольКонтактногоЛица | ) |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ПОЛНОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров | ПО ДоговорыКонтрагентов.а_ВЛице = КонтактныеЛицаПартнеров.Ссылка"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи КонецЦикла; По сути я пытаюсь при выборе контактного лица достать его должность и передать ее в реквизит формы,подскажите пожалуйста как мне обработать результат запроса, и правильно ли я его описала? |
|||
1
Карась
13.08.12
✎
09:53
|
Как я понимаю в конструкторе запросов во вкладке условия надо сделать запись, а вот какую, я пока не могу разобраться
|
|||
2
Карась
13.08.12
✎
10:05
|
Или есть второй вариант сделать пока так
Спр=Справочники.КонтактныеЛицаПартнеров.Выбрать(Объект.Лицо.РолиКонтактногоЛица); ТП=Спр.РолиКонтактногоЛица.Выгрузить(); спис=Новый СписокЗначений; Для Каждого ТП Из Спр.РолиКонтактногоЛица Цикл спис.Добавить(ТП.РольКонтактногоЛица); КонецЦикла; |
|||
3
Карась
13.08.12
✎
10:05
|
Но он пока выдает ошибку
|
|||
4
andrewks
13.08.12
✎
10:10
|
(0) используй соединение для выборки ТЧ (по Спр.Ссылка=ТЧ.Ссылка)
используй в выборке сразу нужное тебе поле - должность, чтобы не тянуть потом объект снова из БД. используй параметр запроса, чтобы получить сразу должность на того человека, который тебе нужен |
|||
5
Карась
13.08.12
✎
10:36
|
А если я все же решила иным способом, почему он у меня ругается на строку
ТП=Спр.РолиКонтактногоЛица.Выгрузить(); пишет {Форма.Форма.Форма(19)}: Значение не является значением объектного типа (Выгрузить) ТП=Спр.РолиКонтактногоЛица.Выгрузить(); |
|||
6
andrewks
13.08.12
✎
10:40
|
слово "решила" подразумевает собой некое законченное действие. а у тебя ошибки
|
|||
7
Карась
13.08.12
✎
10:41
|
(6)Перефразирую, если я хочу попробовать
|
|||
8
Карась
13.08.12
✎
10:42
|
Просто тем способом, который предложили мне Вы, я похоже совсем не справлюсь, с запросами совсем не лажу((
|
|||
9
Карась
13.08.12
✎
10:44
|
Я еще совсем в 1 с новичок, месяц всего лишь
|
|||
10
Карась
13.08.12
✎
10:58
|
Я пытаюсь сделать как здесь
http://www.1c-pro.ru/topic13272.html |
|||
11
andrewks
13.08.12
✎
11:19
|
(8) лучше сразу учиться по-нормальному, а то потом переделывать и переделываться будет очень сложно.
итак, для начала: возьми в руки консоль запросов, и отладь там запрос на тестовом значении параметра, убедись, что он выдаст тебе то, что нужно. и только потом можно приступать к кодингу |
|||
12
Карась
13.08.12
✎
11:37
|
(11)Сделала
Вот так выполняет как надо, находит контактному лицу должность ВЫБРАТЬ ДоговорыКонтрагентов.Контрагент, КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка, КонтактныеЛицаПартнеровРолиКонтактногоЛица.НомерСтроки, КонтактныеЛицаПартнеровРолиКонтактногоЛица.РольКонтактногоЛица, КонтактныеЛицаПартнеров.ФизЛицо ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров ПО ДоговорыКонтрагентов.а_ВЛице = КонтактныеЛицаПартнеров.Ссылка, Справочник.КонтактныеЛицаПартнеров.РолиКонтактногоЛица КАК КонтактныеЛицаПартнеровРолиКонтактногоЛица |
|||
13
Карась
13.08.12
✎
11:42
|
Как мне теперь сделать обход результата?
|
|||
14
Карась
13.08.12
✎
11:48
|
Пока он тянет всех контактных лиц из запроса, где мне лучше установить отбор по конктретному контактному лицу, там же?
|
|||
15
Rovan
гуру
13.08.12
✎
11:49
|
(0) "для реквизита формы справочника, получить значение должности"
т.е. сам контрагент (ссылка) известен заранее ? |
|||
16
Карась
13.08.12
✎
11:53
|
Ну да, я это значение записываю в реквизит а_ВЛице
|
|||
17
Карась
13.08.12
✎
11:54
|
Я пытаюсь во вкладке условия наложить на него условие, чтобы по нему отбиралось, но пока не выходит
|
|||
18
Rovan
гуру
13.08.12
✎
11:56
|
(16) ну пиши вручную в запросе
ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ... ГДЕ ДоговорыКонтрагентов.Контрагент = &Контрагент |
|||
19
Карась
13.08.12
✎
12:00
|
задала, так ничего не выдает
|
|||
20
Карась
13.08.12
✎
12:15
|
а все вышло, теперь буду адаптировать под свой случай)
|
|||
21
Карась
13.08.12
✎
13:11
|
А вот такой вопрос, если я в реквизите Лицо указываю собственно ФИО лица и по нему у меня должна проставляться должность, я описала запрос
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентов.Контрагент, | КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка, | КонтактныеЛицаПартнеровРолиКонтактногоЛица.РольКонтактногоЛица |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров | ПО ДоговорыКонтрагентов.а_ВЛице = КонтактныеЛицаПартнеров.Ссылка, | Справочник.КонтактныеЛицаПартнеров.РолиКонтактногоЛица КАК КонтактныеЛицаПартнеровРолиКонтактногоЛица |ГДЕ | ДоговорыКонтрагентов.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ДоговорыКонтрагентов.Контрагент, | КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка, | КонтактныеЛицаПартнеровРолиКонтактногоЛица.РольКонтактногоЛица"; Запрос.УстановитьПараметр("Ссылка", Объект.Лицо); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецФункции Но пока естественно при вводе лица у меня ничего не выходит |
|||
22
rasswet
13.08.12
✎
13:17
|
наверное не фио, а ссылку?
|
|||
23
rasswet
13.08.12
✎
13:18
|
должность это роль контактного лица?
|
|||
24
Карась
13.08.12
✎
13:22
|
да
|
|||
25
Карась
13.08.12
✎
14:20
|
Вот так пока сделала, но так он мне находит всех контактных лиц и все должности и выдает последнюю найденную должность, а как мне сделать, чтобы он отобрал именно по тому лицу которое я задала
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка, | КонтактныеЛицаПартнеровРолиКонтактногоЛица.РольКонтактногоЛица КАК Должность |ИЗ | Справочник.КонтактныеЛицаПартнеров.РолиКонтактногоЛица КАК КонтактныеЛицаПартнеровРолиКонтактногоЛица, | Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров |ГДЕ | КонтактныеЛицаПартнеров.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Объект.Лицо); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Должность=ВыборкаДетальныеЗаписи.Должность; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА Возврат Должность; |
|||
26
Карась
13.08.12
✎
14:33
|
Может мне надо именно после запроса устанавливать условия?
|
|||
27
Карась
13.08.12
✎
15:30
|
Заработало, вот так
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактныеЛицаПартнеровРолиКонтактногоЛица.РольКонтактногоЛица КАК Должность |ИЗ | Справочник.КонтактныеЛицаПартнеров.РолиКонтактногоЛица КАК КонтактныеЛицаПартнеровРолиКонтактногоЛица | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры | ПО КонтактныеЛицаПартнеров.Владелец = Партнеры.Ссылка | ПО КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка = КонтактныеЛицаПартнеров.Ссылка |ГДЕ | КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка = &КонтактноеЛицо"; Запрос.УстановитьПараметр("КонтактноеЛицо", Объект.Лицо); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Должность=ВыборкаДетальныеЗаписи.Должность; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА Возврат Должность; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |