Имя: Пароль:
1C
1С v8
Выбрать контактную информацию контрагента
,
0 asdor
 
16.04.16
10:44
Требуется из Бухгалтерия предприятия, редакция 3.0 (3.0.43.174)  УФ во вне передать контрагента.
В том числе Контактную информацию.
Собираю контактную инфу след. образом

Функция ПолучитьКонтактнуюИнформацию(Объект,Параметр)  
    СтрВозврата = "";  
    Для Каждого СтрКИ ИЗ Объект.КонтактнаяИнформация Цикл  
      Если СтрКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон И Параметр = "Телефон" Тогда  
            СтрВозврата = СтрКИ.Представление;  
            Прервать;  
        ИначеЕсли СтрКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес И Параметр = "Адрес" Тогда  
            СтрВозврата = СтрКИ.Представление;  
            Прервать;  
        ИначеЕсли СтрКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес И Параметр = "ПочтовыйАдрес" Тогда  
            ВКИ=Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Почтовый адрес");    
        
            Если СтрКИ.Вид=ВКИ Тогда
                      СтрВозврата = СтрКИ.Представление;  
                     Прервать;  
            КонецЕсли;        
      ИначеЕсли СтрКИ.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты И Параметр= "АдресЭП" Тогда  
                СтрВозврата = СтрКИ.Представление;  
        Прервать;  
      ИначеЕсли СтрКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Факс И Параметр = "Факс" Тогда  
        СтрВозврата = СтрКИ.Представление;  
        Прервать;  
    КонецЕсли;  
    
    КонецЦикла;  
    Возврат СтрВозврата;  
КонецФункции

Вызывает сомнение выбор "Почтовый адрес"
Может как то можно более элегантно сделать?
1 ДенисЧ
 
16.04.16
10:58
Самое главное - никогда не используй запрос!
2 SadrArt
 
16.04.16
11:10
(0) это что, шутка такая?

>Вызывает сомнение выбор "Почтовый адрес"
А все остальное не вызывает сомнений?
3 asdor
 
16.04.16
19:12
(1) Понял)
(2) Теперь вызывает))
Увы слабо знаком с 1С
Наверное все можно получить 1 запросом.
В SQL так бы и сделал.
А в 1С очень редко работаю. Новичек, и то громко будет)
Я не понимаю, как соединить контрагенты и контрагенты.контактнаяинформация
Может не так гуглил, но ничего не нашел.
Про получение контактной информации выборкой есть, но везде контактная информация в регистре сведений. А в БУ она табличная часть контрагента.
Подскажите запрос.
4 Звездец
 
16.04.16
19:15
дополню (1) и ни в коем случае не используй штатный функционал конфигурации
5 asdor
 
16.04.16
19:20
(4) Я знаю, что я плохо знаю 1С.
В (1) хотя бы намек был на выборку.
(Я понимаю, для профи 1С выборки 1С как родные)))
Но уж больно для меня они необычны)
Пытаюсь разобраться...
А вот что за штатный функционал мне может помочь, даже не догадываюсь.

Подскажите.
6 hhhh
 
16.04.16
19:23
(3) соединять не надо. Вообще-то

контрагент это КонтактнаяИнформация.Ссылка

с SQL вообще не знаком?
7 Cyberhawk
 
16.04.16
19:26
Вот это ВКИ=Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Почтовый адрес");

Замени на ВКИ = ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента")
8 Звездец
 
16.04.16
19:28
(5) в общих модулях БП есть функции, возвращающие контактную информацию. Их и используй
9 RomanYS
 
16.04.16
19:29
(5) "А вот что за штатный функционал мне может помочь, даже не догадываюсь"

Если запустить поиск по конфигурации ".КонтактнаяИнформация", то с большой вероятностью найдешь в общих модулях нужную функцию
10 asdor
 
16.04.16
19:44
(9) Спасибо. Вот она прелесть открытого кода)
Ищет.
(8) Спасибо.
(7) Это наверное частность. Но буду знать. Спасибо)
(6) с SQL знаком. И с Linq знаком. А вот с взаимодействием объектов 1С... пока не понимаю.
Если брать обычные реляционные данные
Контрагент - у него есть РК
КонтактнаяИнформация - Ну по идее FK должен быть.
Но как я только не подставлял, не искал, сплошь ошибки.

Что то косячу с непривычным синтаксисом.)))
11 b_ru
 
16.04.16
20:06
>>Контрагент - у него есть РК
>>КонтактнаяИнформация - Ну по идее FK должен быть.

Поле Ссылка в одной и в другой таблице.
12 asdor
 
17.04.16
10:01
В результате изучения найденного кода, сочинил такую хрень)
       "ВЫБРАТЬ
        |    EmailКонтрагенты.Представление КАК Email,
        |    ПочтовыйАдрес.Представление КАК ПочтовыйАдрес,
        |    Контрагенты.Наименование КАК Наименование
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |    Левое СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК EmailКонтрагенты
        |        ПО Контрагенты.Ссылка = EmailКонтрагенты.Ссылка
        |            И (EmailКонтрагенты.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailКонтрагенты))
        |    Левое СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК ПочтовыйАдрес
        |        ПО Контрагенты.Ссылка = ПочтовыйАдрес.Ссылка
        |            И (ПочтовыйАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента))
        |ГДЕ
        |    (Контрагенты.Ссылка = &ПараметрТекущийОбъект)";

Оно конечно работает. Но хоть убей не пойму. Откуда взять ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailКонтрагенты))
и
ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента))
Глядя на структуру Справочник.ВидыКонтактнойИнформации... понимаю, что я ничего не понимаю!
Видимо это какие то предопределенные записи?
Я ни как не могу научиться думать по 1С. Мыслю таблицами, или объектами. Но тут как то своеобразно(

Подскажите, как увидеть весь список предопределенных значений Справочник.ВидыКонтактнойИнформации

Хотелось бы понимать написанное.
13 hhhh
 
17.04.16
10:06
правой кнопкой мыши щелкаешь по справочнику, выбираешь Открыть предопределенные данные
14 asdor
 
17.04.16
10:17
(13) Твою туда-сюда))) Спасибо))) Как все просто.
А я как дурак, циклом их перебирал, и выписывал нужные)))
15 Звездец
 
17.04.16
10:23
Вот так всю жизнь и будешь велосипеды не едущие делать
16 asdor
 
17.04.16
10:25
(15) А что не так?
Вроде пока едет )
Профи виднее, может колесо восьмеркой?)))
17 asdor
 
17.04.16
10:29
(8) Кажется понял. Это об этом?
Ну не смог найти такую функцию.
Код подсмотрел, в общем разобрался.
А вот что бы прямо функцию... увы, не получилось.
18 xReason
 
17.04.16
13:35
Используй УправлениеКонтактнойИнформацией. КонтактнаяИнформацияОбъекта(Ссылка, ВидКонтактнойИнформации = Неопределено, , Дата = Неопределено)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.