|
УТ 10.3: Проблема с запросом | ☑ | ||
---|---|---|---|---|
0
_stay true_
19.07.13
✎
11:42
|
Здравствуйте. Суть проблемы в следующем: добавили в справочник "договоры контрагентов" реквизит "СумМакс"(максимальная сумма, тип число, длина 15 точность 2 неотрицательное). Теперь нужно в обработчике события "ПередЗаписью" документа "РеализацияТоваровУслуг" сравнивать значение реквизита СумМакс со значением реквизита "СуммаДокумента".
Дописал процедуру, вылетает ошибка Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(3224)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата) Если ВыборкаДетальныеЗаписи.СумМакс < ВыборкаДетальныеЗаписи.СуммаДокумента Тогда Типы у обоих число, но когда в конфигураторе ставишь точку останова и вычисляешь выражение СумМакс, выдает Тип "Неопределно" или переменная неопределена. Помогите пожалуйста молодому начинающему чайнику разобраться что к чему, с УТ 10.3 первый раз работаю. Код процедуры: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка, | РеализацияТоваровУслуг.СуммаДокумента, | РеализацияТоваровУслуг.ДоговорКонтрагента.Ссылка КАК Ссылка2, | РеализацияТоваровУслуг.ДоговорКонтрагента.СумМакс КАК СумМакс |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ПО РеализацияТоваровУслуг.ДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка |ГДЕ | РеализацияТоваровУслуг.Ссылка = &Ссылка | И РеализацияТоваровУслуг.ДоговорКонтрагента.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.СумМакс < ВыборкаДетальныеЗаписи.СуммаДокумента Тогда Отказ = Истина; Сообщить("Превышена максимально возможная сумма по договору"); КонецЕсли; |
|||
1
hhhh
19.07.13
✎
11:47
|
(0) почитай про Следующий(). И больше не пугай нас.
|
|||
2
_stay true_
19.07.13
✎
11:55
|
(1) Прочитал. Сделал так:
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.СумМакс < ВыборкаДетальныеЗаписи.СуммаДокумента Тогда Отказ = Истина; Сообщить("Превышена максимально возможная сумма по договору"); КонецЕсли; КонецЦикла; Ставлю на строке с ЕСЛИ точку останова - вообще туда не попадает... |
|||
3
НаборДанных
19.07.13
✎
11:57
|
(2)Может меньше времени уйдет, чтобы посмотреть значения СумМакс и СуммаДокумента в отладчике, чем написать сюда?
|
|||
4
НаборДанных
19.07.13
✎
11:58
|
И накуа там левое соединение, если ты суммы через точки все выбрал из документа?
|
|||
5
Галахад
гуру
19.07.13
✎
12:00
|
Я чо-та не понял. Ссылка это документ или справочник?
|
|||
6
_stay true_
19.07.13
✎
12:01
|
(4) Левое соединение я забыл убрать. Теперь убрал:)
В отладчике посмотрел: по идее, должно быть сумма документа 5900, максимальная по договору 5000. (5) документ |
|||
7
НаборДанных
19.07.13
✎
12:02
|
(6)Смотри (5), думай на | РеализацияТоваровУслуг.Ссылка = &Ссылка
| И РеализацияТоваровУслуг.ДоговорКонтрагента.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); |
|||
8
НаборДанных
19.07.13
✎
12:03
|
(6)А не по идее? В табло религия посмотреть не позволяет?
|
|||
9
_stay true_
19.07.13
✎
12:04
|
(8) Да посмотрел я: СумМакс - Переменная не определена. Сумму документа корректно вытягивает.
|
|||
10
НаборДанных
19.07.13
✎
12:10
|
(9)Надеюсь, ты скопировал в табло так ВыборкаДетальныеЗаписи.СумМакс
И ВыборкаДетальныеЗаписи.СуммаДокумента И точка останова у тебя ПОСЛЕ ВыборкаДетальныеЗаписи.Следующий()??? |
|||
11
_stay true_
19.07.13
✎
12:15
|
(10) Именно так я и сделал. Точка останова после стоит. Только вот туда не попадает никак. В цикл попадает, а в условие - никак
|
|||
12
_stay true_
19.07.13
✎
12:16
|
ВыборкаДетальныеЗаписи.Следующий(): поле объекта не обнаружено
|
|||
13
НаборДанных
19.07.13
✎
12:16
|
Если СуммаДокумента > ДоговорКонтрагента.СумМакс Тогда
... КонецЕсли; Без всяких запросов. |
|||
14
НаборДанных
19.07.13
✎
12:17
|
(12)Так напиши, и прекрати мучить запросы.
|
|||
15
Csar
19.07.13
✎
12:23
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка, | РеализацияТоваровУслуг.СуммаДокумента, | РеализацияТоваровУслуг.ДоговорКонтрагента.Ссылка КАК Ссылка2, | РеализацияТоваровУслуг.ДоговорКонтрагента.СумМакс КАК СумМакс |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.Следующий() Тогда Если ВыборкаДетальныеЗаписи.СумМакс < ВыборкаДетальныеЗаписи.СуммаДокумента Тогда Отказ = Истина; Сообщить("Превышена максимально возможная сумма по договору"); КонецЕсли; КонецЕсли; |
|||
16
Csar
19.07.13
✎
12:24
|
+(15), где Ссылка - это ссылка на документ Реализации
|
|||
17
_stay true_
19.07.13
✎
12:26
|
Csar и НаборДанных: даже не знаю, как вас благодарить. Заработало как надо. Спасибо вам большое. И всех вам благ.
|
|||
18
_stay true_
19.07.13
✎
12:28
|
Жаль, что вы от меня далеко - я бы вам вискарика проставил)))
|
|||
19
Csar
19.07.13
✎
12:33
|
(18) =)
|
|||
20
НаборДанных
19.07.13
✎
12:35
|
(18)Город какой? Выезжаю.
|
|||
21
_stay true_
19.07.13
✎
12:53
|
(20)Город-герой колыбель русского флота Воронеж
|
|||
22
Ненавижу 1С
гуру
19.07.13
✎
12:57
|
(21) только в России колыбель флота находится за сотни километров от моря
|
|||
23
_stay true_
19.07.13
✎
13:08
|
(22) до Джубги примерно 800км
|
|||
24
hhhh
19.07.13
✎
13:51
|
(22) не, в чехии не только колыбель, но и сам флот.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |