Процедура ЗаписатьКонтактыВXML(ЗаписьXML, Объект)
ЗаписьXML.ЗаписатьНачалоЭлемента("Контакт");
Запрос = новый запрос;
запрос.Текст = "ВЫБРАТЬ
| КонтактнаяИнформация.Представление
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Объект
| И КонтактнаяИнформация.Тип = &Тип";
запрос.УстановитьПараметр("Объект", Объект);
запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
рез = запрос.Выполнить();
если не рез.Пустой() тогда
выборка = рез.Выбрать();
пока выборка.Следующий() цикл
если не выборка.Представление = "" тогда
КонтактИнфо = выборка.Представление;
КонецЕсли;
КонецЦикла;
ЗаписьXML.ЗаписатьАтрибут("ЭлПочта", КонтактИнфо);
КонецЕсли;
запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);
рез = запрос.Выполнить();
если не рез.Пустой() тогда
выборка = рез.Выбрать();
пока выборка.Следующий() цикл
если не выборка.Представление = "" тогда
КонтактИнфо = выборка.Представление;
КонецЕсли;
КонецЦикла;
ЗаписьXML.ЗаписатьАтрибут("Тлф", КонтактИнфо);
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента(); // Контакт
КонецПроцедуры
(5) Красота в программировании только мешает!
Самые быстрые тексты - не красивые....
Кстати вы в курсе что программый код в одну строку работает быстрее чем форматированный текст?
(9)Они не прошли мимо меня. Но если уж выдаете эту информацию, то ее надо объяснять: откуда и на сколько эта экономия происходит. А то я правда разбирала как-то конфигурацию альтернативно-одаренной личности. С модулями в одну строчку и без больших букв. Оптимизаторы.
(22) а теперь тоже самое без отладчика. Цифры будут другие. Да, ускорение будет, но не в столько раз.
Использовать можно, но не везде. Во многих местах ускорение будет мизерным, а читаемость ухудшится принципиально.
(24) речь идет о Принципиальном вопросе - ДА или НЕТ!
не идет здесь речь о читабельности!
Вы вчитайтесь то хоть в суть ...
5 раз написано, что народ не понимает именно сути, что ДА - быстрее.
А на сколько быстрее какая разница!
И читабельность никто не отменял. Но не про нее речь!
А в некоторых местах ускорение может достигать 200% !
Но еще раз говорю - дело не в количественной оценке ускорения а в качественной, то есть форматированный текст всегда медленнее. Ну зато красив и читабелен!
(25) Тогда не приводите конкретные цифры. Привели, будьте добры отвечать за них. Иначе вы вводите в заблуждение, что это приводит в 10 кратному увеличению скорости выполнения.
А если указать, что на очень больших итерациях увеличение составит максимум 20%, а при небольших разница будет не ощутима, то и вывод будет совсем другой.
(26) вы устойчиво не желаете читать все и только выдергиваете вам видимо удобную информацию...
Таким методом даже близко к истине не подойдете...
Я привел сначала ссылку, все эти цифры - ТАМ!
Народ попросил конкретных цифр я оттуда их скопировал для тех кому лень читать все...
За чужие цифры я не могу нести ответственности!
А вот за принципиальное знание в одну строку - ДА быстрее , я несу полную ответственность, ибо это Истина, которую никто еще не опрооверг.
А высказывания, что типа это не хорошая истина, потому что она мне не нравится, или она истина но "не для меня" , потому что разницу при вычислении 2х2=4 мерять нечем - это все равно что отрицать сферичность Земли. (ну она же не идеальная сфера и тп и тд - но ведь и не чемодан!)
(27) я не опровергал сам факт ускорения. Я опровергаю цифры, которые вы привели. Не важно, что там, откуда вы их взяли они изначально не правильные. Привели их вы.
Если утверждать, что от земли до луны далеко и привести цифры 1 парсек, то это нормально? Само же утверждение "Далеко" верно...
(33) а еще можно в 1С 2х2 вычислять - очень быстро будет...
У нас в месяц несколько миллионов документов...
И закрытие месяца длится сутками!
А тут всего полчаса покрутила
Думаете там меньше миллиарда операций?
И при наших реальных масштабах как раз и выходит именно порядок то есть разница в 100%
(34) ясно. С математикой у вас совсем никак... "на порядок" это в 10 раз, т.е. 1000%. Это раз.
Уже определили, что простейший цикл с 1 млрд итерация дает увеличение на 27%. Вы же утверждаете про 100 %. Это два.
Сам цикл как в примере никогда не используется. В нем есть еще разные операции. Причем могут быть и ресурсоемкие. При этом разница выполнения может нивелироваться за счет ресурсоемкости логики в цикле. Но тут точно ничего нельзя сказать определенно без самого кода.
(6) читала. Синтаксис python мне нравится определенно. Но иногда стоит пожертвовать миллисекундами ради простоты чтения кода.
Здесь кстати тоже шла не по пути запроса из-за простоты записи и скорости отбора. Не учла необходимость полного заполнения при поиске по регистрам (7)
(11) Я не призываю к абсурду!
Ясно что простота кода при начальной разработке на первом месте, а о быстродействии начинаешь думать уже во вторую очередь, когда все взлетело.
Но иметь в виду стоит всегда, что 1С в одну строку работает быстрее... просто знать это...
А то как показала эта тема многие делают круглые глаза... )))))
Но иметь в виду стоит всегда, что 1С в одну строку работает быстрее... просто знать это...
Ну да. По секунде на лярд строк. УПП общий модуль УправлениеПроизводствомДвиженияПоРегистрам - меньше 15000 строк. Да ваша 1С за эту секунду экономии сдохнет же)))
(2)Что-то у вас текст в функции и в ошибке разный.
Час убила на красивую запись
А надо было всего лишь почитать синтаксис-помощник
В переданной структуре должны содержаться те измерения, по которым должны быть отфильтрованы записи. В элементе структуры задается имя и значение отбора. Должны указываться значения для всех измерений.
Параметр обязателен для регистров, имеющих измерения.
Процедура ЗаписатьКонтактыВXML(ЗаписьXML, Объект)
ЗаписьXML.ЗаписатьНачалоЭлемента("Контакт");
Запрос = новый запрос;
запрос.Текст = "ВЫБРАТЬ
| КонтактнаяИнформация.Представление
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Объект
| И КонтактнаяИнформация.Тип = &Тип";
запрос.УстановитьПараметр("Объект", Объект);
запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
рез = запрос.Выполнить();
если не рез.Пустой() тогда
выборка = рез.Выбрать();
пока выборка.Следующий() цикл
если не выборка.Представление = "" тогда
КонтактИнфо = выборка.Представление;
КонецЕсли;
КонецЦикла;
ЗаписьXML.ЗаписатьАтрибут("ЭлПочта", КонтактИнфо);
КонецЕсли;
запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);
рез = запрос.Выполнить();
если не рез.Пустой() тогда
выборка = рез.Выбрать();
пока выборка.Следующий() цикл
если не выборка.Представление = "" тогда
КонтактИнфо = выборка.Представление;
КонецЕсли;
КонецЦикла;
ЗаписьXML.ЗаписатьАтрибут("Тлф", КонтактИнфо);
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента(); // Контакт
КонецПроцедуры