| 
    
            
         
         | 
    
  | 
Почему в типовой сравнивают типы, а не значения? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        DrLekter    
     14.01.21 
            ✎
    12:47 
 | 
         
        Вроде похожее обсужденгие встречал когда-то, но сейчас не найти.
 
        Наткнулся в типовой на такой момент - проверку на наличие значения в массиве проводят по типу результата: "Если ТипЗнч(МассивСтатусовСоздатьНаОсновании.Найти(Статус)) = Тип("Неопределено") Тогда" Чем это лучше/правильней такого сравнения: "Если МассивСтатусовСоздатьНаОсновании.Найти(Статус) = Неопределено Тогда" ?  | 
|||
| 
    1
    
        ДенисЧ    
     14.01.21 
            ✎
    12:49 
 | 
         
        Букв больше, конфигурация становится больше, метрики улучшаются...     
         | 
|||
| 
    2
    
        Волшебник    
     14.01.21 
            ✎
    12:52 
 | 
         
        правильнее сравнивать со значением "Неопределено"     
         | 
|||
| 
    3
    
        Bigbro    
     14.01.21 
            ✎
    13:00 
 | 
         
        может механизм платформы так работает что получить тип значения можно считав грубо говоря одну ячейку памяти.
 
        а для получения значения придется читать это значение целиком и неясно сколько оно будет занимать для массива - может и умереть в процессе чтения. но это только предположение.  | 
|||
| 
    4
    
        Вафель    
     14.01.21 
            ✎
    13:01 
 | 
         
        (3) в любом случае в (0) на 2 операции взятия типов больше     
         | 
|||
| 
    5
    
        RomanYS    
     14.01.21 
            ✎
    13:05 
 | 
         
        (0) Скорее всего тупо скопипастили и заменили
 
        Т.е. было что-то типа: ТипЗнч(Статус) = Тип("ПеречислениеСсылка.Перечисление1") ... ТипЗнч(Статус) = Тип("ПеречислениеСсылка.Перечисление2") по аналогии сделали для неопределенно. Выглядит не красиво и вряд ли несёт большой смысл  | 
|||
| 
    6
    
        polosov    
     14.01.21 
            ✎
    13:22 
 | 
         
        (0) Возможно и вправду это работает быстрее, т.к. 1С оперирует типом variant, который представлен значением и типом. при сравнении значений всегда надо сравнивать и типы. А для Неопределено достаточно сравнить типы. Но вот выигрыш как-то сомнителен.     
         | 
|||
| 
    7
    
        acces969    
     14.01.21 
            ✎
    13:41 
 | 
         
        (6) В спорте центами меряются)
 
        Вопрос вдогонку - замечал в типовых использование "Вычислить()" там, где этого не требуется. Чем интересно обсуловлен такой подход?  | 
|||
| 
    8
    
        VladZ    
     14.01.21 
            ✎
    13:43 
 | 
         
        (7) Скорей всего 1С для разработки типовых использует не конфигуратор, а что-то другое. Поэтому иногда и "выскакивают" подобные решения.     
         | 
|||
| 
    9
    
        Вафель    
     14.01.21 
            ✎
    13:44 
 | 
         
        код все равно рукамит пишется     
         | 
|||
| 
    10
    
        Вафель    
     14.01.21 
            ✎
    13:44 
 | 
         
        интересно есть статистический анализ у них? 
        по идее такое должно отлавливаться  | 
|||
| 
    11
    
        aka MIK    
     14.01.21 
            ✎
    13:50 
 | 
         
        (0) в сравнении с достаточно тяжелой функцией поиска в массиве оптимизация ничтожна, даже если она и есть     
         | 
|||
| 
    12
    
        DrLekter    
     14.01.21 
            ✎
    14:09 
 | 
         
        (2) "правильнее сравнивать со значением "Неопределено"" 
 
        - я так всегда и делаю, но, смотрю, квалифицированные разрабы ERP со мной не согласные. Задумался... По поводу оптимизации - выполняется не в цикле, однократно при открытии документа, массив состоит в лучшем случае из единиц элементов. Как говорится, "люди, которые пишут спс вместо спасибо - куда вы деваете такую прорву сэкономленного времени?" )))  | 
|||
| 
    13
    
        mikecool    
     14.01.21 
            ✎
    14:16 
 | 
         
        (0) так понимаю, что сравнение только с типом Неопределено, с другими типами так не делают?
 
        тогда надо на партнерке спросить - нафейхоа?  | 
|||
| 
    14
    
        DrLekter    
     14.01.21 
            ✎
    14:18 
 | 
         
        Судя по коду, это проверка на наличие в массиве определенного значения.     
         | 
|||
| 
    15
    
        polosov    
     14.01.21 
            ✎
    14:20 
 | 
         
        (13) В данном случае, если тебе нужно только подтверждение нахождения Статус в массиве, то можно просто сравнить с типом "Число"     
         | 
|||
| 
    16
    
        DrLekter    
     14.01.21 
            ✎
    14:21 
 | 
         
        Я думаю, разницы сравнения с типом Неопределено и с типом Число особой нет. Я всегда сравниваю со значением Неопределено.     
         | 
|||
| 
    17
    
        polosov    
     14.01.21 
            ✎
    14:24 
 | 
         
        (16) С числом по-идее должно быть сравнение медленнее, т.к. есть числа int и float.
 
        В этих ваших богомерзких буржуйских языках для этого придумали всякие <int> для коллекций, чтобы сказать какой тип тебе нужен.  | 
|||
| 
    18
    
        Bigbro    
     15.01.21 
            ✎
    06:37 
 | 
         
        (4) еще раз.
 
        предположим у вас есть структура памяти. в которой первым байтом обозначен тип данных, дальше длина, дальше собственно само значение. в этом случае операция сравнения типов, без чтения самих значений будет быстрой. адекватный разработчик платформы сделал бы так. а вот вычитать 2 значения и сравнить их, при том что у вас потенциально огромный объем данных, под который придется выделить предварительно память ... все правильно сделано в (0).  | 
|||
| 
    19
    
        DrLekter    
     15.01.21 
            ✎
    10:02 
 | 
         
        (18) Поиск в массиве дает результат типа "Число" или "Неопределено". Не может там даже теоретически оказаться "огромный объём данных". Да и структуры данных уже получены и существуют. Да, вероятно, одной операцией будет меньше, если платформа действительно сначала сравнивает тип. Но какое будет выиграно время? Нано-, фемтосекунда? На фоне того, сколько времени впустую теряется в бесчисленных цепочках вызовов в БСП, например.
 
        Я бы ещё понял, если бы это в каком-то цикле вызывалось. И это ещё если предположить, что операция извлечения типа совсем ничего не стоит.  | 
|||
| 
    20
    
        GANR    
     15.01.21 
            ✎
    10:27 
 | 
         
        (0) напиши в их поддержку и спроси     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |