Имя: Пароль:
1C
1С v8
1С 8.3 Метод объекта не обнаружен: ПолучитьОбъект()
,
0 Darhon
 
27.12.13
15:17
Добрый день. В этом куске кода:


ТекстЗапроса = "UPDATE drv_op
    |SET drv_op.cod_op="+Число(СтрокаТЧ.Менеджер.ПолучитьОбъект().Код_Менеджера)+"
    |where drv_op.cod_drv ="+СтрЗаменить(Число(СтрокаТЧ.КодВодителя),Символы.НПП,"");
    НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
    НаборЗаписей.ActiveConnection = Соединение;
    Попытка
        Сообщить(СтрокаТЧ.Менеджер + Строка(СтрокаТЧ.Код_менеджера));
        //НаборЗаписей.Open(ТекстЗапроса);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;


Появляется ошибка:
Метод объекта не обнаружен (ПолучитьОбъект)
    ТекстЗапроса = "UPDATE drv_op

Код выполняется НаКлиенте. В чем может быть дело? СтрокаТЧ.Менеджер имеет тип ссылка. Заранее спасибо :)
1 Nexux
 
27.12.13
15:18
>>Код выполняется НаКлиенте
вангамод
2 wanderer_ица
 
27.12.13
15:19
На сервере, может, стоит попробовать?
3 Borteg
 
27.12.13
15:19
(0) объект на клиенте нельзя получить
4 Maxus43
 
27.12.13
15:19
7-ка чтоле?
5 GROOVY
 
27.12.13
15:20
Да и запрос на клиенте не взлетит.
6 Darhon
 
27.12.13
15:21
Чего это не взлетит :) Взлетал уже с 0 вместо подставляемых переменных :)
7 VitShvets
 
27.12.13
15:21
Имхо, при заполнении ТЧ, надо вытаскивать Код_Менеджера сразу в отдельную колонку и собирать условие как
|SET drv_op.cod_op="+Число(СтрокаТЧ.Код_Менеджера)+"
8 Necessitudo
 
27.12.13
15:22
Да и Сообщить() на клиенте нынче некошерно юзать.
9 Avganec
 
27.12.13
15:25
(0) ты сам ответил на свой вопрос тем, что выполняется на клиенте
10 Darhon
 
27.12.13
15:25
А как на сервере получать строку из ТЧ обработки :(
11 Darhon
 
27.12.13
15:25
(8) А почему это не кошерно ): Для отладки самое оно :)
12 GROOVY
 
27.12.13
15:26
(6) Если это толстый клиент, то да. А в тонком не взлетит.
13 Darhon
 
27.12.13
15:26
Да вытащен он у меня в отдельную колонку, но если меняешь менеджера, то визуально код в соседней колонке меняется, а в запрос попадает старое значение. поэтому и пошел таким путем.
14 GROOVY
 
27.12.13
15:27
(11) Есть объект "СообщениеПользователю", нужно использовать его.
15 Darhon
 
27.12.13
15:28
(14)
я в базе 1 пользователь пока :)
16 Sabbath
 
27.12.13
15:28
Мне вообще кажется вот это пождозрительным

Число(СтрокаТЧ.Менеджер.ПолучитьОбъект().Код_Менеджера)

....

Сообщить(СтрокаТЧ.Менеджер + Строка(СтрокаТЧ.Код_менеджера));

Вот думаю, зачем мы таки получаем объект?
17 GROOVY
 
27.12.13
15:29
(15) Какая разница?!
18 Sabbath
 
27.12.13
15:30
Менеджер.Кот_Менеджера
19 Darhon
 
27.12.13
15:36
Объект мы получаем потому что строкаТЧ.Менеджер - ссылка на справочник, .  А мне нужен реквизит КодSQL из элемента справочника ((
20 Sabbath
 
27.12.13
15:46
(19) ну, во превых, по ссылке доступны все реквизиты)
А во-вторых, я о том, что в СтрокеТЧ уже есть какой-то Код_Менеджера судя по
Сообщить(СтрокаТЧ.Менеджер + Строка(СтрокаТЧ.Код_менеджера));
21 Sabbath
 
27.12.13
15:47
+(20) естественно, про доступность - это на сервере
22 Darhon
 
27.12.13
15:49
Так мне строку ТЧ на сервер не передать из клиента. Он с ошибкой падает :(
23 Sabbath
 
27.12.13
15:49
(22) передай ссылку
24 Darhon
 
27.12.13
15:50
(20) А во вторых СтрокаТЧ.Код_Менеджера возвращает значение до изменения менеджера которое стояло. Хотя визуально в ТЧ оно изменяется на новое.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший