Имя: Пароль:
1C
1С v8
Переменная не определена.
0 Алекс55555
 
05.10.15
18:28
Добрый вечер !
Есть задание : Определить обработчик события ,который бы позволил после выбора контактного лица автоматически устанавливать в документе   значение контрагента(владельца) .При реализации -использовать табличную обработку.
Вот код :
&НаКлиенте
Процедура КонтактноеЛицоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)  
   КонтактноеЛицоНачалоВыбораНаСервере()
КонецПроцедуры  

&НаСервере
    Процедура КонтактноеЛицоНачалоВыбораНаСервере()  
    Запрос =Новый Запрос  ;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    КонтактныеЛица.Наименование КАК КонтактноеЛицо,
    |    КонтактныеЛица.Владелец     КАК Контрагент
    |ИЗ
    |    Справочник.КонтактныеЛица КАК КонтактныеЛица" ;  
    
    Результат=Запрос.Выполнить();
    Выборка=Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        Сообщить (КонтактноеЛицо);
        Сообщить (Контрагент );
    КонецЦикла
    
КонецПроцедуры
    
Пишет ,что Документ.ПоступлениеТоваров.Форма.ФормаДокумента.Форма(39,19)}: Переменная не определена (КонтактноеЛицо)
        Сообщить (<<?>>КонтактноеЛицо); (Проверка: Сервер)
{Документ.ПоступлениеТоваров.Форма.ФормаДокумента.Форма(40,19)}: Переменная не определена (Контрагент)
        Сообщить (<<?>>Контрагент ); (Проверка: Сервер)
Помогите разобраться пожалуйста.
1 Волшебник
 
модератор
05.10.15
18:29
Сообщить (Выборка.КонтактноеЛицо);
Сообщить (Выборка.Контрагент );
2 Алекс55555
 
05.10.15
18:51
Спасибо , ошибка исправлена.
Только я по прежнему ввожу контактноелицо , и сам же ввожу потом  контрагента. А по заданию нужно "после выбора контактного лица автоматически устанавливать в документе   значение контрагента(владельца)"
Что делать не приложу ума.
И при выборе контактного лица - выскакивает сообщение, где просто перечислены все контактные лица и контрагенты, и нет возможности выбрать сначала контактное лицо , если контрагент пустой.
Жду ваших советов.
3 User_Agronom
 
05.10.15
18:57
(2)  ...автоматически устанавливать...

В коде нигде ничего автоматически не устанавливается. Попробуйте подумать логически.
4 Asmody
 
05.10.15
19:02
(2) запрос нужно параметризировать.
в текст запроса добавить

ГДЕ КонтактныеЛица.Ссылка = &КонтактноеЛицо


и добавить установку параметра:

Запрос.УстановитьПараметр("КонтактноеЛицо", КонтактноеЛицо)

тогда в результате запроса будет только нужный контрагент
5 Алекс55555
 
05.10.15
19:16
(4) Спасибо, сделал. Если правильно понял , то должно выглядеть так :
&НаКлиенте
Процедура КонтактноеЛицоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)  
   КонтактноеЛицоНачалоВыбораНаСервере()
КонецПроцедуры  

&НаСервере
    Процедура КонтактноеЛицоНачалоВыбораНаСервере()  
    Запрос =Новый Запрос  ;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    КонтактныеЛица.Наименование КАК КонтактноеЛицо,
    |    КонтактныеЛица.Владелец     КАК Контрагент
    |ИЗ
    |    Справочник.КонтактныеЛица КАК КонтактныеЛица  
    |   ГДЕ
    |      КонтактныеЛица.Ссылка = &КонтактноеЛицо" ;
    Результат=Запрос.Выполнить();
    Выборка=Результат.Выбрать();
    //Пока Выборка.Следующий() Цикл
     //   Сообщить (Выборка.КонтактноеЛицо);
     //   Сообщить (Выборка.Контрагент );
    Запрос.УстановитьПараметр("КонтактноеЛицо", Выборка.КонтактноеЛицо);
    //КонецЦикла
    
КонецПроцедуры
Только ничего так и не поменялось...
6 Asmody
 
05.10.15
19:52
(5) Параметр запроса устанавливается до его выполнения.
И, да, документацию придется почитать.
7 User_Agronom
 
05.10.15
20:06
(5)...Запрос.УстановитьПараметр("КонтактноеЛицо", Выборка.КонтактноеЛицо);...

Жуть. Ты не понял, что значит параметр запроса... Это всё Asmody с умным словом "параметризировать"!

Начни с того, что тебе нужно. Т.е. куда ты хочешь что-то установить.

А потом: как получить то, что хочешь установить. Что у тебя есть, для того, чтобы это получить.

Читать сначала нужно не документацию к 1С, а принципы решения задач с помощью языка программирования.
8 Asmody
 
05.10.15
20:08
(7) Ну, мы ж тут программировать собрались, а не в крысню играть. Будем сразу разговаривать нужными словами.
9 kubik_live
 
05.10.15
20:11
(0) Иванов Иван Иванович может быть контактным лицом множества контрагентов. У задачи нет решения
10 User_Agronom
 
05.10.15
20:14
(8) ...а не в крысню играть...

??
11 Asmody
 
05.10.15
20:31
(9) Судя по запросу, у него Контактные лица подчинены контрагентам.
12 Asmody
 
05.10.15
20:32
(10) Один мой учитель говорил: "Это просто, как детская игра в крысню."
13 Zamestas
 
05.10.15
20:33
14 User_Agronom
 
05.10.15
20:38
(12) Цитата, да ещё учителя.

Но не суть: если давать совет, то так, чтобы ТС понял. Но ТС пока считает (я верю, что в будущем он будет разбираться великолепно, но не сегодня точно), что цикл

Пока Выборка.Следующий() Цикл

    Сообщить (...)
КонецЦикла;

Можно заменить командой: Запрос.УстановитьПараметр(

ИМХО: советы с терминами ещё больше его запутают.

(13) Это студент, похоже.
15 Zamestas
 
05.10.15
20:40
(14) Это такой забористый студент, что я х.з. чем ему вообще помочь можно...
16 User_Agronom
 
05.10.15
20:44
(15) Я в (3) дал совет: "...Попробуйте подумать логически".

и в (7)
"...Начни с того, что тебе нужно. Т.е. куда ты хочешь что-то установить.

А потом: как получить то, что хочешь установить. Что у тебя есть, для того, чтобы это получить..."


И это не стёб. Правильно заданный вопрос даст нам с вероятностью 80% правильный ответ на него.
17 Алекс55555
 
06.10.15
08:41
(16) Спасибо большое , за дельные советы.
Да студент , да учусь. Но не все сразу становились мастерами))
18 magicSan
 
06.10.15
08:47
(17) теорию бы почитал для начала. судя по всему 1С единсвенный ЯП с которым автор работал.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс