Имя: Пароль:
1C
1С v8
Добавить колонки на форму выбора справочника "Контрагенты"
0 _stay true_
 
06.08.13
10:54
Здравствуйте. Необходимо добавить Ещё несколько колонок(Адрес доставки, юр.адрес и телефон) в форму выбора справочника Контрагенты.

Завел новые реквизиты в справочнике (Адрес доставки, юр.адрес и телефон), добавил колонки в форме выбора(указал соответствующие данные). Пытаюсь вытянуть запросом данные из регистра сведений "КонтактнаяИнформация"(вроде, все данные контрагентов хранятся там) и запихнуть их в "мои" реквизиты в процедуре "ПередЗаписью".

Код:


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

      Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
        
    Пока Выборка.Следующий() Цикл
        
        ЭтотОбъект.АдресДоставки = Выборка.Представление;
        ЭтотОбъект.ЮридическийАдрес = Выборка.Представление;
        ЭтотОбъект.Телефон = Выборка.Телефон;
        
    КонецЦикла;    
        
КонецФункции





В отладчике наблюдаю следующее: в цикл не попадает(Выборка.Следующий() = Ложь ), пробовал вместо цикла сделать условие(Если Выборка.Следующий()) - то же самое.

Помогите разобраться. Заранее благодарен.
1 rotting
 
06.08.13
10:57
Подход не правильный, выводи данные в событии "ПриПолученииДанных"
2 _stay true_
 
06.08.13
11:02
(1) Спасибо за совет. А с процедурой что не так?
3 СвинТуз
 
06.08.13
11:03
"Запрос.УстановитьПараметр("Объект", ЭтотОбъект.Наименование);"
тут фигня
4 _stay true_
 
06.08.13
11:04
(3) Понял вас. А как должно быть по науке?)
5 Godofsin
 
06.08.13
11:05
Ссылка
6 СвинТуз
 
06.08.13
11:06
там ссылка на объект должна быть
ты же кодер ? думай
7 EugeniaK
 
06.08.13
11:07
(0) Эм....
Это что, отдельный запрос для каждого контрагента на форме выбора?
8 _stay true_
 
06.08.13
11:09
(7) Нет. Запрос выполняется в контексте основной формы объекта.
9 _stay true_
 
06.08.13
11:10
(6) Я очень-очень-очень начинающий(возможно пока ещё быдло)кодер:)
10 СвинТуз
 
06.08.13
11:12
(9)
ну вот как раз носом в то что ... написал
самое то , все проходили это
читай книги
на форуме меньше болтай
11 _stay true_
 
06.08.13
11:17
(10)Спасибо за всё. Буду стараться:)
12 СвинТуз
 
06.08.13
11:22
(11)
поставь точку останова
посмотри где можно зацепить справочник.контрагент.ссылка
или возможно физлицо.ссылка
надо в конфу смотреть
13 СвинТуз
 
06.08.13
11:23
табло есть оно все расскажет
14 _stay true_
 
06.08.13
14:49
Так и не заработало. Что не так сделал с параметром "тип"?

(Запрос.УстановитьПараметр("Тип", );). Код:

Процедура ВывестиАдресаИТелефоны()
    

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

тип это справочник контактнаяинформация.
16 _stay true_
 
06.08.13
15:31
(15) Сделал вот так


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



      Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
Пока Выборка.Следующий() Цикл    
            
    ЭтотОбъект.АдресДоставки = Выборка.Представление;
    ЭтотОбъект.ЮридическийАдрес = Выборка.Представление;
    ЭтотОбъект.Телефон = Выборка.Представление;


        
КонецЦикла;


Во все 3 реквизита запихивает телефон. И, что самое страшное, в колонках на форме ничего не появляется
17 _stay true_
 
06.08.13
15:54
(16) Кажись, доперло...Я же каждый раз по новой устанво\ливаю параметр. Попробую с помощью массива передать 3 параметра сразу.