|
v8: КД: передача параметров в алгоритм | ☑ | ||
---|---|---|---|---|
0
Aleksei_Pro
10.08.12
✎
17:20
|
Создал алгоритм "ОбойтиУровеньДерева", в нем процедуру написал:
Процедура ОбойтиУровеньДерева(Строки) Для каждого Строка из Строки Цикл //что-то делаем со строкой, например: Сообщить(Строка.ИмяСуществующегоВСтрокеРеквизита); ОбойтиУровеньДерева(Строка.Строки); КонецЦикла; КонецПроцедуры Этот алгоритм запускается из справочника "Контрагенты" в после выгрузке ПКО, есть запрос: Дерево = Новый ДеревоЗначений; запрос_2 = новый запрос; запрос_2.Текст = "ВЫБРАТЬ "; запрос_2.УстановитьПараметр("Владелец",Источник); Дерево = запрос_2.выполнить().Выгрузить(); Выполнить(ОбойтиУровеньДерева()); Вопрос как передать дерево в алгоритм? через параметр? |
|||
1
Aleksei_Pro
10.08.12
✎
17:26
|
(0) не так написал:
запрос_2.УстановитьПараметр("Владелец",Источник); Дерево = запрос_2.выполнить().Выгрузить(); Выполнить(Алгоритмы.ОбойтиУровеньДерева); |
|||
2
Popkorm
10.08.12
✎
17:26
|
(0)ОбойтиУровеньДерева(Дерево);
|
|||
3
Mort
10.08.12
✎
17:28
|
запрос_2.выполнить().Выгрузить() - это не дерево. Кури параметры функции Выгрузить()
|
|||
4
Aleksei_Pro
10.08.12
✎
17:28
|
Выполнить(Алгоритмы.ОбойтиУровеньДерева(Дерево.Строки)); // т.е так взлетит?
|
|||
5
Aleksei_Pro
10.08.12
✎
17:28
|
(3) я знаю "ОбходРезультатаЗапроса.ПоГруппировкамСИерархией"
|
|||
6
Asmody
10.08.12
✎
17:29
|
в терминах языка 1С это называется "процедура", у вас она объявлена с параметром 'строки', вот и вызывать ее надо с этим параметром
ОбойтиУровеньДерева(Дерево.Строки); |
|||
7
Йохохо
10.08.12
✎
17:29
|
(ИсходящиеДанные = "", ВходящиеДанные = "", Источник = "", Приемник = "", ТипПриемника = "", Значение = "", Выражение = "",
Пусто = "", ВыборкаДанных = "", Объект = "", КоллекцияОбъектов = "", ОбъектКоллекции = "", ИмяПКО = "", ИмяПКОВидСубконто = "", НомерПКО = "", НомерПКС = "", Правило = "", КлючВыгружаемыхДанных = "", НеЗапоминатьВыгруженные = "", НеЗамещатьОбъектПриЗагрузке = "", ВсеОбъектыВыгружены = "", ТолькоПолучитьУзелСсылки = "", РежимЗаписи = "", РежимПроведения = "", СтандартнаяОбработка = "", НеЗамещать = "", НеОчищать = "", УзелСсылки = "", УзелКоллекцииОбъектов = "", УзелОбъектаКоллекции = "", УзелСвойства = "", ВидСубконто = "", Субконто = "", Отказ = "") |
|||
8
andrewks
10.08.12
✎
17:31
|
ты прямо в алгоритме прописал
Процедура ОбойтиУровеньДерева(Строки) и у тебя работает? |
|||
9
Йохохо
10.08.12
✎
17:31
|
(6) не, в кд ^^, это "параметры" "функции" алгоритм
|
|||
10
andrewks
10.08.12
✎
17:32
|
чё-то я нихрена не понял, это конвертация, или чё?
|
|||
11
andrewks
10.08.12
✎
17:33
|
короче, если я правильно понял, и это КД, то да - через параметр
|
|||
12
Popkorm
10.08.12
✎
17:35
|
(0)вот ты блин........в запросе группировку, делай потом:
ЁкорныйТы = запрос_2.выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ЁкорныйТы и будит тебе ДеревоЗначений; |
|||
13
Aleksei_Pro
10.08.12
✎
17:36
|
(11) да это КД, я процедуру прописал в алгоритме, в процедуру мне надо передать "Дерево.Строки", а параметр если - какой тип ему задать?
|
|||
14
Aleksei_Pro
10.08.12
✎
17:36
|
(12) кури (5) , я знаю
|
|||
15
andrewks
10.08.12
✎
17:38
|
(13) не надо в алгоритме начинать с "Процедура бла-бла-бла"
параметры юзай как хочешь, можешь даже не прописывать явно на закладке "Параметры" - это же обычная стркутура, добавь значение перед вызовом алгоритма, а в самом алгоритме извлекай |
|||
16
Йохохо
10.08.12
✎
17:40
|
в (7) посте ответ ) первый параметр будет доступен в алгоритме как ИсходящиеДанные
|
|||
17
andrewks
10.08.12
✎
17:41
|
(16) ну да, можно и через исходящие. я через параметры привык
|
|||
18
Aleksei_Pro
10.08.12
✎
17:43
|
(16) не вижу (7), можно подробнее запутался уже
|
|||
19
andrewks
10.08.12
✎
17:44
|
(18) при вызове алгоритма ОбойтиУровеньДерева(ЗдесьТвоёЗначение)
можешь в самом алгоритме обращаться к этому значению как ИсходящиеДанные |
|||
20
Aleksei_Pro
10.08.12
✎
17:45
|
(16) Т.е так:
Дерево = Новый ДеревоЗначений; запрос_2 = новый запрос; запрос_2.Текст = "ВЫБРАТЬ "; запрос_2.УстановитьПараметр("Владелец",Источник); Дерево = запрос_2.выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Дерево = запрос_2.выполнить().Выгрузить(); Выполнить(Алгоритмы.ОбойтиУровеньДерева(Дерево.Строки)); И уже алгоритм: Процедура ОбойтиУровеньДерева(Строки) Для каждого Строка из Строки Цикл //что-то делаем со строкой, например: Сообщить(Строка.ИмяСуществующегоВСтрокеРеквизита); ОбойтиУровеньДерева(Строка.Строки); КонецЦикла; КонецПроцедуры |
|||
21
andrewks
10.08.12
✎
17:46
|
блеать, опять процедура...
выкини процедуру! |
|||
22
Aleksei_Pro
10.08.12
✎
17:47
|
ок понял
|
|||
23
Aleksei_Pro
10.08.12
✎
17:48
|
(21) тогда не понял как цикл строить, ведь передаю "Дерево.Строки"
|
|||
24
andrewks
10.08.12
✎
17:49
|
если в параметрах -
Строки=Параметры["НазваниеТвоегоПараметра"] Для каждого Строка из Строки Цикл если через исходящие - то просто Для каждого Строка из ИсходящиеДанные Цикл |
|||
25
Aleksei_Pro
10.08.12
✎
17:55
|
пишет метод объекта не обнаружен "ОбойтиУровеньДерева":
запрос_2.УстановитьПараметр("Владелец",Источник); Дерево = запрос_2.выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Выполнить(Алгоритмы.ОбойтиУровеньДерева(Дерево.Строки)); |
|||
26
acsent
10.08.12
✎
17:57
|
алгоритм без параметра, а вызывать
Строки = запрос_2.выполнить().Выгрузить().Строки; Выполнить(Алгоритмы.ОбойтиУровеньДерева); ---- Для каждого Строка из Строки Цикл //что-то делаем со строкой, например: Сообщить(Строка.ИмяСуществующегоВСтрокеРеквизита); Строки = Строка.Строки; Выполнить(Алгоритмы.ОбойтиУровеньДерева); КонецЦикла |
|||
27
Infsams654
10.08.12
✎
17:59
|
(25) Выполнить(<Строка>)
|
|||
29
andrewks
10.08.12
✎
18:01
|
(25) в каких академиях учат этой хрени?
Выполнить(Алгоритмы.ОбойтиУровеньДерева(Дерево.Строки)); алгоритм вызывает так: ОбойтиУровеньДерева(); (если без исходящих) |
|||
30
Bugmenot
10.08.12
✎
18:10
|
(0)
//Допустим это не управляемые формы, а обычные //Где находится процедура? В общем модуле? Допустим в общем модуле: Общий_модуль Процедура ОбойтиУровеньДерева(Строки) Для каждого Строка из Строки Цикл //что-то делаем со строкой, например: Сообщить(Строка.ИмяСуществующегоВСтрокеРеквизита); ОбойтиУровеньДерева(Строка.Строки); КонецЦикла; КонецПроцедуры //Допустим этот код в МОДУЛЕ ОБЪЕКТА справочника находится: Дерево = Новый ДеревоЗначений; запрос_2 = новый запрос; запрос_2.Текст = "ВЫБРАТЬ "; запрос_2.УстановитьПараметр("Владелец",Источник); Дерево = запрос_2.выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); //Терь вызываем твою процедуру: Общий_модуль.ОбойтиУровеньДерева(Дерево.Строки); //Типа всё. |
|||
31
Bugmenot
10.08.12
✎
18:16
|
Тоже, если алгоритм находится не в общем модуле, а прям за запросом в модуле объекта(или формы) справочника:
//Допустим этот код в МОДУЛЕ ОБЪЕКТА справочника находится: Процедура ОбойтиУровеньДерева(Строки) Для каждого Строка из Строки Цикл //что-то делаем со строкой, например: Сообщить(Строка.ИмяСуществующегоВСтрокеРеквизита); ОбойтиУровеньДерева(Строка.Строки); КонецЦикла; КонецПроцедуры Процедура ПроцедураВызывающаяЗапрос() //... ля ля ля какие-то действия Дерево = Новый ДеревоЗначений; запрос_2 = новый запрос; запрос_2.Текст = "ВЫБРАТЬ "; запрос_2.УстановитьПараметр("Владелец",Источник); Дерево = запрос_2.выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); //Терь вызываем твою процедуру: ОбойтиУровеньДерева(Дерево.Строки); //.... КонецПроцедуры //ПроцедураВызывающаяЗапрос() //Типа всё. |
|||
32
Йохохо
10.08.12
✎
18:17
|
(31) ты всё еще не угадал
|
|||
33
Bugmenot
10.08.12
✎
18:21
|
(32)
Поди угадай. Хм... прочитал буквы КД :) Согласен. Не угадал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |