|
Как избавиться от Выполнить? | ☑ | ||
---|---|---|---|---|
0
D_Pavel
05.12.12
✎
12:53
|
Равны = Истина;
Для каждого Реквизит из Док.ДокументОбъект.Метаданные().Реквизиты Цикл Выполнить ("Равны = Равны и Док.ДокументОбъект." + Реквизит.Имя + " = Док.РанееЗагруженныйДокументСсылка." + Реквизит.Имя + ""); КонецЦикла; |
|||
1
Лефмихалыч
05.12.12
✎
12:54
|
про квадратные скобки слышал чо-нибудь?
|
|||
2
butterbean
05.12.12
✎
12:55
|
(0) квадратные скобки тебя спасут
|
|||
3
zladenuw
05.12.12
✎
12:55
|
та да
|
|||
4
Reset
05.12.12
✎
12:55
|
ДокументОбъект[ИмяРеквизита]=Значение
|
|||
5
Reset
05.12.12
✎
12:58
|
Вообще, документ, состоящий только из булевых реквизитов, как то странен
|
|||
6
Reset
05.12.12
✎
12:58
|
Может, ТЧ должна быть или вообще не документ, а другая сущность
|
|||
7
Рэйв
05.12.12
✎
13:00
|
Если я правильно телепатирую...
Если Док.ДокументОбъект[Реквизит.Имя ] = Док.РанееЗагруженныйДокументСсылка[Реквизит.Имя ] Тогда Равны=Истина; Иначе Раны=Ложь; КонецЕсли; |
|||
8
Рэйв
05.12.12
✎
13:01
|
Раны=Ложь;
= Равны=Ложь; |
|||
9
Reset
05.12.12
✎
13:01
|
а так я бы написал без мозговывертов с "равно":
Равны=Истина; Для каждого Реквизит из .... Если Объект1[Реквизит.Имя]<>Объект2[Реквизит.Имя] тогда Равны=Ложь;Прервать; |
|||
10
Reset
05.12.12
✎
13:03
|
(5) отменяется, неверно понял смысл сначала
|
|||
11
MSII
05.12.12
✎
13:04
|
(7) И прервать, если Ложь
|
|||
12
cw014
05.12.12
✎
13:05
|
Равны = Равны
оХГДЕЖ !!! |
|||
13
Deon
05.12.12
✎
13:08
|
(12) Ну это таки будет работать, всё правильно ж ) Правда через гланды, конечно.
|
|||
14
Deon
05.12.12
✎
13:08
|
(0) А чем тебе не нравится Выполнить() ?
|
|||
15
D_Pavel
05.12.12
✎
13:12
|
(12) Хахахаха
Всем спасибо, сделал так: Равны = Истина;
|
|||
16
Deon
05.12.12
✎
13:13
|
(15) Зачем ты бежишь по всем оставшимся реквизитам, если у тебя уже в 1м найдется разница? Или тут код не полный?
|
|||
17
D_Pavel
05.12.12
✎
13:13
|
прерывать не буду, ибо реквизитов всего несколько, документ за раз всего один проверяется.
|
|||
18
Нуф-Нуф
05.12.12
✎
13:14
|
квадратные скобки уже предлагали?
|
|||
19
Рэйв
05.12.12
✎
13:14
|
(11)Ну да
(15)Извращенец:-) |
|||
20
Reset
05.12.12
✎
13:14
|
(15) После первого различия дальнейший цикл бессмыслен
|
|||
21
Reset
05.12.12
✎
13:15
|
(17) Какая разница, сколько реквизитов?
|
|||
22
Рэйв
05.12.12
✎
13:15
|
Если сильно хочется поизвращаться то хоть делай это рационально.
Равны = Док.ДокументОбъект[Реквизит.Имя] = Док.РанееЗагруженныйДокументСсылка[Реквизит.Имя]; вполне достаточно |
|||
23
Undefined vs NULL
05.12.12
✎
13:15
|
Равны = Истина;
Для каждого Реквизит из Док.ДокументОбъект.Метаданные().Реквизиты Цикл Если Не Равны Тогда Прервать; КонецЕсли; Равны = (Док.ДокументОбъект[Реквизит.Имя] = Док.РанееЗагруженныйДокументСсылка[Реквизит.Имя]); КонецЦикла; |
|||
24
D_Pavel
05.12.12
✎
13:16
|
(21) Разница большая. Если много реквизитов, то есть смысл оптимизировать скорость.
|
|||
25
Reset
05.12.12
✎
13:16
|
(23) -> (9)
|
|||
26
Рэйв
05.12.12
✎
13:16
|
(24)Если хоть один не совпал объекты уже неравны хоть там что дальше
|
|||
27
Deon
05.12.12
✎
13:16
|
(23) почему прерывание до проверки? )
|
|||
28
Reset
05.12.12
✎
13:16
|
(24) Какая разница, много реквизитов или мало?
|
|||
29
D_Pavel
05.12.12
✎
13:17
|
(22) так будет работать только совместно с Прервать
|
|||
30
Undefined vs NULL
05.12.12
✎
13:17
|
(27) какая разница?
|
|||
31
Рэйв
05.12.12
✎
13:18
|
(29)Так и надо Прервать. Тебе уже всем форумом кричат, что дальше смотреть нет смысла
|
|||
32
Deon
05.12.12
✎
13:18
|
(30) В лишнем прогоне цикла
|
|||
33
Undefined vs NULL
05.12.12
✎
13:20
|
(32) ну поставь в постусловие, оптимизатор))
|
|||
34
D_Pavel
05.12.12
✎
13:20
|
(28) -> (24)
Сделал с прервать.... Для каждого Реквизит из Док.ДокументОбъект.Метаданные().Реквизиты Цикл Если Не Док.ДокументОбъект[Реквизит.Имя] = Док.РанееЗагруженныйДокументСсылка[Реквизит.Имя] тогда ..... Прервать; КонецЕсли; КонецЦикла; |
|||
35
Deon
05.12.12
✎
13:20
|
А ваще, лучше всего писать как в (7), ибо что (15), что (22) - это всё сложночитаемый код.
|
|||
36
Reset
05.12.12
✎
13:21
|
(35) а (9) ? :)
|
|||
37
Reset
05.12.12
✎
13:21
|
в (7) как минимум лишнее присваивание переменной в цикле
|
|||
38
D_Pavel
05.12.12
✎
13:22
|
(35) В (7) операция лишние разы выполняется Равны=Истина;
|
|||
39
cw014
05.12.12
✎
13:22
|
(23)
Для каждого Реквизит из Док.ДокументОбъект.Метаданные().Реквизиты Цикл Равны = (Док.ДокументОбъект[Реквизит.Имя] = Док.РанееЗагруженныйДокументСсылка[Реквизит.Имя]); Если Не Равны Тогда Прервать; КонецЕсли; КонецЦикла; |
|||
40
Deon
05.12.12
✎
13:23
|
(36) (9) по удобочитаемости такое же, как и (7). А так да, нафиг оно определение Равны не надо.
|
|||
41
D_Pavel
05.12.12
✎
13:23
|
(39) Тут тоже лишние раз выполняется Равны =
|
|||
42
Reset
05.12.12
✎
13:23
|
в (39) тоже до дыр пытаются затереть бедную переменную
|
|||
43
Deon
05.12.12
✎
13:28
|
Равны = Истина;
НеРавны = Ложь; Для каждого Реквизит из Док.ДокументОбъект.Метаданные().Реквизиты Цикл Равны = (Док.ДокументОбъект[Реквизит.Имя] = Док.РанееЗагруженныйДокументСсылка[Реквизит.Имя]); НеРавны = (Док.ДокументОбъект[Реквизит.Имя] <> Док.РанееЗагруженныйДокументСсылка[Реквизит.Имя]); Если НЕ Равны И НЕРавны Тогда Равны = Ложь; НеРавны = Истина; Прервать; КонецЕсли; КонецЦикла; |
|||
44
Рэйв
05.12.12
✎
13:30
|
Равны = Истина;
НеРавны = Ложь; Для каждого Реквизит из Док.ДокументОбъект.Метаданные().Реквизиты Цикл Равны = (Док.ДокументОбъект[Реквизит.Имя] = Док.РанееЗагруженныйДокументСсылка[Реквизит.Имя]); Если НЕ Равны Тогда Прервать; КонецЕсли; КонецЦикла; |
|||
45
Рэйв
05.12.12
✎
13:30
|
*НеРавны = Ложь; - тоже убрать
|
|||
46
maxx079
05.12.12
✎
13:32
|
ппц.
вы что курите? |
|||
47
Рэйв
05.12.12
✎
13:33
|
(46)Готовь сани летом, а к пятнице готовься со среды :-)
|
|||
48
Deon
05.12.12
✎
13:33
|
(46)
Если Равны = НеРавны Тогда Вопрос("вы что курите?"); ... |
|||
49
Deon
05.12.12
✎
13:33
|
равны равны неравны
|
|||
50
Рэйв
05.12.12
✎
13:34
|
Равно=Равно<>Неравно
:-) |
|||
51
1Сергей
05.12.12
✎
13:35
|
(48)
Если НЕ Равны <> НеРавны Тогда Вопрос("вы что курите?"); ... |
|||
52
Кокос
05.12.12
✎
13:36
|
Для каждого Реквизит из Док.ДокументОбъект.Метаданные().Реквизиты Цикл
Если Док.ДокументОбъект[Реквизит.Имя] <> Док.РанееЗагруженныйДокументСсылка[Реквизит.Имя] Тогда Прервать; КонецЕсли; КонецЦикла; |
|||
53
AndyD
05.12.12
✎
13:36
|
писать код надо чтобы Программист понял, а не для дебилов все разжевывать
|
|||
54
Кокос
05.12.12
✎
13:36
|
блин. Равны забыл :))
|
|||
55
Deon
05.12.12
✎
13:36
|
(54) И НеРавны тоже
|
|||
56
Лефмихалыч
05.12.12
✎
13:37
|
в номинации "бессымсленная беспощада" победил (52)
|
|||
57
AndyD
05.12.12
✎
13:37
|
Если НЕ (Равны <> НеРавны)<>(Равны = НеРавны) Тогда
Вопрос("вы что курите?"); |
|||
58
Deon
05.12.12
✎
13:38
|
(53) Да кому он нужен, этот мифический Программист
|
|||
59
1Сергей
05.12.12
✎
13:38
|
(56) +1
|
|||
60
Кокос
05.12.12
✎
13:40
|
(59) да блин. с этим равны неравны :)
|
|||
61
Undefined vs NULL
05.12.12
✎
13:50
|
Равны = Истина;
Для каждого Реквизит из Док.ДокументОбъект.Метаданные().Реквизиты Цикл Если Док.ДокументОбъект[Реквизит.Имя] <> Док.РанееЗагруженныйДокументСсылка[Реквизит.Имя] Тогда Равны = Ложь; Прервать; КонецЕсли; КонецЦикла; |
|||
62
D_Pavel
05.12.12
✎
13:50
|
Всем спасибо! В следующий раз я еще что-нибудь спрошу )
|
|||
63
D_Pavel
05.12.12
✎
13:51
|
(61) Так и сделал.
|
|||
64
1Сергей
05.12.12
✎
13:52
|
(62) давай, а то до пятницы не дотянем
|
|||
65
cw014
05.12.12
✎
13:53
|
(41) По крайней мере после цикла остается переменная "Равно". А вот то что в (52) точно бессмысленно. Ну прошелся я по реквизитам, если равны все, просто по всем пролетел. Если не равны, ну не по всем пролетел - результат то где?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |