|
КД и параметры алгоритма | ☑ | ||
---|---|---|---|---|
0
Wobland
29.10.12
✎
16:41
|
продолжаю открывать для себя КД.
сделал себе алгоритм СвернутьПоНоменклатуре, при выгрузке некоторых документов он вызывается, ТЧ сворачивается, всё хорошо. а при выгрузке некоторых других документов нужен чуть другой текст запроса. что придумал: перед обработкой засовываю в Параметры флаг НужнаСтавкаНДС, а в алгоритме достаю этот флаг из Параметров и меняю текст запроса. собссно, вопрос: а как поступают белые люди в подобных ситуациях? |
|||
1
fisher
29.10.12
✎
17:10
|
Примерно так и делают.
Если нужны входящие параметры для алгоритмов (аналог функций), то обычно в параметры добавляется отдельный параметр для этих целей типа структура ("ПараметрыАлгоритмов", например). Через который передача и идёт. Динамический текст запроса - тема отдельная. По возможности стараются делать так, чтобы текст базового запроса таки можно было открывать конструктором. |
|||
2
pessok
29.10.12
✎
17:13
|
а может лучше не в структуру параметров пихать, а иметь некий глобальный обработчик, который будет проверять реквизит, а-ля. ЕстьРеквизитВТабличнойЧасти(СтрокаТабличнойЧасти)?
З.Ы. Сам не пробовал, ответ по наитию |
|||
3
Wobland
29.10.12
✎
17:13
|
>то обычно в параметры добавляется отдельный параметр
это сейчас о чём? есть же "предопределённая" структура Параметры, её разве мало? про запрос согласен, да. но у меня на входе семёрка |
|||
4
Wobland
29.10.12
✎
17:14
|
(2) что приведёт к дополнительным вызовам и увеличению времени работы. при нескольких сотнях документов только поступлений в день веду борьбу за миллисекунды ;)
|
|||
5
pessok
29.10.12
✎
17:14
|
(4) ну если вопрос стоит так, то (0) самый верный вариант
|
|||
6
fisher
29.10.12
✎
17:33
|
(3) Ну и нафига корень этой структуры засорять всякой фигней? Просто вопрос удобства. Работаешь не через Параметры, а через Параметры.ПараметрыАлгоритмов. Пока один такой параметр - вроде без разницы. А завтра их может быть сотня.
|
|||
7
Wobland
29.10.12
✎
17:34
|
(6) ладно. а что живёт в Параметрах тогда? могу соврать, точно не помню, но вроде там ничего не было в перед обработкой
|
|||
8
pessok
29.10.12
✎
17:37
|
параметры - это произвольная структура, которую ты сам заполняешь вроде
|
|||
9
Wobland
29.10.12
✎
17:39
|
(8) вот я такое же представление об этом получил. но fisher придерживается другого мнения, мне непонятного
|
|||
10
fisher
29.10.12
✎
17:44
|
Я не понимаю, почему мы друг друга не понимаем. Идея-то примитивная и лежащая на поверхности - путем создания вложенной в "Параметры" структуры, выделить параметры алгоритмов в отдельное пространство имен.
Задолбали :) Юзайте как хотите. |
|||
11
acsent
29.10.12
✎
17:45
|
НужнаСтавкаНДС = Истина;
Выполнить(Алгоритм); Хотя так не совсем по методике 1с |
|||
12
fisher
29.10.12
✎
17:47
|
(11) Он из 7.7 конвертит.
|
|||
13
Wobland
29.10.12
✎
17:48
|
(10) Параметры - Структура, в которой хранятся переменные доступные во всех обработчиках
зачем там ещё одна вложенная структура? |
|||
14
pessok
29.10.12
✎
17:49
|
(13) опередил! я тоже хотел спросить зачем одну структуру помещаьт в другую в данном разрезе. или чтобы просто было наглядно?
|
|||
15
fisher
29.10.12
✎
18:10
|
Чтобы избежать потенциальных конфликтов пространств имен.
Эти ошибки очень неприятные и трудно локализуемые. Зря, что ли, 1С пыталась отучить от глобальных переменных? Забудешь ты рано или поздно про свои параметры алгоритмов, которые там и сям программно суешь в "Параметры". И создашь одноименный параметр для совершенно других целей. И огребешь. А так - параметры алгоритмов изначально изолированы от всех остальных параметров. Считай, что вместо глобального модуля ты создал специальный общий модуль. Надеюсь, что аналогия ясна. Я и так уже сказал в пять раз больше, чем собирался :) |
|||
16
GenV
29.10.12
✎
18:17
|
(0) Стараюсь динамически текст запроса не менять - обхожусь передачей параметров в запрос или несколькими запросами.
Параметры добавляю в подструктуру с именем "Параметры_ИмяАлгоритма", если параметров много. |
|||
17
Wobland
29.10.12
✎
18:25
|
(15) от теперь доходит ;)
(16) "Параметры_ИмяАлгоритма" - отличная иллюстрация спасибо |
|||
18
Йохохо
29.10.12
✎
18:26
|
(0) можно чуть изящнее
Вызов ЗаполнитьТЗСотрудникаОрганизации(Исх, Вх, Ист, Пр) и в коде: Сотрудник = ИсходящиеДанные; ДатаСобытия = ВходящиеДанные; АвторскийДоговор = Источник; ДоговорПодряда = Приемник; |
|||
19
Wobland
29.10.12
✎
18:30
|
(18) вижу параметры в скобках.. это типа "предопределённые"? в хелпе вроде как обо этом не говорится
|
|||
20
Йохохо
29.10.12
✎
18:35
|
да, предопределенные, в коде обращение по обычному для конвертации порядку
|
|||
21
Йохохо
29.10.12
✎
18:35
|
ЗаполнитьТЗСотрудникаОрганизации(Сотрудники.ТекущийЭлемент(), РабочаяДата());
|
|||
22
Wobland
29.10.12
✎
18:39
|
не, не вижу в хелпе. надо в букварях порыться. и на том спсибо
|
|||
23
Йохохо
29.10.12
✎
18:46
|
помойму этого нет в хелпах, алгоритмы в 7.7 выгружаются с такой декларацией
Функция ЗаполнитьТЗСотрудникаОрганизации( ИсходящиеДанные = "", ВходящиеДанные = "", Источник = "", Приемник = "", ТипПриемника = "", Значение = "", Выражение = "", Пусто = "", ВыборкаДанных = "", Объект = "", КоллекцияОбъектов = "", ОбъектКоллекции = "", ИмяПКО = "", ИмяПКОВидСубконто = "", НомерПКО = "", НомерПКС = "", Правило = "", КлючВыгружаемыхДанных = "", НеЗапоминатьВыгруженные = "", НеЗамещатьОбъектПриЗагрузке = "", ВсеОбъектыВыгружены = "", ТолькоПолучитьУзелСсылки = "", РежимЗаписи = "", РежимПроведения = "", СтандартнаяОбработка = "", НеЗамещать = "", НеОчищать = "", УзелСсылки = "", УзелКоллекцииОбъектов = "", УзелОбъектаКоллекции = "", УзелСвойства = "", ВидСубконто = "", Субконто = "", Отказ = "") Далее |
|||
24
Wobland
30.10.12
✎
06:06
|
(23) ё-моё, сколько букв
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |