|
Запрос в базу данных | ☑ | ||
---|---|---|---|---|
0
кабанчик
08.04.19
✎
21:34
|
Здравствуйте, объясните мне, правильно ли я делаю запрос?
&НаСервере Функция КонтактноеЛицоПриИзмененииНаСервере() //КонтрагентВладелец = Объект.КонтактноеЛицо.ПолучитьОбъект(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваров.Контрагент КАК Контрагент, | ПоступлениеТоваров.КонтактноеЛицо КАК КонтактноеЛицо |ИЗ | Документ.ПоступлениеТоваров КАК ПоступлениеТоваров |ГДЕ | ПоступлениеТоваров.Контрагент.Родитель = &КонтрагентВладелец"; Запрос.УстановитьПараметр("КонтрагентВладелец",Объект.КонтактноеЛицо); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Объект.Контрагент = ВыборкаДетальныеЗаписи.Контрагент; КонецФункции Есть поле КонтакноеЛицо, исходя из того, что там выберем в другое поле Контрагент присвоить название его. |
|||
1
runoff_runoff
08.04.19
✎
21:48
|
постановка задачи так себе..
|
|||
2
palsergeich
08.04.19
✎
21:52
|
СПОТЫКНЕТСЯ ТУТ Объект.Контрагент
|
|||
3
RomanYS
08.04.19
✎
21:53
|
(0) Не такого существует сценария для которого это код верен. А так да, сначала бы задачу описать, а не попытку написать решение
|
|||
4
Garykom
гуру
08.04.19
✎
21:57
|
(2) Ну забыл .Следующий() бывает.
(3) Да сценарий то понятен, вот решение подкачало не факт что в выборке только один контрагента. |
|||
5
Garykom
гуру
08.04.19
✎
21:58
|
(4)+ Хотя там и 0 контрагентов может быть
|
|||
6
piter3
08.04.19
✎
22:00
|
Да кто тебя знает,что хочешь получить
|
|||
7
RomanYS
08.04.19
✎
22:05
|
(4) >>Да сценарий то понятен
поведай >>не факт что в выборке в этой выборке не может быть ничего, контактное лицо не может быть родителем для контрагента. Только в ооочень извращенных конфигурациях |
|||
8
Garykom
гуру
08.04.19
✎
22:21
|
(7) Ну вдруг там контактные лица это те же контрагенты только иерархия элементов. Что извращение согласен.
|
|||
9
кабанчик
08.04.19
✎
22:40
|
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("КонтактЛицо",Объект.КонтактноеЛицо); Запрос.Текст = "ВЫБРАТЬ | КонтактныеЛица.Владелец КАК Владелец, | КонтактныеЛица.Наименование КАК Наименование, | КонтактныеЛица.Владелец.Наименование КАК ВладелецНаименование |ИЗ | Справочник.КонтактныеЛица КАК КонтактныеЛица |ГДЕ | КонтактныеЛица.Наименование = &КонтактЛицо"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); //Объект.Контрагент = ВыборкаДетальныеЗаписи.Владелец.Наименование; //Сообщить("" +Объект.КонтактноеЛицо); Сообщить("" +ВыборкаДетальныеЗаписи.Владелец); Сообщить("" +ВыборкаДетальныеЗаписи.Наименование); Сообщить("" +ВыборкаДетальныеЗаписи.ВладелецНаименование); Сообщить("" +РезультатЗапроса); Не знаю, как скрины кинуть сюда, было бы сразу понятно. В общем есть справочники Контрагенты и КонтактныеЛица. У КонтакногоЛица стоит владелец Контрагент. Данные все записаны и везде указано всё. А мне нужно сделать, чтобы когда я выбирал КонтактноеЛицо, то в другое поле автоматически записывался Контрагент. |
|||
10
Garykom
гуру
08.04.19
✎
22:48
|
Если Контрагенты владельцы Контактных Лиц то твоя задачка решается в одну строчку кода без всяких запросов.
Чтобы при выборе КонтактногоЛица в документе в реквизит заодно засунуть Контрагента. Объект.Контрагент = Объект.КонтактноеЛицо.Владелец; |
|||
11
кабанчик
08.04.19
✎
22:55
|
У меня стоит задача решить это через табличную форму. Этот способ я знаю.
|
|||
12
Garykom
гуру
08.04.19
✎
22:57
|
Мне кажется кому то пора пить таблетки...
|
|||
13
Fram
08.04.19
✎
23:02
|
(11) при изменении элемента контактного лица пишешь (10)
(12) не надо так нервничать. ТС ещё только учиться |
|||
14
Fram
08.04.19
✎
23:03
|
Пардон.. тся
|
|||
15
кабанчик
08.04.19
✎
23:14
|
Можете на примере в коде показать, как? Уже устал танцы с бубном проводить. Задачу поставил куратор в прохождении курсов.
&НаСервере Функция КонтактноеЛицоПриИзмененииНаСервере() Запрос = Новый Запрос; Запрос.УстановитьПараметр("КонтактЛицо",Объект.КонтактноеЛицо); Запрос.Текст = "ВЫБРАТЬ | КонтактныеЛица.Владелец КАК Владелец, | КонтактныеЛица.Наименование КАК Наименование, | КонтактныеЛица.Владелец.Наименование КАК ВладелецНаименование |ИЗ | Справочник.КонтактныеЛица КАК КонтактныеЛица |ГДЕ | КонтактныеЛица.Наименование = &КонтактЛицо"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); //Объект.Контрагент = ВыборкаДетальныеЗаписи.Владелец.Наименование; Сообщить("" +Объект.КонтактноеЛицо); Сообщить("" +ВыборкаДетальныеЗаписи.Владелец); Сообщить("" +ВыборкаДетальныеЗаписи.Наименование); Сообщить("" +ВыборкаДетальныеЗаписи.ВладелецНаименование); КонецФункции &НаКлиенте Процедура КонтактноеЛицоПриИзменении(Элемент) КонтактноеЛицоПриИзмененииНаСервере(); КонецПроцедуры |
|||
16
Garykom
гуру
08.04.19
✎
23:20
|
(13) мне надо, от нервов ))
|
|||
17
vicof
08.04.19
✎
23:36
|
|ГДЕ
| КонтактныеЛица.Ссылка = &КонтактЛицо"; Если ВыборкаДетальныеЗаписи.Следующий() Тогда Объект.Контрагент = ВыборкаДетальныеЗаписи.Владелец; КонецЕсли; |
|||
18
Garykom
гуру
08.04.19
✎
23:42
|
(17) Объясните до меня не доходит, зачем делать выборку из Справочник.КонтактныеЛица по условию КонтактныеЛица.Ссылка = &КонтактЛицо ?
|
|||
19
hhhh
08.04.19
✎
23:46
|
(18) когда пишем
Объект.Контрагент = Объект.КонтактноеЛицо.Владелец; в базу отправляется точно такой же запрос. Неявно. Так что тут без разницы. Если хочет, пусть пишет. |
|||
20
NUser
09.04.19
✎
07:43
|
(1)))
|
|||
21
кабанчик
09.04.19
✎
09:31
|
Подскажите почему мы указываем "Ссылка", а не "Наименование"? При сравнении в запросе.
|
|||
22
кабанчик
09.04.19
✎
09:32
|
(18) Спасибо большое. Объясни ещё, выше вопрос задал, чтобы понимал
|
|||
23
Fram
09.04.19
✎
22:13
|
(21) потому что Наименование не может однозначно идентифицировать объект данных. для этого придумали ссылку. она уникальна. ну, должна быть по крайней мере
|
|||
24
palsergeich
09.04.19
✎
22:47
|
(21) Потому что внезапно записей в таблице с одним наименованием может быть несколько, и это нормально.
Пример ФИО людей, совершенно нормально, что в РФ будет больше одного человека с ФИО Иванов Иван Иванович. По этому указатель на конкретную строчку в БД является именно ссылкой, которая по факту является Уникальным на уровне конкретной таблицы значением. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |