Имя: Пароль:
1C
1С v8
Количество параметров функции
,
0 yuch
 
26.11.12
17:16
Для удобства сделал некую свою функцию которая возвращает мне структуру.
Так вот функция имеет 40 необязательных параметров. Но вот беда, когда вызываю эту функцию переданных параметров нет (Инфа 146%).
Уменьшив количество параметров до 20, все стало чудесно работать.
Это что же получается, в 1С есть ограничение на количество параметров?
1 qeos
 
26.11.12
17:16
жесть
2 mikecool
 
26.11.12
17:17
(1) +1
3 mikecool
 
26.11.12
17:17
(0) научись теперь структуру передавать в функцию параметром
4 yuch
 
26.11.12
17:19
(3) А по сабжу есть что сказать?  
Мне бы понять, это глюк 1С или так задумано. Только и всего.
5 Kashemir
 
26.11.12
17:19
(0) Есть. Причем это лабуда не документирована и может возникать (а может и не возникать) при 40 + параметрам. Когда-то еще на 8.0 с этим сталкивался - мистическая ерунда какая-то
6 ПиН
 
26.11.12
17:20
(0) продолжайте наблюдения
7 mikecool
 
26.11.12
17:20
(4) я тебе по сабжу и сказал, иначе - передавать 40 параметров - это же пипец какой то, нечитаемость детектед
8 qeos
 
26.11.12
17:21
(0) а как ты умудряешься не ошибиться?
9 yuch
 
26.11.12
17:21
(5) Спасибо за ответ. Буду иметь в виду.
10 mikecool
 
26.11.12
17:22
(9) вы реально нашли друг друга )
11 Kashemir
 
26.11.12
17:23
(10) Зря потешаешся. Там типовая функция какая-то была а-ля сформировать проводку которая сама по себе была была 30+ параметров.
12 Pro-tone
 
26.11.12
17:23
(0)а зачем это надо 40 параметров (к-рые нельзя запихнуть в структуру)? Можно пример в студию.
13 oleg_km
 
26.11.12
17:23
(10) Интересно, сколько строчек получается вызов? Даже пробовать не хочется
14 yuch
 
26.11.12
17:23
(7) Обращаю ваше внимание на то что параметры необязательные.
15 mikecool
 
26.11.12
17:24
(11) я не потешаюсь, просто вас двое, которые когда-либо с этим столкнулись
16 oleg_km
 
26.11.12
17:24
(12) чего-то мне кажется и со структурой-то перебор. Не иначе реализация кнопки "СДЕЛАТЬ ВСЕ"
17 Reset
 
26.11.12
17:25
Не поленился попробовать. Работает.

Функция ф(
   а01="*",
   а02="*",
   а03="*",
   а04="*",
   а05="*",
   а06="*",
   а07="*",
   а08="*",
   а09="*",
   а10="*",
   а11="*",
   а12="*",
   а13="*",
   а14="*",
   а15="*",
   а16="*",
   а17="*",
   а18="*",
   а19="*",
   а20="*",
   а21="*",
   а22="*",
   а23="*",
   а24="*",
   а25="*",
   а26="*",
   а27="*",
   а28="*",
   а29="*",
   а30="*",
   а31="*",
   а32="*",
   а33="*",
   а34="*",
   а35="*",
   а36="*",
   а37="*",
   а38="*",
   а39="*",
   а40="*")
   Сообщить(а40);
КонецФункции

ф();

18 Kashemir
 
26.11.12
17:25
(12) Вопрос не том что нельзя ... а в том что будет если... ;-)
19 Kashemir
 
26.11.12
17:26
(17) В том то и мистика - иногда работает - а иногда последние параметры пустые приходят. Мне коллега показал - сам сперва не верил - потом проверил ... и опа :)
20 rs_trade
 
26.11.12
17:26
че пристали к человеку. 40 параметров нормуль же. вот 400 многовато.
21 Reset
 
26.11.12
17:27
(19) Возможно, я не сталкивался.
22 rs_trade
 
26.11.12
17:27
автор, больше функций хороших и нужных. даешь функцию с сотней параметров!
23 Pro-tone
 
26.11.12
17:27
(16) по идее теоретически можно вообще одну функцию написать в конфе, которая будет все делать, только зачем это надо? )
24 mikecool
 
26.11.12
17:27
(19) есть правило(мб неписанное) - в конце должны идти паарметры со значениями по умолчанию
25 yuch
 
26.11.12
17:27
И так. Есть некие процедуры и функции которым в качестве параметра передается структура. В структуре может быть дофига много ключей, а может и не быть этих довига много ключей.
Передавать конструкцию Новый Структура("праметр1,праметр2, праметр3, и.т.д", Зн1, зн2, Зн3, и т.д), при большом количестве ключей, плохо читабельна.
А вот функция типа Структура("Параметр1", Значение1, Параметр2, Значение) намного лучше читабельней.
26 Kashemir
 
26.11.12
17:28
Есть подозрение что это следствие ограничение стека параметров вызываемой функции
27 Kashemir
 
26.11.12
17:28
(24) И зачем ты мне это говоришь ?
28 Reset
 
26.11.12
17:29
(25) Да ладно, имяф(,,,,,,,,,,,45,,,,,,,,,,"хз",,,,,4,,,45,,,,,)
Читабельно ?
29 Aprobator
 
26.11.12
17:29
(14) отдай параметры структурой тоже.
30 Reset
 
26.11.12
17:29
(28) Это ж проклянешь автора, пока запятые сочтешь
31 yuch
 
26.11.12
17:29
(28) Таки да. Инфа 146%.
32 mikecool
 
26.11.12
17:30
(27) затем, что при
Функция(А, Б="", С) С будет зачастую приходить пустым
33 Kashemir
 
26.11.12
17:30
(32) Умный какой. А если ты передал все параметры  ?
34 mikecool
 
26.11.12
17:30
(29) не тормози )))
35 mikecool
 
26.11.12
17:31
(33) да мне сугубо пох, я поделился своим наблюдением, суть - экспертным знанием
36 Reset
 
26.11.12
17:31
(32) Это нельзя будет вызвать без 3х параметров
37 Reset
 
26.11.12
17:32
точнее без третьего
38 Kashemir
 
26.11.12
17:32
(35) Спасибо, мне уже и свое экспертное знание некуда класть :)
39 samozvanec
 
26.11.12
17:32
раскидать структуру по строчкам не катит? типа
Новый Структура("П1, П2, П3, П4, П5"
   ,П1
   ,П2
   ,П3
   ,П4
,П5)
40 Kashemir
 
26.11.12
17:33
(36) Можно - но без явного определения значений. Тип Ф(1,,2)
41 Aprobator
 
26.11.12
17:33
(34) сам снимись )
42 mikecool
 
26.11.12
17:33
(36) exactly
(38) я обычно на унитазе откладываю )
43 Kashemir
 
26.11.12
17:34
(42) Ясно - ну успехов в откладывании.
44 Reset
 
26.11.12
17:34
(40) ну я это и имел в виду. И что, возможно что не 2 там?
45 Kashemir
 
26.11.12
17:37
(44) Не понял вопроса. Но если говорить о моем эксперименте, для чистоты были использованы определены все параметры вызываемой функции. При этом в районе ~40 параметра входящие значения уже были неопределены
46 Reset
 
26.11.12
17:39
(45) Ну, как в (40), только 40 параметров и в сороковом передано конкретное значение, а в функции там Неопределено, а не то что передали?
47 Kashemir
 
26.11.12
17:41
(46) Ага, на вход подали конкретные значения, а вот в области видимости функции параметры были неопределены
48 Reset
 
26.11.12
17:41
попробовал (17) выполнить так
ф(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50);

В последнем 50, как и полагается. Похоже действительно плавающая ошибка. Или я не так тестирую :)
49 Kashemir
 
26.11.12
17:43
(48) Как я говорил, у меня кроме идеи (26) никаких других правдоподобных версий не осталось. Попробуй вызывать с 50 параметрами ссылочного типа :)
50 Reset
 
26.11.12
17:43
(49) Отложу до пятницы :)
51 Kashemir
 
26.11.12
17:44
+(49) Плюс возможно там были переменные "Знач" - вопрос поднимался года 4 назад - смутно помню точные условия для воспроизведения :)
52 Steel_Wheel
 
26.11.12
17:45
(1) Жесть
(0) А теперь удивись: в функции можно и передавать структуры. Создаешь структуру с 40 параметрами и передаешь. При вызове структуру валидируешь
53 Reset
 
26.11.12
17:46
Ну да, приходит в голову нехватка стека, что, таки, странно. Даже при Знач в стек не объекты пихаются, а ссылки (не в 1с смысле)
54 Reset
 
26.11.12
17:47
(52) Идея со структурой оригинальна, до сих пор никто не догадался предлжить
55 Reset
 
26.11.12
17:48
вот если эту ф с 40 параметрами, да в глубокую рекурсию...
56 myk0lka
 
26.11.12
17:50
(54)В (3) вменяемый человек сразу это предложил....
57 Kashemir
 
26.11.12
17:51
(56) Еще одно неожиданное наблюдение :)
58 Kashemir
 
26.11.12
17:53
(55) Глубокая рекурсия и без параметров отлично положит предприятие :D
59 orefkov
 
26.11.12
18:29
(28)
Со снегопатом -  вполне :)
60 Reset
 
26.11.12
18:32
(59) Подсказывает имя соотв. параметра по курсору? Прикольно.
61 Kashemir
 
26.11.12
18:34
(60) Телепат - главное о чем я жалел при переходе на 8 :) Орехов молоток :)
62 orefkov
 
26.11.12
19:30
63 Живой Ископаемый
 
26.11.12
20:32
(5) капец, так спалиться на копрокодерстве...
64 Нуф-Нуф
 
26.11.12
20:42
40 параметров у функции - имхо признак говвнокода.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn