Имя: Пароль:
1C
1С v8
Заполнение ТЧ с помощью запроса
0 Elfidor
 
01.12.19
22:52
Всем привет! Подскажите, пожалуйста, неопытному человеку, почему ничего не работает?
Задание было:
1. Сделать на пустой базе справочник "Контрагенты", с реквизитами: "наименование", "Услуга", "Цена".
2. Сделать справочник "Услуги".
3. Сделать документ в котором при выборе контрагента будет заполняться ТЧ "Услуги" по данным из контрагента.
Всё в конфигурации заполнено (вроде всё правильно), но как дело дошло до написания в модуле объекта - всё встало. Я уже, и так, и так, а оно не работает.
Взгляните своим опытным взглядом, пожалуйста. Буду очень благодарна хотя бы за подсказку!

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

&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
    КонтрагентПриИзмененииНаСервере(Объект.УслугиКонтрагента);
КонецПроцедуры


Ошибка:

{Документ.УслугиКонстрагента.Форма.ОсновнаяФормаДокумента.Форма(16)}: Ошибка при вызове метода контекста (Выполнить)
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
по причине:
{(8, 21)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
Контрагенты.Ссылка <<?>>= &Ссылка
1 lodger
 
01.12.19
23:10
вроде по-русски шайтан машина ругается.
Нельзя сравнивать поля неограниченной длины и поля несовместимых типов.
Контрагенты.Ссылка <<?>>= &Ссылка
2 Bahamut
 
02.12.19
04:12
(0) вижу, что в функцию КонтрагентПриИзмененииНаСервере передаётся значение Объект.УслугиКонтрагента. Какой у него тип?
3 Strogg
 
02.12.19
06:16
Что такое ссылка? По смыслу запроса это ссылка на конкретного контрагента. А в контексте топика это ссылка на документ, в котором надо заполнить тч. Ну а вообще, программа видит переменную ссылка как реквизит формы. Короче, полнейшая неразбериха с этой вашей ссылкой.
4 ads55
 
02.12.19
06:42
(0) &НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
    КонтрагентПриИзмененииНаСервере(Объект.Контрагент);
КонецПроцедуры

может так? Нужно не услуги передавать, а ссылку на контрагента.
5 Elfidor
 
02.12.19
11:36
(4) Да, всё работает, спасибо большое! Я просто сколько учу, никак не могу понять нормально какие параметры, куда и зачем передавать надо... Вот вроде всё доходит, а это нет...
6 hhhh
 
02.12.19
12:11
(4) вообще можно ничего не передавать
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.