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

В модуле объекта вытаскиваю реквизиты формы и регистра сведений

В модуле объекта вытаскиваю реквизиты формы и регистра сведений
Я
   kamila0713
 
11.08.19 - 23:18
Приведенный ниж код, разместил в модуле объекта Документа. А именно в обработке проведения. Вычисляю значение(Shift+F9) и Наименование и СостояниеТС значение: Ошибка чтения значения

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СостояниеТранспортногоСредства.Наименование КАК Наименование,
        |    СостояниеТранспортногоСредства.СостояниеТС КАК СостояниеТС
        |ИЗ
        |    РегистрСведений.СостояниеТранспортногоСредства КАК СостояниеТранспортногоСредства
        |ГДЕ
        |    СостояниеТранспортногоСредства.Наименование = &Наименование";
    
    Запрос.УстановитьПараметр("Наименование", Наименование);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДСостояниеТС = РезультатЗапроса.Выбрать();
 
 
   palsergeich
 
1 - 11.08.19 - 23:39
Как минимум надо дописать
ВыборкаДСостояниеТС.Следующий();
И после исполнения этой строчки - сомтри отладчик
   kamila0713
 
2 - 12.08.19 - 12:41
(1) Я вычисляю значение ВыборкаДСостояниеТС. И там ошибка. Не понял, с чем это было связано. Я создал новый документ, выполнил те же действия и все работает. Было бы здорово разобраться в чем дело
   catena
 
3 - 12.08.19 - 12:52
(2)В приведенном в (0) коде нет .Следующий(), без него такая ошибка очевидна.
   kamila0713
 
4 - 12.08.19 - 13:33
(1) и (3) Да, спасибо большое. Именно в этом ошибка была. (Я стажер только)
   Simod
 
5 - 12.08.19 - 13:55
(4) Если есть проблемы с запоминаем последовательности обработки результата запроса, то в при написании запроса в контекстном меню выбирай не "Конструктор запроса", а "Конструктор запроса с обработкой результата".
   kamila0713
 
6 - 12.08.19 - 15:47
(5) Да, спасибо, Simod
   kamila0713
 
7 - 12.08.19 - 16:08
Еще вопрос. А почему в модуле формы документа нельзя писать так:

//(1)&НаСервере

//(2)Функция ПолучитьЦенуНоменклатуры(Номенклатура)
//.............    

    //(3)Запрос.УстановитьПараметр("Контрагент", Элементы.Контрагент);

    //(4)Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

    //(5)Запрос.УстановитьПараметр("Период", Объект.Дата);


Почему в строчке (3) должно быть написано: ...Объект.Контрагент)?
Ведь в директве компиляции НаСервере можно обращаться и к контексту формы и к БД?
З.Ы. Контрагент у меня реквизит документа
   Гобсек
 
8 - 12.08.19 - 16:12
(7) Потому, что Элементы.Контрагент есть элемент формы. К форме на сервере обращаться нельзя (ее на сервере не видно).
   kamila0713
 
9 - 12.08.19 - 16:46
(8) Спасибо)
А почему при открытии формы элемента справочника вылезает ошибка:
&НаСервере
Процедура ПриОткрытииНаСервере()
    Объект.ДобавитьГСМ.Видимость = Ложь;
    Объект.ВидТС = Объект.Родитель;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПриОткрытииНаСервере();
КонецПроцедуры
   hhhh
 
10 - 12.08.19 - 16:51
(9) потому что Видимость наоборот, она у элемента формы. А вы у объекта делаете. И не надо херачить такое в ПриОткрытии, есть же процедура ПриСозданииНаСервере, там всё и делайте.
   kamila0713
 
11 - 12.08.19 - 17:21
(10) Спасибо большое. Еще бы знать почему...
   hhhh
 
12 - 12.08.19 - 17:45
(11) потому что элементы формы - это всякие квадраты, прямоугольники, рисунки и всякие там рюшечки на форме.

поэтому ваше Запрос.УстановитьПараметр("Контрагент", Элементы.Контрагент);  это бред, вы хотите в контрагент какую-то рюшечку поместить.

А вот Видимость - это как раз у элемента формы, что-то делаем видимым, что-то невидимым.
   kamila0713
 
13 - 12.08.19 - 18:24
(12) Да, hhhh это я понял)Я спрашивал именно про оптимизацию, про процедуру ПриСоздании...)))
   hhhh
 
14 - 12.08.19 - 19:33
(13) при открытии вообще лишняя. Вам же на сервере надо, а при открытии - на клиенте
   kamila0713
 
15 - 12.08.19 - 19:39
(14) Cпасибо, hhhh. Пока вопросов больше нет
   kamila0713
 
16 - 12.08.19 - 21:12
Помогите пожалуйста: При изменении реквизита Автомобиль выдает ошибку

Ошибка отображения типов:
Отсутствует отображение для типа 'ПолеФормы'

Код:
&НаСервереБезКонтекста
Функция АвтомобильПриИзмененииНаСервере(Наименование)
            
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ТранспортныеСредства.Наименование КАК Наименование,
        |    ТранспортныеСредства.ГосНомер КАК ГосНомер
        |ИЗ
        |    Справочник.ТранспортныеСредства КАК ТранспортныеСредства
        |ГДЕ
        |    ТранспортныеСредства.Наименование = &Наименование";
    
    Запрос.УстановитьПараметр("Наименование", Наименование);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Возврат ВыборкаДетальныеЗаписи.ГосНомер;
    КонецЦикла;
    
КонецФункции

&НаКлиенте
Процедура АвтомобильПриИзменении(Элемент)
    Элементы.ГосНомер = АвтомобильПриИзмененииНаСервере(Элементы.Автомобиль);
КонецПроцедуры
   hhhh
 
17 - 12.08.19 - 21:33
&НаСервереБезКонтекста
+ Code
Функция АвтомобильПриИзмененииНаСервере(Автомобиль)
            
     Возврат Автомобиль.ГосНомер;
    
КонецФункции

&НаКлиенте
Процедура АвтомобильПриИзменении(Элемент)
    Объект.ГосНомер = АвтомобильПриИзмененииНаСервере(Объект.Автомобиль);
КонецПроцедуры
   kamila0713
 
18 - 12.08.19 - 22:20
(17) С Объектами и Элементами разобрался
   kamila0713
 
19 - 12.08.19 - 22:39
Но все равно выдает в отладчике Ошибка чтения значения для ВыборкаДетальныеЗаписи, а ВыборкаДетальныеЗаписи.Следующий(), выдает Ложь

+Code:

&НаСервереБезКонтекста
Функция АвтомобильПриИзмененииНаСервере(Наименование)
            
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ТранспортныеСредства.ГосНомер КАК ГосНомер
        |ИЗ
        |    Справочник.ТранспортныеСредства КАК ТранспортныеСредства
        |ГДЕ
        |    ТранспортныеСредства.Наименование = &Наименование";
    
    Запрос.УстановитьПараметр("Наименование", Наименование);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Возврат ВыборкаДетальныеЗаписи.ГосНомер; 
    КонецЦикла;
        
КонецФункции

&НаКлиенте
Процедура АвтомобильПриИзменении(Элемент)
    Объект.ГосНомер = АвтомобильПриИзмененииНаСервере(Объект.Автомобиль);
КонецПроцедуры
   kamila0713
 
20 - 12.08.19 - 22:47
Сделал. Поменял Наименование на Ссылку. Получилось
   hhhh
 
21 - 12.08.19 - 22:49
(19) потому что Наименование это строка, а Объект.Автомобиль это ссылка на элемент справочника, пробуй

 |ГДЕ
        |    ТранспортныеСредства.Ссылка = &Наименование";

и вообще это дурость - работать с наименованиями. У тебя же ссылка есть.
   kamila0713
 
22 - 12.08.19 - 23:30
(21) Спасибо, hhhh


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