|   |   | 
| 
 | v7: Как-то можно получить все переданные аргументы в функцию? ↓Ø (Волшебник 07.11.2024 07:49) | ☑ | ||
|---|---|---|---|---|
| 0
    
        sysadminlk 06.11.24✎ 18:17 | 
        Можно ли как-то собрать все переданные аргументы в функцию?
 Есть ли аналог func_get_args из php в 1с? Мне нужно что-то типо того, только чтоб явно не было указано количество входящих аргументов, чтоб оно было динамическим Функция Дебаг(я1=,я2=,я3=,я4=,я5=,я6=,я7=,я8=,я9=,я0=) Экспорт Сп = СоздатьОбъект("СписокЗначений"); Сп.ДобавитьЗначение(я1); Сп.ДобавитьЗначение(я2); Сп.ДобавитьЗначение(я3); Сп.ДобавитьЗначение(я4); Сп.ДобавитьЗначение(я5); Сп.ДобавитьЗначение(я6); Сп.ДобавитьЗначение(я7); Сп.ДобавитьЗначение(я8); Сп.ДобавитьЗначение(я9); Сп.ДобавитьЗначение(я0); Стр = ""; Для н=1 По Сп.РазмерСписка() Цикл зн = Сп.ПолучитьЗначение(н); Если ТипЗначения(зн) <> 0 Тогда Стр=Стр+"("+ТипЗначенияСтр(зн)+")"+СокрЛП(зн)+" "; КонецЕсли; КонецЦикла; Сообщить(Стр,""); КонецФункции Дебаг(Логин, СпрСотр.Login); | |||
| 1
    
        big 06.11.24✎ 18:44 | 
        В параметрах передавать уже заполненный ранее список.
 Мало того, в списке значений можно передавать любые значения, причем именованные. | |||
| 2
    
        sysadminlk 06.11.24✎ 18:58 | 
        ну тогда перед 
 Дебаг(Логин, СпрСотр.Login); нужно будет сп=создатьОбъект(СписокЗначений); Сп.ДобавитьЗначение(Логин); Сп.ДобавитьЗначение(СпрСотр.Login); Дебаг(Сп); Слишком много писать приходится идея была меньше текста писать ))) | |||
| 3
    
        Builder 06.11.24✎ 19:01 | 
        (2) Бери деньги за количество кода. Будешь больше писать....     | |||
| 4
    
        Aleksey 06.11.24✎ 19:08 | 
        (2) как бы в типовых так и реализовано     | |||
| 5
    
        big 06.11.24✎ 19:37 | 
        (2) Правильнее будет так:
 сп=создатьОбъект(СписокЗначений); Сп.ДобавитьЗначение(Логин,"login"); Сп.ДобавитьЗначение(СокрЛП(СпрСотр.Login),"login_sotr"); Дебаг(Сп) Функция Дебаг(Парам) Логин = Парам.Получить("login"); СотрЛогин = Парам.Получить("login_sotr"); и т.д. и т.п. КонецФункции | |||
| 6
    
        sysadminlk 06.11.24✎ 19:40 | 
        ясно, походу никак ))     | |||
| 7
    
        Волшебник модератор 06.11.24✎ 19:55 | 
        (6) Хватит гнать хуйню на форум!
 Это тебе последнее предупреждение! | |||
| 8
    
        Злопчинский 06.11.24✎ 20:18 | 
        (6) Передавай список. или ТЗ. количество позиций в СЗ или ТЗ - неограничено. Уже ж написали. Что не подходит?
 . Опять же если что можно извернуться через Шаблон дополнительно к СЗ или тЗ | |||
| 9
    
        Волшебник 06.11.24✎ 20:22 | 
        (8) Надо передавать структуру, там поля доступны по именам.     | |||
| 10
    
        Злопчинский 06.11.24✎ 20:56 | 
        (9)(6) список значений - значения доступны по именам, за неимением структуры в клюшках подойдет.
 можно использовать АссоциативныйВектор также в 77, там еще "ближе" к нормальному именованию, типа ЧтоТо = КакойтоАссоциативныйВектор.КакоетоИмя | |||
| 11
    
        sysadminlk 06.11.24✎ 21:07 | 
        (10) Мне это нужно для вывода в одной строкой в окно сообщений нескольких переменных разных типов, так как Сообщить() не умеет делать вот так 
 Сообщить(ЧтоТо, ГдеТо, КогдаТо); | |||
| 12
    
        Злопчинский 06.11.24✎ 21:46 | 
        все выводимое в окно сообщений - приводится к строкам
 Что мешает выводить Сообщить(""+Что+Где+Когда) ? | |||
| 13
    
        Злопчинский 06.11.24✎ 21:46 | 
        опять же если у тебя заранее неизвестна конструкция строки - ты можешь сконструировать строку вывода и получить ее значение через Шаблон()     | |||
| 14
    
        sysadminlk 06.11.24✎ 22:45 | 
        Процедура Тест(Ин)
 Пер = СтрЗаменить(Ин,",",РазделительСтрок); Для _=1 По СтрКоличествоСтрок(Пер) Цикл Сообщить(Шаблон("["+СтрПолучитьСтроку(Пер,_)+"]")); КонецЦикла; КонецПроцедуры // Тест() Процедура Сформировать() Товар = "Сковородка Tefal"; Кол = 2; Цена = 1250.25; Тест("Товар,Кол,Цена,Цена*Кол"); КонецПроцедуры // Сформировать А значения переменных в Тест() как-то можно передать? Или контекст процедуры Сформировать | |||
| 15
    
        MWWRuza гуру 06.11.24✎ 22:51 | 
        Ну, вторым параметром СЗ со списком переменных передайте.
 Или, как вариант, если они в одном модуле - объявите их в начале модуля. Но, ИМХО - правильнее через параметр. | |||
| 16
    
        Злоп 07.11.24✎ 00:36 | 
        (14) как-то мутно, так и не понял ЧТО тебе надо.
 Вангую что имеет смысл глянуть сюда https://forum.dorex.pro/index.php?topic=3.0 | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |