Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Один и тот же код работает в событии формы приоткрытии и не работает в событии ПриИзменени

Один и тот же код работает в событии формы приоткрытии и не работает в событии ПриИзменени
Я
   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] = "Дом";
    КонецЕсли;
    
    Возврат Массив;
    
    
КонецФункции
 
 
   catena
 
1 - 13.12.18 - 10:03
Не вижу кода, который отрабатывает при "когда в новом документе вводишь второе поле" и точного текста ошибки.
   ZDenis
 
2 - 13.12.18 - 10:07
(0) В новом документе еще нет ссылки, пока он не записан. поэтому у тебя запрос ничего не получает.
   Fleapse
 
3 - 13.12.18 - 10:30
{Документ.Сделка.Форма.ФормаДокумента.Форма(118)}: Преобразование значения к типу Число не может быть выполнено
        СтоимостьУслугПокупателя = РезультатЗапроса[1]/100*3;




это код ошибки
   Fleapse
 
4 - 13.12.18 - 10:32
(2) спасибо отредактирую запрос
   Eiffil123
 
5 - 13.12.18 - 16:07
(3) тут нужно либо убирать запрос, либо делать запись перед его выполнением. Иначе данные будут некорректные.

Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует