Имя: Пароль:
1C
1С v8
Сравнение в условие ЕСЛИ
,
0 XiPyPg2012
 
09.10.13
10:34
Как в условие сравнить со списком значений
ВидДоговораСоглашения  = новый СписокЗначений;
    ВидДоговораСоглашения.Добавить(Справочники.ПЛ_ВидыВзаиморасчетов.Растениеводство);
    ВидДоговораСоглашения.Добавить(Справочники.ПЛ_ВидыВзаиморасчетов.СтроительнаяТехника);
    если не (ТекущийОбъект.Договор.ПЛ_ВидВзаиморасчетов в ВидДоговораСоглашения и ТекущийОбъект.Соглашение.ПЛ_ВидВзаиморасчетов в ВидДоговораСоглашения) тогда
- как это сделать правильно???

Потому что, вот это сказали не красиво и надо переделать -

    Если не(ТекущийОбъект.Договор.ПЛ_ВидВзаиморасчетов = Справочники.ПЛ_ВидыВзаиморасчетов.Растениеводство
        ИЛИ ТекущийОбъект.Договор.ПЛ_ВидВзаиморасчетов = Справочники.ПЛ_ВидыВзаиморасчетов.СтроительнаяТехника
        ИЛИ ТекущийОбъект.Соглашение.ПЛ_ВидВзаиморасчетов = Справочники.ПЛ_ВидыВзаиморасчетов.Растениеводство
        ИЛИ ТекущийОбъект.Соглашение.ПЛ_ВидВзаиморасчетов = Справочники.ПЛ_ВидыВзаиморасчетов.СтроительнаяТехник) Тогда
1 Зойч
 
09.10.13
10:35
Лучше Соответствие делать
2 Maxus43
 
09.10.13
10:36
чойто некрасиво и неправильно то? Эстеты чтоли?
3 XiPyPg2012
 
09.10.13
10:40
а смысл
Соответствие = новый Соответствие;
Соответствие.Вставить(Растениеводство,Справочники.ПЛ_ВидыВзаиморасчетов.Растениеводство);
Соответствие.Вставить(СтроительнаяТехника,Справочники.ПЛ_ВидыВзаиморасчетов.СтроительнаяТехника);
для каждого СтрокаСоответствия из Соответствие цикл
если не (ТекущийОбъект.Договор.ПЛ_ВидВзаиморасчетов =СтрокаСоответствия.Значение или ТекущийОбъект.Соглашение.ПЛ_ВидВзаиморасчетов = СтрокаСоответствия.Значение) тогда

как-то не лучше
4 Rie
 
09.10.13
10:42
(3) Лучше. Соответствие - один раз сделал, дальше пользуешься.
Кроме того, не надо перебирать строки соответствия. Индексатор используй.
5 Rie
 
09.10.13
10:43
+(4) Со стандартными методами соответствия - оно и чуток быстрее будет. Поскольку там - хеш-таблица внутри.
6 Defender aka LINN
 
09.10.13
10:44
ВидДоговораСоглашения.НайтиПоЗначению<>Неопределено
7 bugz2003
 
09.10.13
10:44
ВидДоговораСоглашения  = новый СписокЗначений;
    ВидДоговораСоглашения.Добавить(Справочники.ПЛ_ВидыВзаиморасчетов.Растениеводство);
    ВидДоговораСоглашения.Добавить(Справочники.ПЛ_ВидыВзаиморасчетов.СтроительнаяТехника);


Если ВидДоговораСоглашения.НайтиПоЗначению(екущийОбъект.Договор.ПЛ_ВидВзаиморасчетов) <> Неопределено
8 XiPyPg2012
 
09.10.13
10:44
можешь переделать как с индексатором, я соответствием никогда не пользовался
9 XiPyPg2012
 
09.10.13
10:45
(7) Спасибо.
10 Зойч
 
09.10.13
10:47
Соответствие.Вставить(Растениеводство,Справочники.ПЛ_ВидыВзаиморасчетов.Растениеводство, ИСТИНА);

Если Соответствие[ТекущийОбъект.Договор] <> Неопределено
11 XiPyPg2012
 
09.10.13
10:48
(10) спасибо
12 XiPyPg2012
 
09.10.13
10:49
Соответствие.Вставить(Растениеводство,Справочники.ПЛ_ВидыВзаиморасчетов.Растениеводство, ИСТИНА);
Соответствие.Вставить(СтроительнаяТехника,Справочники.ПЛ_ВидыВзаиморасчетов.СтроительнаяТехника, ИСТИНА);
Если Соответствие[ТекущийОбъект.Договор.ПЛ_ВидыВзаиморасчетов] <> Неопределено или [ТекущийОбъект.Соглашение.ПЛ_ВидыВзаиморасчетов] <> Неопределено - так что-ли?
13 XiPyPg2012
 
09.10.13
11:13
слишком много фактических параметров пишет
14 Rie
 
09.10.13
11:15
(13) Как определил Соответствие?
15 Rie
 
09.10.13
11:18
+(14) Хм... Несущественно.
У метода Вставить - 2 параметра. У тебя указано 3.
2 + 2 = 3.9999999999999999999999999999999...