| 
    
            
         
         | 
    
    
  | 
v7: Ерунда в коде. | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        __Se24    
     25.08.11 
            ✎
    10:01 
 | 
         
        Господа программеры 1С подскажите , вот натолкнулся в коде на такую фичу (код не мой , писан лет 5 назад )
  
        Если докПодч.ВыбратьПодчиненныеДокументы(ДокументОснование.ДатаДок,ДатаДок,ДокументОснование)=1 Тогда Пока докПодч.ПолучитьДокумент()=1 Цикл Если строка(докПодч)<>строка(ТекущийДокумент()) Тогда в чем великий смысл вот этого : Если строка(докПодч)<>строка(ТекущийДокумент()) Тогда Или это просто автор киворук , и незнает о Если докПодч.ТекущийДокумент()<>ТекущийДокумент() Тогда боюсь ломать ...  | 
|||
| 
    1
    
        ДенисЧ    
     25.08.11 
            ✎
    10:02 
 | 
         
        работает - не трогай.     
         | 
|||
| 
    2
    
        ДенисЧ    
     25.08.11 
            ✎
    10:02 
 | 
         
        Кроме того, каждый вызов .ТекущийДокумент() - это обращение к БД, а для строка() это не нужно. Теоретически - чуть быстрей.     
         | 
|||
| 
    3
    
        2S    
     25.08.11 
            ✎
    10:03 
 | 
         
        (0) выпендрился     
         | 
|||
| 
    4
    
        aka AMIGO    
     25.08.11 
            ✎
    10:03 
 | 
         
        (0) системное представление документа переводится в строковый/текстовый формат..
  
        в принципе - должно и так работать :)  | 
|||
| 
    5
    
        andrewks    
     25.08.11 
            ✎
    10:05 
 | 
         
        имхо, это не гуд. гипотетически возможны ситуации "ложного" равенства     
         | 
|||
| 
    6
    
        zak555    
     25.08.11 
            ✎
    10:07 
 | 
         
        где год написан ?     
         | 
|||
| 
    7
    
        zak555    
     25.08.11 
            ✎
    10:07 
 | 
         
        *код     
         | 
|||
| 
    8
    
        zak555    
     25.08.11 
            ✎
    10:07 
 | 
         
        + переписать нах     
         | 
|||
| 
    9
    
        __Se24    
     25.08.11 
            ✎
    10:08 
 | 
         
        просто возникла необходимость слегка модернизировать данную процедуру , и вот натолкнулся .
  
        вот и хотел уточнить , может просто моих знаний нехватает для понимания данного фрагмента ....  | 
|||
| 
    10
    
        aka AMIGO    
     25.08.11 
            ✎
    10:09 
 | 
         
        (5) а что сравнивается в формате ссылки?     
         | 
|||
| 
    11
    
        __Se24    
     25.08.11 
            ✎
    10:10 
 | 
         
        (6) код в модуле проведения одного очень ключевого документа. Посему не хотелось бы случайно его "сломать" ))     
         | 
|||
| 
    12
    
        andrewks    
     25.08.11 
            ✎
    10:10 
 | 
         
        (2) с вероятностью 99,9% вызов .ТекущийДокумент() идёт ниже по тексту.
  
        так что один раз загнал в перем ТекДок (до цикла) и ТекДокПодч, и сравнивай.  | 
|||
| 
    13
    
        andrewks    
     25.08.11 
            ✎
    10:11 
 | 
         
        (10) ссылка, как ни странно :)     
         | 
|||
| 
    14
    
        zak555    
     25.08.11 
            ✎
    10:11 
 | 
         
        //******************************************************************************
  
        // глНайтиСчетФактуру(Конт,ВидСФ,ВозврПомУд) // // Параметры: // Конт - текущий контекст формы документа // ВидСФ - (Строка) - название вида документа (счета фактуры) // ВозврПомУд - 1 - возвращать и помеченный на удаление СФ, 0 - не возвращать. // Значение по умолчанию 1. // // Возвращаемое значение: // Найденный счет-фактура или "" // // Описание: // Функция ищет счет-фактуру документа среди подчиненных документов // Функция глНайтиСчетФактуру(Конт,ВидСФ,ВозврПомУд=1) Экспорт Перем ДокПодч; СФПомНаУд = ""; // проверяем чтобы был записан всегда! Если (Конт.Выбран() = 1) Тогда ДокПодч = СоздатьОбъект("Документ"); ДокПодч.ВыбратьПодчиненныеДокументы(,,Конт.ТекущийДокумент()); Пока ДокПодч.ПолучитьДокумент()=1 Цикл Если ДокПодч.Вид() = ВидСФ Тогда ТекСФ = ДокПодч.ТекущийДокумент(); Если ТекСФ.ПометкаУдаления() = 1 Тогда Если (ПустоеЗначение(СФПомНаУд) = 1) И (ВозврПомУд = 1) Тогда СФПомНаУд = ТекСФ; КонецЕсли; Иначе Возврат ТекСФ; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; Возврат СФПомНаУд; КонецФункции // глНайтиСчетФактуру()  | 
|||
| 
    15
    
        zak555    
     25.08.11 
            ✎
    10:12 
 | 
         
        (11) какие функции у ключевого документа ?     
         | 
|||
| 
    16
    
        aka AMIGO    
     25.08.11 
            ✎
    10:12 
 | 
         
        (13) а я думал, ID-ы :)
  
        вообще-то вопрос надо задавать разработчикам языка и платформы..  | 
|||
| 
    17
    
        __Se24    
     25.08.11 
            ✎
    10:13 
 | 
         
        Не , не о какой "оптимизации быстродействия" там речи не идет , там документ , просто проверяет есть ли докуметы такого типа ранее , и если нету . делает сторно по регистру .
  
        (15) Приходная накладная )))  | 
|||
| 
    18
    
        zak555    
     25.08.11 
            ✎
    10:14 
 | 
         
        (17) а это что за документ 87     
         | 
|||
| 
    19
    
        __Se24    
     25.08.11 
            ✎
    10:25 
 | 
         
        (18)Приходная накладная )     
         | 
|||
| 
    20
    
        zak555    
     25.08.11 
            ✎
    10:26 
 | 
         
        (19) это основание
  
        а сам док в (0)  | 
|||
| 
    21
    
        __Se24    
     25.08.11 
            ✎
    10:31 
 | 
         
        А тоже приходная     
         | 
|||
| 
    22
    
        __Se24    
     25.08.11 
            ✎
    10:32 
 | 
         
        приходная на основании приходной     
         | 
|||
| 
    23
    
        zak555    
     25.08.11 
            ✎
    13:00 
 | 
         
        (22) смысл какой тогда ?     
         | 
|||
| 
    24
    
        KishMish    
     25.08.11 
            ✎
    13:30 
 | 
         
        (0) Может автор так хитро использует.
  
        пример есть два ВИДА документа с одинаковым представлением. тогда есть разница между Если строка(докПодч)<>строка(ТекущийДокумент()) Тогда и Если докПодч.ТекущийДокумент()<>ТекущийДокумент() Тогда  | 
|||
| 
    25
    
        1Сергей    
     25.08.11 
            ✎
    13:32 
 | 
         
        (24)+1
  
        Часто у документов для доп.табличной части представление такое же как у головного документа  | 
|||
| 
    26
    
        __Se24    
     25.08.11 
            ✎
    14:53 
 | 
         
        (24) и (25) совершенно правы !
  
        введен подвид документа , но по сути это один документ !  | 
|||
| 
    27
    
        mad hatter    
     25.08.11 
            ✎
    15:08 
 | 
         
        (0) теоретицски возможно ложное равенство     
         | 
|||
| 
    28
    
        Aprobator    
     25.08.11 
            ✎
    15:12 
 | 
         
        есть подозрение, что получение, что Представления документов быстрее получить и сравнить, чем сравнивать непосредственно документы. Но надо смотреть.
  
        (26) В конфе подвид все равно отдельным видом стоит. Но надо посмотреть, как получается его представление (оно же вроде с синонима берется).  | 
|||
| 
    29
    
        __Se24    
     25.08.11 
            ✎
    15:34 
 | 
         
        строковое представление , это чтото типа 
  
        "ПриходнаяНакладная Т-02301 от 23.08.2011" дата добавляется , если есть периодничность в номерах год . собственно все .... короч , я решил что цепуха .и все переписал ))) работает как-будто и ничего не меняли ))  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |