![]() |
|
Один и тот же код работает в событии формы приоткрытии и не работает в событии ПриИзменени | ☑ | ||
---|---|---|---|---|
0
Fleapse
13.12.18
✎
09:53
|
написал код который при наличии 2х ссылок обращается к базе и берет от туда 3 числа и 1 значение перечисления.
в событие приОткрытии он работает, но когда в новом документе вводишь второе поле он выдаёт ошибку, что значение из базы невозможно преобразовать в число. вот код: Процедура ПриОткрытии(Отказ) Если ЗначениеЗаполнено(Объект.Потребность) и ЗначениеЗаполнено(Объект.Предложение) тогда //Сообщить("*"); РезультатЗапроса = ЗапросНаСервере(Объект.Ссылка); // 1 поле СтоимостьУслугПокупателя = РезультатЗапроса[1]/100*3; Объект.СтоимостьУслугПокупателя = СтоимостьУслугПокупателя; //2 поле Если РезультатЗапроса[3] = "Квартира" тогда СтоимостьУслугПродавца = 36000 + РезультатЗапроса[1]/100; ИначеЕсли РезультатЗапроса[3] = "Земля" тогда СтоимостьУслугПродавца = 30000 + РезультатЗапроса[1]/100*2; ИначеЕсли РезультатЗапроса[3] = "Дом" тогда СтоимостьУслугПродавца = 30000 + РезультатЗапроса[1]/100; КонецЕсли; Объект.СтоимостьУслугПродавца = СтоимостьУслугПродавца; //3 поле ОтчисленияРиэлторуПокупателя = СтоимостьУслугПокупателя/100*РезультатЗапроса[0]; Объект.ОтчисленияРиэлторуПокупателя = ОтчисленияРиэлторуПокупателя; //4 поле ОтчисленияРиэлторуПродавца = СтоимостьУслугПродавца/100*РезультатЗапроса[2]; Объект.ОтчисленияРиэлторуПродавца = ОтчисленияРиэлторуПродавца; //5 поле ОтчисленияКомпании = СтоимостьУслугПокупателя + СтоимостьУслугПродавца -(ОтчисленияРиэлторуПокупателя + ОтчисленияРиэлторуПродавца); Объект.ОтчисленияКомпании = ОтчисленияКомпании; Иначе Сообщить("ААААААА"); КонецЕсли; КонецПроцедуры &НаСервере Функция ЗапросНаСервере(Ссылка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Сделка.Потребность.Риэлтор.ДоляОтКомиссии КАК ДоляОтКомиссииПокупатель, | Сделка.Предложение.Цена КАК Цена, | Сделка.Предложение.Риэлтор.ДоляОтКомиссии КАК ДоляОтКомиссииПродавец, | Сделка.Предложение.ОбъектНедвижимости.ТипНедвижимости КАК ТипНедвижимости |ИЗ | Документ.Сделка КАК Сделка |ГДЕ | Сделка.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Цена = ВыборкаДетальныеЗаписи.Цена; ДоляОтКомиссииПокупатель = ВыборкаДетальныеЗаписи.ДоляОтКомиссииПокупатель; ДоляОтКомиссииПродавец = ВыборкаДетальныеЗаписи.ДоляОтКомиссииПродавец; ТипНедвижимости = ВыборкаДетальныеЗаписи.ТипНедвижимости; КонецЦикла; Массив = Новый Массив(4); Массив[0] = ДоляОтКомиссииПокупатель; Массив[1] = Цена; Массив[2] = ДоляОтКомиссииПродавец; Если ТипНедвижимости = перечисления.ТипНедвижимости.Квартира тогда Массив[3] = "Квартира"; ИначеЕсли ТипНедвижимости = перечисления.ТипНедвижимости.Земля тогда Массив[3] = "Земля"; ИначеЕсли ТипНедвижимости = перечисления.ТипНедвижимости.Дом тогда Массив[3] = "Дом"; КонецЕсли; Возврат Массив; КонецФункции |
|||
1
catena
13.12.18
✎
10:03
|
Не вижу кода, который отрабатывает при "когда в новом документе вводишь второе поле" и точного текста ошибки.
|
|||
2
ZDenis
13.12.18
✎
10:07
|
(0) В новом документе еще нет ссылки, пока он не записан. поэтому у тебя запрос ничего не получает.
|
|||
3
Fleapse
13.12.18
✎
10:30
|
{Документ.Сделка.Форма.ФормаДокумента.Форма(118)}: Преобразование значения к типу Число не может быть выполнено
СтоимостьУслугПокупателя = РезультатЗапроса[1]/100*3; это код ошибки |
|||
4
Fleapse
13.12.18
✎
10:32
|
(2) спасибо отредактирую запрос
|
|||
5
Eiffil123
13.12.18
✎
16:07
|
(3) тут нужно либо убирать запрос, либо делать запись перед его выполнением. Иначе данные будут некорректные.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |