Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Кто-то понимает смысл этого кода? 2 страниц V   1 2 >          
Vofka Подменю пользователя
сообщение 13.07.12, 8:50
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

В запросе есть условие:

|    (&ФильтрКлиент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|            ИЛИ НЕ &ФильтрКлиент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|                И ВЗ_ИсточникДанных.Клиент = &ФильтрКлиент)


Не будет ли оно работать точно так же, если из него удалить 2 верхние строки? Или же это условие аналогично такому:

|    ((&ФильтрКлиент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))
|            ИЛИ (НЕ &ФильтрКлиент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|                И ВЗ_ИсточникДанных.Клиент = &ФильтрКлиент))


?

Acid Подменю пользователя
сообщение 13.07.12, 9:02
Сообщение #2

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 379 раз
Рейтинг: 0

здесь идет проверка на тип выбранного значения для составного реквизита. лучше не убирать.


Signature

Документируйте Код! мать вашу...


Vofka Подменю пользователя
сообщение 13.07.12, 9:04
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Реквизит не составной. Я так понял, что в записимости от заданного параметра будет выполняться это
|(&ФильтрКлиент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))

либо это
|НЕ &ФильтрКлиент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|                И ВЗ_ИсточникДанных.Клиент = &ФильтрКлиент

Zaval Подменю пользователя
сообщение 13.07.12, 9:08
Сообщение #4

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Вернет Истину, если фильтр пуст, иначе - результат сравнения.

Что не так?
ЗЫ. Я еще сегодня кофе не пил - могу буксовать немного)))

Acid Подменю пользователя
сообщение 13.07.12, 9:09
Сообщение #5

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 379 раз
Рейтинг: 0

ВЗ_ИсточникДанных

что там?



Signature

Документируйте Код! мать вашу...


Vofka Подменю пользователя
сообщение 13.07.12, 9:14
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата(Acid @ 13.07.12, 10:09) *
что там?

Там находится список клиентов.

Цитата(Zaval @ 13.07.12, 10:08) *
Вернет Истину, если фильтр пуст, иначе - результат сравнения.

Я так и понял (пост №3) smile.gif .

Но почему было не написать условие через ВЫБОР (это мысли вслух, а не призыв стелепатировать мысли автора кода smile.gif ):
|ВЫБОР КОГДА
|   &ФильтрКлиент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА
|      ВЗ_ИсточникДанных.Клиент = &ФильтрКлиент
|   ИНАЧЕ
|      ИСТИНА
|КОНЕЦ

По-моему так нагляднее получается.

Zaval Подменю пользователя
сообщение 13.07.12, 9:17
Сообщение #7

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Цитата(Vofka @ 13.07.12, 9:50) *
Не будет ли оно работать точно так же, если из него удалить 2 верхние строки? Или же это условие аналогично такому:


По моему, оно такое и есть - И имеет приоритет перед ИЛИ, скобки не нужны.

Acid Подменю пользователя
сообщение 13.07.12, 9:20
Сообщение #8

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 379 раз
Рейтинг: 0

это да. это код от 1С? дык они похоже студентов писать садят...


Signature

Документируйте Код! мать вашу...


Zaval Подменю пользователя
сообщение 13.07.12, 9:21
Сообщение #9

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Цитата(Vofka @ 13.07.12, 10:14) *
По-моему так нагляднее получается.


А не тормознее ли? Еще Выбора звать)
Наглядность, в сущности, дело привычки.

Vofka Подменю пользователя
сообщение 13.07.12, 9:29
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата(Acid @ 13.07.12, 10:20) *
это код от 1С?

Нет, от "продвинутых 1Снегов" smile.gif

Цитата(Zaval @ 13.07.12, 10:21) *
А не тормознее ли? Еще Выбора звать)

Это от многих факторов может зависеть (от конкретного запроса, от количества записей в результате запроса, от железа, от сети и т.п.) и однозначного ответа на этот вопрос, наверное, нету. И с таким подходом вообще получается, что можно везде писать вместо ВЫБОР КОГДА подобные инструкции через ИЛИ.

Цитата(Zaval @ 13.07.12, 10:21) *
Наглядность, в сущности, дело привычки.

Наглядность - это культура разработки, которая помимо прочего так же говорит о уровне разработчика. А всё что написано не наглядно в простонародье зовется говнокод smile.gif

Zaval Подменю пользователя
сообщение 13.07.12, 9:43
Сообщение #11

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

smile.gif Цикл, написанный одной строкой, тоже наглядностью не блещет.

Vofka Подменю пользователя
сообщение 13.07.12, 9:50
Сообщение #12

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата(Zaval @ 13.07.12, 10:43) *
smile.gif Цикл, написанный одной строкой, тоже наглядностью не блещет.

Интересно чем же он вообще блещет smile.gif ? Без примера конкретного цикла, который можно замерять у себя на машине - вариант "бОльшая производительность" не принимаю smile.gif .

Выборка = Запрос.Выполнить().Выборать();
Пока Выборка.Следущий() Цикл Ля-ля-ля; ля-ля-ля; как же приятно читать такой код; ля-ля-ля; КонецЦикла;

smile.gif

Сообщение отредактировал Vofka - 13.07.12, 9:51

pablo Подменю пользователя
сообщение 13.07.12, 9:57
Сообщение #13

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 193 раз
Рейтинг: 0

Большая производительность при записи цикла одной строкой обусловлена меньшим количеством вызовов интрепретатора языка 1С.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Vofka Подменю пользователя
сообщение 13.07.12, 9:59
Сообщение #14

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата(pablo @ 13.07.12, 10:57) *
Большая производительность при записи цикла одной строкой обусловлена меньшим количеством вызовов интрепретатора языка 1С.

Это понятно. Но в большинстве случаях (я так думаю) этой производительности вы не почувствуете.

pablo Подменю пользователя
сообщение 13.07.12, 10:51
Сообщение #15

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 193 раз
Рейтинг: 0

Чтобы почуствовать производительность нужна разница во времени выполнения хотя бы пару секунд. При фактическом времени вызова интерпретатора менее 1 мс нужен цикл с числом итераций более 2000, а такое количество в большинстве случаев не нужно smile.gif


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Vofka Подменю пользователя
сообщение 13.07.12, 16:56
Сообщение #16

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата(pablo @ 13.07.12, 11:51) *
Чтобы почуствовать производительность нужна разница во времени выполнения хотя бы пару секунд.

Это чтобы почувствовать программисту. А пользователь и 10 секундной разницы может не заметить.

Цитата(pablo @ 13.07.12, 11:51) *
При фактическом времени вызова интерпретатора менее 1 мс нужен цикл с числом итераций более 2000, а такое количество в большинстве случаев не нужно smile.gif

Это в теории.
А теперь проведем тест. Есть у нас

а = 0;
СчетчикИтераций = 0;
Пока СчетчикИтераций <= 10000 Цикл
    СчетчикИтераций = СчетчикИтераций + 1;
    Состояние(СчетчикИтераций);
    а = (а + 1) / 3 * 2;
    ОбработкаПрерыванияПользователя();
КонецЦикла;


и

а = 0;
СчетчикИтераций = 0;
Пока СчетчикИтераций <= 10000 Цикл СчетчикИтераций = СчетчикИтераций + 1; Состояние(СчетчикИтераций); а = (а + 1) / 3 * 2; ОбработкаПрерыванияПользователя(); КонецЦикла;


Замер производился 3 раза. В левой колонке первый вариант, в правой второй. Итоговые цифры залиты желтым цветом:



Я не пожертвую читабельностью за эти милисекунды.

Утверждать на глаз или по теоретическим материалам о производительности конкретного кода - это пальцем в небо.

Сообщение отредактировал Vofka - 13.07.12, 16:57

logist Подменю пользователя
сообщение 13.07.12, 21:05
Сообщение #17

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Цитата(Vofka @ 13.07.12, 17:56) *
Утверждать на глаз или по теоретическим материалам о производительности конкретного кода - это пальцем в небо.

Можно "вскрыть" исходный текст модуля, и увидеть что на каждую строку присутствует некий обработчик команды, вероятно поэтому код написанный в одну строку срабатывает чуть быстрее поскольку выполняется в одном обработчике.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Ardi Подменю пользователя
сообщение 13.07.12, 23:29
Сообщение #18

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Серьёзные пацаны полагают что быстрый отчет - это отчет который формируется быстрее чем за двое суток.

Это сейчас пользователи разбаловались -
Цитата
ААААА, почему я должна ждать отчет целых 8 секунд??? Раньше было гораздо быстрее.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

MATEVI Подменю пользователя
сообщение 13.07.12, 23:53
Сообщение #19

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2203
Из: Одесса
Спасибо сказали: 968 раз
Рейтинг: 796.3

А еще говорят что без комментариев и пробелов размер файло конфы уменьшается...

Vofka Подменю пользователя
сообщение 14.07.12, 11:10
Сообщение #20

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата(logist @ 13.07.12, 22:05) *
Можно "вскрыть" исходный текст модуля, и увидеть что на каждую строку присутствует некий обработчик команды, вероятно поэтому код написанный в одну строку срабатывает чуть быстрее поскольку выполняется в одном обработчике.

Я, честно говоря, не понял о чем речь.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 13:25
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!