|   |   | 
| 
 | КД и параметры алгоритма | ☑ | ||
|---|---|---|---|---|
| 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) ё-моё, сколько букв     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |