Имя: Пароль:
1C
1С v8
Передача параметров в процедуру. Структура или отдельные переменные.?
0 bizon2008
 
25.02.13
13:59
Доброго дня. Во задумался. Что удобней, эффективней. При передачи параметров в процедуру. Структура или отдельные переменные?
Структура удобна, можно что хошь предать, но ее надо создать и заполнить
Куча отдельных переменных пока мало ничего, но чем больше тем все непрозрачно.
А как делаете вы, уважаемые мистяне?
1 ДенисЧ
 
25.02.13
14:00
Если параметров до 5 - то явно. Иначе надо задумываться.
2 Тролль главный
 
25.02.13
14:00
(0) создаем объект и заполняем его атрибуты
3 yuch
 
25.02.13
14:01
Если параметров много то через структуру.
4 bizon2008
 
25.02.13
14:30
В общем, стандарта нет.
5 fisher
 
25.02.13
15:25
Откуда ж ему взяться, стандарту-то?
Я обычно выделяю часть параметров в структуру, когда они явно представляют собой одну смысловую группу.
Т.е. исключительно с точки зрения читабельности и удобства.
Безликие структуры создавать как-то глупо.
Обычно, когда число параметров растет, они так или иначе бьются на смысловые группы и проблемы чего и как именно объединять - не возникает.
6 MSII
 
25.02.13
15:30
Первые три параметра - переменными, если больше, то остальные, начиная с четвертого, в структуру с именем ДополнительныеПараметры. Более-менее универсально получается.
7 bizon2008
 
25.02.13
16:11
Но структуру, надо при каждый вызове процедуры описывать и заполнить. А это тоже код, и причем часто дублирующийся.
8 Тролль главный
 
25.02.13
16:14
(7) там одна строка
9 Принт
 
25.02.13
16:15
(0) Было бы о чем задумываться.
10 bizon2008
 
25.02.13
16:17
(8)Кинь пример.
11 bizon2008
 
26.02.13
12:19
апну, может интересное напишут.
12 Feunoir
 
26.02.13
12:25
(10) СтруктураПараметров = Новый (Структура);
13 Feunoir
 
26.02.13
12:25
СтруктураПараметров = Новый Структура;

конечно-же :)
14 Очкарик
 
26.02.13
12:26
да хоть через таблицу значений
15 kosts
 
26.02.13
12:28
(11) Уже не помню, когда много параметров в процедуре делал.
Стараюсь разбивать сложные процедуры на отдельные.
16 beer_fan
 
26.02.13
12:30
Я еще через структуру делаю, когда есть неопределенности при создании функции. То есть если неизвестно, сколько параметров в итоге будет передаваться, поэтому, чтобы не переделывать потом вызов, просто структуру создаю.
17 olegves
 
26.02.13
12:51
Если в локальной сети, то без разницы, а если в тонком клиенте через Инет, то только структура
18 bizon2008
 
26.02.13
22:59
Спасибо парни за ответы. Узнал много нового.
Но как аляповато со структурой получается. Может можно ее как-то компактней писать?
Вот пример.
 ПараметрыСписанияПередать = Новый Структура;
 ПараметрыСписанияПередать.Очистить();
 ПараметрыСписанияПередать.Вставить("Фирма", Фирма);
 ПараметрыСписанияПередать.Вставить("Склад", Склад);
 ПараметрыСписанияПередать.Вставить("Дата", Дата);
 ПараметрыСписанияПередать.Вставить("Товары", тзНоменклатураКоличесво);
 ПараметрыСписанияПередать.Вставить("МоментВремениДляРассчета", МоментВремени());
 ПараметрыСписанияПередать.Вставить("Движения", Движения);
19 Asmody
 
26.02.13
23:03
(18) посмотри в СП конструктор структуры, может на мысли натолкнет
20 zak555
 
26.02.13
23:06
(18)

ПараметрыСписанияПередать = Новый Структура("Фирма,Склад,Дата,Товары,МоментВремениДляРассчета,Движения",Фирма,Склад,Дата,тзНоменклатураКоличесво,МоментВремени(),Движения);
21 bolder
 
26.02.13
23:07
(0) Как в типовых.Создается структура,а элементами ее могут быть другие структуры.
22 Фокусник
 
26.02.13
23:08
(18) Струк=Новый Структура("парам1","парам2",1,2)
23 bizon2008
 
26.02.13
23:10
(19)(20)Спасибо. Но хрен редки не слаще, получается длинная строка. Плюс повышается возможность накосячить.
24 zladenuw
 
26.02.13
23:11
(23) можно отдельно в функцию или процедуру. а передавать список параметров и заполнять.
25 bizon2008
 
26.02.13
23:11
+(23)Длинная строка плохо читабельна.
26 bizon2008
 
26.02.13
23:12
(24)zladenuw - это как?
27 Asmody
 
26.02.13
23:14
Я иногда пишу функции, возвращающие нужные структуры и заполняющие параметры. Вызов превращается в нечто
ОсновнаяФункция(
  ЗаполнитьГруппуПараметров2(
      ЗаполнитьГруппуПараметров1(
          СтруктураПараметров("Свойство1, Свойство2...")
     , Параметр1,Параметр2..)
  Параметр11, Параметр22)
);
28 zak555
 
26.02.13
23:19
(27) упростить никак ?
29 Asmody
 
26.02.13
23:20
(28) можно, но в некоторых случаях так понятнее
30 YHVVH
 
26.02.13
23:31
(0) правильней вообще не передавать , только через свойства объекта.
31 Asmody
 
26.02.13
23:43
(30) да, только не всегда можно передать  объект
32 Тролль главный
 
26.02.13
23:57
тут и проблема: РБД или ООП
33 zladenuw
 
27.02.13
00:09
(27) прикольно
34 GANR
 
27.02.13
00:33
отдельные переменные, представляющие собой структуры
35 unregistered
 
27.02.13
00:51
ОФФ. Такая животрепещущая тема и без голосовалки.... Куда катиться миста?...
36 France
 
27.02.13
01:22
(0) явное описание всегда прозрачнее в отличие от уродских структур.
37 bizon2008
 
27.02.13
12:25
(27)Спасибо Asmody. Вариант бесспорно интересный. Но мою главную проблему пложую читабельность кода он не решает. Но покопаюсь в этом направлении, может чего придумаю.
(34)Масломасляное.
38 ptiz
 
27.02.13
12:28
(6) Обычно так и получается, когда процедуры разрастаются.
(27) Жестоко.
39 acsent
 
27.02.13
12:30
(20) за такой код - линейкой по рукам