Имя: Пароль:
1C
1С v8
Как правильно написать процедуру?
0 leo58
 
22.01.12
16:09
Есть процедура ПриИзменении в поле ФИО:
Процедура АрендаторыФИОПриИзменении(Элемент)

   стрЗапрос="
   |ВЫБРАТЬ
   |    Клиенты.Серия_и_номер_паспорта,
   |    Клиенты.Адрес_проживания
   |ИЗ
   |    Справочник.Клиенты КАК Клиенты
   |ГДЕ
   |    Клиенты.Наименование=&ФИО";
   
   обЗапрос=Новый Запрос(стрЗапрос);

обЗапрос.УстановитьПараметр("ФИО",ЭтаФорма.ЭлементыФормы.Арендаторы.Колонки.ФИО.ЭлементУправления.Значение);

резЗапроса= обЗапрос.Выполнить();
     Выборка=резЗапроса.Выбрать();
   ЭтаФорма.ЭлементыФормы.Арендаторы.Колонки.Адрес_проживания.ЭлементУправления.Значение=Выборка.Адрес_проживания;
   ЭтаФорма.ЭлементыФормы.Арендаторы.Колонки.Серия_и_номер_паспорта.ЭлементУправления.Значение=Выборка.Серия_и_номер_паспорта.Значение;
       
   КонецПроцедуры

Мне надо чтобы в табличной части документа, при выборе ФИО клиента, обновлялись поля с серией паспорта и адресом из справочника Клиенты, с отбором по ФИО.Что неправильно в процедуре подскажите?
1 VasjaIvanov
 
22.01.12
16:17
обЗапрос.УстановитьПараметр("ФИО",ФИО);
ФИО = ЭлементыФормы.Арендаторы.Текущиеданные.ФИО;
2 VasjaIvanov
 
22.01.12
16:18
ЭтаФорма.ЭлементыФормы.Арендаторы.Колонки.Адрес_проживания = Выборка.Адрес_проживания
3 Rie
 
22.01.12
16:19
(0) Что-то не понятно... ФИО - это реквизит табличной части? Адрес_проживания и Серия_и_номер_паспорта - видимо, тоже?
Во-первых, что ты будешь делать с однофамильцами? Зачем тебе ФИО - реквизитом, не лучше ли сразу сделать реквизит Клиент типа СправочникСсылка.Клиенты?
Во-вторых, в какой строке тебе надо изменять? В той самой, где ФИО находится? Тогда используй ТекущиеДанные.
4 VasjaIvanov
 
22.01.12
16:19
как то так)) мож где ошибка, надо отладчиком пройтись и пост=мотреть что в выборке выходит
5 leo58
 
22.01.12
16:20
VasjaIvanov, так переменая не определена, ФИО в табличной части находится в колонке
6 Дикообразко
 
22.01.12
16:20
нужно работать с источником табличного поля,
на край с текущей строкой
7 VasjaIvanov
 
22.01.12
16:21
(5)выбираешь в табличной части, что то я не понял?
8 VasjaIvanov
 
22.01.12
16:21
при выборе ФИО клиента???
9 VasjaIvanov
 
22.01.12
16:21
нде выбор осуществляешь?
10 leo58
 
22.01.12
16:21
Rie, у меня справочник ссылка Клиенты в ФИО,а как сделать чтобы адрес заполнялся с номером паспорта после выбора из справочника клиента, всё в табличной части
11 leo58
 
22.01.12
16:22
VasjaIvanov, выбираешь в табличной
12 VasjaIvanov
 
22.01.12
16:23
ФИО = ЭлементыФормы.Арендаторы.Текущиеданные.ФИО //ФИО - название колонки
13 VasjaIvanov
 
22.01.12
16:24
\\арендаторы - нащвание ТЧ , я так все понял
14 leo58
 
22.01.12
16:25
{Документ.Договор_аренды.Форма.ФормаДокумента(15,35)}: Переменная не определена (ФИО)
обЗапрос.УстановитьПараметр("ФИО",<<?>>ФИО);

переменая не определена
15 leo58
 
22.01.12
16:25
да так
16 Rie
 
22.01.12
16:25
(10) Поздравляю. А тогда зачем что-то искать?

ТекДанные = ЭлементыФормы.Арендаторы.ТекущиеДанные;
ТекДанные.Адрес_проживания = ТекДанные.ФИО.Адрес_проживания;
17 Rie
 
22.01.12
16:26
+(16) А запрос - выкинь. Напрочь.
18 VasjaIvanov
 
22.01.12
16:27
(16) можно так есл без запроса
19 Rie
 
22.01.12
16:27
+(16) И вообще - а зачем тебе реквизиты Адрес_проживания и Серия_и_номер_паспорта в табличной части?
20 leo58
 
22.01.12
16:27
Rie, тут ТекДанные.ФИО.Адрес_проживания; ФИО это что?
21 leo58
 
22.01.12
16:28
Rie, просто может быть несколько человек
22 leo58
 
22.01.12
16:31
работает,всем огромное спасибо!!!
23 VasjaIvanov
 
22.01.12
16:31
(21)ФИО тут это ссылкана клиента, потом по ссылке получаешь все что хочешь
24 leo58
 
22.01.12
16:33
VasjaIvanov, ясно,спасибо,буду знать,а я зачем то запрос начал делать))
25 Rie
 
22.01.12
16:36
(24) Запрос - это не так уж и плохо (обращение к ФИО.Адрес_проживания система сама развернёт запрос). Но вот запрос у тебя тоже неправильно написан был: если ФИО - это СправочникСсылка, то почему ж ты её сравниваешь с наименованием - которое строка?
26 leo58
 
22.01.12
16:45
Rie, да вот чо то не сообразил, так вроде примерно знаю чо как, а вот из-за вот этих мелочей не получается)))
27 Rie
 
22.01.12
16:50
(26) А если знаешь, что как, - перед тем, как бежать за помощью на форум, попробуй применить это знание, сам проверь свой код. Пользы будет куда больше, чем если по каждому чиху на форум бегать будешь.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой