Имя: Пароль:
1C
1C 7.7
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"
дата добавляется , если есть периодничность в номерах год .
собственно все ....
короч , я решил что цепуха .и все переписал ))) работает как-будто и ничего не меняли ))