Туплю...
Вызов функций:

```1c
    ВернутьАдрес(ДокСсылка.Организация, Перечисления.ТипыКонтактнойИнформации.Адрес, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации)
    ВернутьКонтакт(ДокСсылка.Организация, Перечисления.ТипыКонтактнойИнформации.Телефон)
```

Сам код функций. Первая отрабатывает, все ок.

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

Здесь пытаюсь вернуть все телефоны, не указывая вида. Пробовала по-разному, не получается...

```1c
    Функция ВернутьКонтакт(Объект, Тип, Вид = Неопределено)
    Контакт = РегистрыСведений.КонтактнаяИнформация.Получить(Новый Структура("Объект, Тип, Вид", Объект, Тип, Вид));
    пКонтакт = ";
    Если не Контакт = Неопределено тогда
    пКонтакт = Контакт.представление;
    конецесли;
    возврат пКонтакт;
    конецфункции
```

В Вид мне не нужно ничего вставлять
---
Результат :-)
Спасибо всем!

```1c
    Процедура ЗаписатьКонтактыВXML(ЗаписьXML, Объект)

    ЗаписьXML.ЗаписатьНачалоЭлемента("Контакт");

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

    рез = запрос.Выполнить();
    если не рез.Пустой() тогда
    выборка = рез.Выбрать();
    пока выборка.Следующий() цикл
    если не выборка.Представление = " тогда
    КонтактИнфо = выборка.Представление;
    КонецЕсли;
    КонецЦикла;
    ЗаписьXML.ЗаписатьАтрибут("ЭлПочта", КонтактИнфо);
    КонецЕсли;

    запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);

    рез = запрос.Выполнить();
    если не рез.Пустой() тогда
    выборка = рез.Выбрать();
    пока выборка.Следующий() цикл
    если не выборка.Представление = " тогда
    КонтактИнфо = выборка.Представление;
    КонецЕсли;
    КонецЦикла;
    ЗаписьXML.ЗаписатьАтрибут("Тлф", КонтактИнфо);
    КонецЕсли;

    ЗаписьXML.ЗаписатьКонецЭлемента(); // Контакт

    КонецПроцедуры
```
---
Пишите запрос = так будет и вам понятнее и работать будет универсально
---
Да, на последнюю функцию пишет ошибку:
{ВнешняяОбработка.Test.МодульОбъекта(416)}: Ошибка при вызове метода контекста (Выбрать)
 Контакт = РегистрыСведений.КонтактнаяИнформация.Выбрать(Новый Структура("Объект, Тип, Вид", Объект, Тип, Вид));

Недопустимое значение параметра (параметр номер '1')
---
Пишите запрос = так будет и вам понятнее и работать будет универсально
---
(2) Кстати да, хороший совет. Час убила на красивую запись, результат нулевой...
---
Красота в программировании только мешает!
Самые быстрые тексты - не красивые....
Кстати вы в курсе что программый код в одну строку работает быстрее чем форматированный текст?
---
Кстати вы в курсе что программый код в одну строку работает быстрее чем форматированный текст?Ну зачем вводить девочку в заблуждение? Поверит же, над ней потом смеяться будут.
---
Век живи, век учись , но помирать все равно дураком....
Всегда есть тайные знания для каждого...
Вам по секрету открою-
http://www.gilev.ru/forum/viewtopic.php?f=18&t=1158
https://infostart.ru/public/71130/#Pro_cikly_v_odnu_stroku
https://forum.mista.ru/topic.php?id=659371&page=2

Да море ссылок и тем...
Странно, что они прошли мимо вас
---
Они не прошли мимо меня. Но если уж выдаете эту информацию, то ее надо объяснять: откуда и на сколько эта экономия происходит. А то я правда разбирала как-то конфигурацию альтернативно-одаренной личности. С модулями в одну строчку и без больших букв. Оптимизаторы.
---
это не оптимизаторы...
Это вполне может быть результат обфускации.
там еще кроме одной строки и названия переменных полностью бредовые
---
Нене, там вполне читабельный код, ручками написанный. Результаты обфускации я видела, тут человек свято верил в это ускорение.
---
https://forum.mista.ru/topic.php?id=659371&page=2
А эта ветка у меня даже в закладках, оказывается) Орефков с Чистяковым там обосновательно зацепили.
---
Вот видите как иногда полезно обновлять мозг....
Я еще раз повторяю - не призываю к абурду...

Но в одну строку по любому быстрее - это факт, с которым спорить просто глупо!
Другое дело , что ради читабельности мы жертвуем быстродействием.
---
Я еще раз повторяю - не призываю к абурду... А я еще раз повторяю, что надо приводить цифры с подобными фактами. Стоимость и выгоду этой "оптимизации"
---
Ну так цифры же внутри ссылок, или вам лень их открыть?

а=0;
ее=текущаядата();
Пока а<100000000 Цикл
а=а+1;
КонецЦикла;
Сообщить(текущаядата()-ее);

а=0;ее=текущаядата();Пока а<100000000 Цикл а=а+1;КонецЦикла;Сообщить(текущаядата()-ее);

а=0;ее=текущаядата();while а<100000000 do а=а+1;enddo;message(текущаядата()-ее);

результат времени :
396,
44,
45
---
а теперь тоже самое без отладчика. Цифры будут другие. Да, ускорение будет, но не в столько раз.
Использовать можно, но не везде. Во многих местах ускорение будет мизерным, а читаемость ухудшится принципиально.
---
речь идет о Принципиальном вопросе - ДА или НЕТ!
не идет здесь речь о читабельности!
Вы вчитайтесь то хоть в суть ...
5 раз написано, что народ не понимает именно сути, что ДА - быстрее.
А на сколько быстрее какая разница!
И читабельность никто не отменял. Но не про нее речь!

А в некоторых местах ускорение может достигать 200% !
Но еще раз говорю - дело не в количественной оценке ускорения а в качественной, то есть форматированный текст всегда медленнее. Ну зато красив и читабелен!
---
Тогда не приводите конкретные цифры. Привели, будьте добры отвечать за них. Иначе вы вводите в заблуждение, что это приводит в 10 кратному увеличению скорости выполнения.
А если указать, что на очень больших итерациях увеличение составит максимум 20%, а при небольших разница будет не ощутима, то и вывод будет совсем другой.
---
вы устойчиво не желаете читать все и только выдергиваете вам видимо удобную информацию...
Таким методом даже близко к истине не подойдете...
Я привел сначала ссылку, все эти цифры - ТАМ!
Народ попросил конкретных цифр я оттуда их скопировал для тех кому лень читать все...
За чужие цифры я не могу нести ответственности!
А вот за принципиальное знание в одну строку - ДА быстрее , я несу полную ответственность, ибо это Истина, которую никто еще не опрооверг.
А высказывания, что типа это не хорошая истина, потому что она мне не нравится, или она истина но "не для меня" , потому что разницу при вычислении 2х2=4 мерять нечем - это все равно что отрицать сферичность Земли. (ну она же не идеальная сфера и тп и тд - но ведь и не чемодан!)
---
я не опровергал сам факт ускорения. Я опровергаю цифры, которые вы привели. Не важно, что там, откуда вы их взяли они изначально не правильные. Привели их вы.
Если утверждать, что от земли до луны далеко и привести цифры 1 парсек, то это нормально? Само же утверждение "Далеко" верно...
---
Результат мой

```1c
    а=0;
    ее=текущаядата();
    Пока а<1000000000Цикл
    а=а+1;
    КонецЦикла;
    Сообщить(текущаядата()-ее);

    а=0;ее=текущаядата();Пока а<1000000000Цикл а=а+1;КонецЦикла;Сообщить(текущаядата()-ее);
```

761
556
---
отладка на сервере включена?
---
нет
---
Вот. ~27% только разница, а не на порядок. И это при 1 млрд итерации.
Можете еще проверить при 1000 итераций и сравнить.
---
а еще можно в 1С 2х2 вычислять - очень быстро будет...
У нас в месяц несколько миллионов документов...

И закрытие месяца длится сутками!
А тут всего полчаса покрутила
Думаете там меньше миллиарда операций?
И при наших реальных масштабах как раз и выходит именно порядок то есть разница в 100%
---
ясно. С математикой у вас совсем никак... "на порядок" это в 10 раз, т.е. 1000%. Это раз.
Уже определили, что простейший цикл с 1 млрд итерация дает увеличение на 27%. Вы же утверждаете про 100 %. Это два.
Сам цикл как в примере никогда не используется. В нем есть еще разные операции. Причем могут быть и ресурсоемкие. При этом разница выполнения может нивелироваться за счет ресурсоемкости логики в цикле. Но тут точно ничего нельзя сказать определенно без самого кода.
---
Я уже давно понял, что вам бы лишь бы побазарить...
---
это что, потому что дата вычисляется, а не время?
---
читала. Синтаксис python мне нравится определенно. Но иногда стоит пожертвовать миллисекундами ради простоты чтения кода.
Здесь кстати тоже шла не по пути запроса из-за простоты записи и скорости отбора. Не учла необходимость полного заполнения при поиске по регистрам (7)
---
Я не призываю к абсурду!
Ясно что простота кода при начальной разработке на первом месте, а о быстродействии начинаешь думать уже во вторую очередь, когда все взлетело.
Но иметь в виду стоит всегда, что 1С в одну строку работает быстрее... просто знать это...
А то как показала эта тема многие делают круглые глаза... )))))
---
Но иметь в виду стоит всегда, что 1С в одну строку работает быстрее... просто знать это... Ну да. По секунде на лярд строк. УПП общий модуль УправлениеПроизводствомДвиженияПоРегистрам - меньше 15000 строк. Да ваша 1С за эту секунду экономии сдохнет же)))
---
тут уже дело принципа - быстрее? ДА или НЕТ ?
Попробуйте без философии...

Все же просто скажете НЕТ - ответ очевидно верный ...
Остальное бла бла бла
---
код без комментариев быстрее чем с комментариями, скомпилированный быстрее интерпретатора и т.д.
---
Что-то у вас текст в функции и в ошибке разный.

Час убила на красивую запись
А надо было всего лишь почитать синтаксис-помощник

В переданной структуре должны содержаться те измерения, по которым должны быть отфильтрованы записи. В элементе структуры задается имя и значение отбора. Должны указываться значения для всех измерений.
Параметр обязателен для регистров, имеющих измерения.
---
запросом включив все телефонные виды информации в список значений и с отбором по вхождению в этот список
---
Результат :-)
Спасибо всем!

```1c
    Процедура ЗаписатьКонтактыВXML(ЗаписьXML, Объект)

    ЗаписьXML.ЗаписатьНачалоЭлемента("Контакт");

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

    рез = запрос.Выполнить();
    если не рез.Пустой() тогда
    выборка = рез.Выбрать();
    пока выборка.Следующий() цикл
    если не выборка.Представление = " тогда
    КонтактИнфо = выборка.Представление;
    КонецЕсли;
    КонецЦикла;
    ЗаписьXML.ЗаписатьАтрибут("ЭлПочта", КонтактИнфо);
    КонецЕсли;

    запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);

    рез = запрос.Выполнить();
    если не рез.Пустой() тогда
    выборка = рез.Выбрать();
    пока выборка.Следующий() цикл
    если не выборка.Представление = " тогда
    КонтактИнфо = выборка.Представление;
    КонецЕсли;
    КонецЦикла;
    ЗаписьXML.ЗаписатьАтрибут("Тлф", КонтактИнфо);
    КонецЕсли;

    ЗаписьXML.ЗаписатьКонецЭлемента(); // Контакт

    КонецПроцедуры
```
---
А без исходных текстов?