|
Запрос | ☑ | ||
---|---|---|---|---|
0
d3N4eGG
01.03.12
✎
13:13
|
Запрос "достает" Номер Договора из Справочника ДоговораКонтрагентор.
Но достает самый первый созданный договор, а мне нужно достать самый последний (по дате). Как это сделать? Функция ВернутьНомерПоследнегоДоговора(Ссылка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка, | ДоговорыКонтрагентов.Владелец, | ДоговорыКонтрагентов.НомерДоговора КАК НомерДоговора, | ДоговорыКонтрагентов.ДатаДоговора КАК ДатаДоговора |ИЗ | Справочник.Контрагенты КАК Контрагенты | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ПО Контрагенты.ДоговорПоУмолчанию = ДоговорыКонтрагентов.Ссылка |ГДЕ | ДоговорыКонтрагентов.Владелец = &Ссылка | |УПОРЯДОЧИТЬ ПО | ДатаДоговора"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Возврат ВыборкаДетальныеЗаписи.НомерДоговора; КонецЦикла; КонецФункции |
|||
1
Wobland
01.03.12
✎
13:13
|
выбрать первый один, упорядоченный по дате убыв
|
|||
2
Wobland
01.03.12
✎
13:18
|
о боже, открыл запрос, и сразу вопрос не понял
|
|||
3
d3N4eGG
01.03.12
✎
13:19
|
:D но все же получилось, спасибо
|
|||
4
Assena
01.03.12
✎
13:20
|
а цикл зачем? если тока один нужен
|
|||
5
nuctoh
01.03.12
✎
13:21
|
Вообще, приведенный запрос попахивает кривизной и избыточностью:
1. Контрагенты.Ссылка и ДоговорыКонтрагентов.Владелец - одно и то же лицо 2. Зачем вообще соединять слева контрагента с договором? 3. Если уж соединение слева - необходимость, продиктованная выбором контрагента в любом случае, а договора - при его наличии, то и условие должно ставиться именно на контрагента |
|||
6
НЕА123
01.03.12
✎
13:21
|
(2)
че-то я поплыл... вроде в (0) возврат ссылка.ДоговорПоУмолчанию.НомерДоговора; достаточно? |
|||
7
d3N4eGG
01.03.12
✎
13:22
|
ладн, сейчас, будем исправлять, спасибо.
|
|||
8
Wobland
01.03.12
✎
13:23
|
(6) имхается мне, что ему достаточно просто читать поле ДоговорПоУмолчанию. без всяких функций
|
|||
9
d3N4eGG
01.03.12
✎
13:26
|
Я еще не до конца разобрался с запросами, поэтому так вышло.
В общем, надо из справочника ДоговорыКонтрагентов выбрать номер последнего договора этого контрагента. как правильно запрос будет выглядить? |
|||
10
nuctoh
01.03.12
✎
13:27
|
Этот код решает?
Функция ВернутьНомерПоследнегоДоговора(Ссылка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ДоговорыКонтрагентов.НомерДоговора |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец = &Владелец | |УПОРЯДОЧИТЬ ПО | ДоговорыКонтрагентов.ДатаДоговора УБЫВ"; Запрос.УстановитьПараметр("Владелец", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); Возврат ?(Выборка.Следующий(), Выборка.НомерДоговора, Неопределено); КонецФункции |
|||
11
Assena
01.03.12
✎
13:29
|
садись, Пять))
|
|||
12
d3N4eGG
01.03.12
✎
13:30
|
Спасибо =D
|
|||
13
Wobland
01.03.12
✎
13:33
|
(9) скажи мне, пожалуйста, номер тебе зачем? вот подозреваю отчего-то, что договор у тебя в голове представляется в виде номера, хотя правильней было бы воспринимать его как ссылку
|
|||
14
palpetrovich
01.03.12
✎
13:39
|
сорьки, офФ-топик: народ, а что такое |ВЫБРАТЬ ПЕРВЫЕ 1 1
в чем суть? |
|||
15
Wobland
01.03.12
✎
13:40
|
(14) возвращает только первую строку. с любовью, Капитан О
|
|||
16
palpetrovich
01.03.12
✎
13:41
|
(15) хм, таки не понял, а в чем отличие от |ВЫБРАТЬ ПЕРВЫЕ 1 ?
|
|||
17
Wobland
01.03.12
✎
13:41
|
palpetrovich, у тебя аккаунт спёрли или это весна влияет? ;)
|
|||
18
Wobland
01.03.12
✎
13:42
|
(16) первые 1<пробел>1 синтаксически неверно
|
|||
19
d3N4eGG
01.03.12
✎
13:44
|
(13) В данном случае, номер договора - это его наименование, которое в ручную вводится. Это не внутренний идентификатор или что-то такое. Мне именно название нужно было.
|
|||
20
НЕА123
01.03.12
✎
13:45
|
(18)
"ВЫБРАТЬ ПЕРВЫЕ 1 1 |КАК Поле1 ? |
|||
21
palpetrovich
01.03.12
✎
13:45
|
(18) БП для Ураины,
Функция ПравилаКонвертацииОбъектовДляПланаОбменаЗагружены(Знач ИмяПланаОбмена) Экспорт ТекстЗапроса = " |ВЫБРАТЬ ПЕРВЫЕ 1 1 |ИЗ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными |ГДЕ | ПравилаДляОбменаДанными.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов) | И ПравилаДляОбменаДанными.ПравилаЗагружены | И ПравилаДляОбменаДанными.ИмяПланаОбмена = &ИмяПланаОбмена |"; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ИмяПланаОбмена", ИмяПланаОбмена); Возврат Не Запрос.Выполнить().Пустой(); КонецФункции |
|||
22
palpetrovich
01.03.12
✎
13:46
|
(20) а, последняя "1" - это наименование поля, да?
|
|||
23
НЕА123
01.03.12
✎
13:48
|
(21)
есть хотя бы одна запись. |
|||
24
НЕА123
01.03.12
✎
13:48
|
(22)
значение поля. проверка, есть хотя бы одна запись. |
|||
25
Wobland
01.03.12
✎
13:50
|
(20) согласен
|
|||
26
palpetrovich
01.03.12
✎
13:56
|
(23)(24) все равно туплю, так что-ли?
|ВЫБРАТЬ ПЕРВЫЕ 1 |1 КАК КакХочуТакИНазову |
|||
27
Wobland
01.03.12
✎
14:00
|
(26) ну. будет тебе поле КакХочуТакИНазову, содержащее единицу. первые 1 в этом случае лишнее
|
|||
28
НЕА123
01.03.12
✎
14:01
|
(26)
ага. |
|||
29
НЕА123
01.03.12
✎
14:02
|
+(28)
проверил - поле1 получается. |
|||
30
palpetrovich
01.03.12
✎
14:04
|
спасибо
|
|||
31
Wobland
01.03.12
✎
14:05
|
(29) проверил, получается КакХочуТакИНазову
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |