Среда, 15.05.2024, 09:57
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Основной » Проблемные ситуации » Значения параметров Алгоритмов по умолчанию (при программном вызове)
Значения параметров Алгоритмов по умолчанию
RizjiyДата: Понедельник, 30.09.2013, 11:21 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 4
Репутация: 0
Статус: Оффлайн
Я проникся стратегической важностью справочника Алгоритмы в нашей системе. Кроме удобства отладки через внеш. обработки также в них хорошо хранить параметры - ссылки на объекты БД. Только вот в чем трабл: Параметры различабтся в "работе" и в "отладке".
- В работе я передаю Структуру с входящим параметром:

"ирПлатформаЛокальная.ВыполнитьМетодАлгоритма(АлгоритмОбъект, 1, Новый Структура("Истичкик",ЭтотОбъект));"

Остальные параметры у меня хранит алгоритм и обращаюсь я к ним : Парам1.Значение;

-В отладке модуль формирует структуру не зависимо от настроек параметров "Входящий". И передает туда все значения.
В отладке к параметрам нужно обращаться по имени...

Вероятно нужно переделать процедуру формирования структуры параметров, чтобы туда попадали только параметры с признаком "Входящий". Но может удобнее вообще обращение ко всем параметром по имени(Отпадает надобность их определения в тексте)?

Хотелось бы услышать авторитетное мнение разработчика, дабы не потерять совместимость с будущими версиями подсистемы при написании алгоритмов.
 
tormozitДата: Понедельник, 30.09.2013, 11:33 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6199
Репутация: 159
Статус: Оффлайн
Тут читал?
http://devtool1c.ucoz.ru/index/spravochnik_algoritmy/0-9

Честно говоря хотя написано много, мне не удалось понять суть вопроса. Попробуй пояснить на примере.
 
RizjiyДата: Понедельник, 30.09.2013, 14:20 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 4
Репутация: 0
Статус: Оффлайн
Читал )) 
Пример:

Алгоритм.
Параметры:
ЭтотОбъект (ДокументОбъект.НастраиваемыйОтчет) "Вход","Выход"
Орг1 (СправочникСсылка.Организации)
Орг2 (СправочникСсылка.Организации)

Тело алгоритма:

Если ТипЗнч(ЭтотОбъект)=Тип("ДокументСсылка.НастраиваемыйОтчет") Тогда  //Отладка
    ЭтотОбъект=ЭтотОбъект.ПолучитьОбъект();
Иначе                                                                                                                             //Рабочий вызов
    Орг1=Орг1.Значение;
    Орг2=Орг2.Значение;
КонецЕсли;

//Какие-то вычисления

////////////////////
Зачем это нужно? 
-В рабочем вызове алгоритма в структуру параметров я передаю только параметр "ЭтотОбъект" с типом "ДокументОбъект.НастраиваемыйОтчет". 
-В отладке в структуру параметров попадают все параметры и к ним, в таком случае, нужно обращаться по имени.

Добавлено (30.09.2013, 12:52)
---------------------------------------------
Все вопрос снимается.
Вывывал не так(((
Нужно мануал читать лучше ((

Добавлено (30.09.2013, 14:20)
---------------------------------------------
Нет (( Вопрос Остается. Засуетился и не проверил по-нормальному. 
Хоть я вызывал не через ирИВА(СсылкаАлгоритма, СтруктураПараметров) . Смысл тот же.

Если при вызове алгоритма в "СтруктураПараметров" передать один параметр, остальные в алгоритме будут иметь тип "СправочникТабличнаяЧастьСтрока.ирАлгоритмы.Параметры"
А в Отладке (Кнопка Выполнить) они имеют тип значения. (потому что все попадают в "СтруктураПараметров")

 
tormozitДата: Понедельник, 30.09.2013, 14:26 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 6199
Репутация: 159
Статус: Оффлайн
Теперь становится понятнее. Можешь сделать демобазу для демонстрации проблемы, чтобы я мог быстро ее воспроизвести?
 
RizjiyДата: Вторник, 01.10.2013, 17:57 | Сообщение # 5
Рядовой
Группа: Проверенные
Сообщений: 4
Репутация: 0
Статус: Оффлайн
Спасибо, что откликнулись!
Демо базу времени делать нет. Но так как не понимаю, зачем нужны свойства "Вход", "Выход" и не вижу смысла обращаться к ним из тела Алгоритма, решил, что все параметры алгоритма (и экспортные и внутренние) должны быть доступны по имени. У себя изменил так:


Код
Функция ирИВА(Знач Алгоритм, Знач СтруктураПараметров = Неопределено) Экспорт

     Если СтруктураПараметров = Неопределено Тогда
        СтруктураПараметров = Новый Структура;
     КонецЕсли;
     АлгоритмОбъект = ирНеглобальный.ПолучитьАлгоритмОбъектПоИдентификаторуЛкс(Алгоритм);
       
     //***Доопределяем структуру параметрами из алгоритма 2013-09-30   
     Для Каждого Параметр Из АлгоритмОбъект.Параметры Цикл
        Если НЕ СтруктураПараметров.Свойство(Параметр.Имя) Тогда
           СтруктураПараметров.Вставить(Параметр.Имя,Параметр.Значение)
        КонецЕсли;
     КонецЦикла;
          
          
     Результат = ирКэш.Получить().ВыполнитьМетодАлгоритма(АлгоритмОбъект, 1, СтруктураПараметров);
     Возврат Результат;

КонецФункции // ирИВА()


Добавлено (30.09.2013, 14:52)
---------------------------------------------
Готов позже сделать демо пример. Главное, чтобы попало в релиз )) А то неприятно будет, если кто обновит...

Добавлено (01.10.2013, 17:57)
---------------------------------------------
Пример делать не буду, но считаю это ошибкой.
При вызове алгоритма фукнцией ирИВА, параметры, которые были сохранены в алгоритме, но не переданы в функцию, доступны с типом "СтрокаТЧ".
Постом выше - вариант заплатки. Возможно автор не считает эту особенность ошибкой, поэтому спорить не буду.

Сообщение отредактировал Rizjiy - Понедельник, 30.09.2013, 15:48
 
tormozitДата: Вторник, 01.10.2013, 19:45 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 6199
Репутация: 159
Статус: Оффлайн
Ошибка будет исправлена в следующей версии.
 
tormozitДата: Воскресенье, 06.10.2013, 21:42 | Сообщение # 7
Генералиссимус
Группа: Администраторы
Сообщений: 6199
Репутация: 159
Статус: Оффлайн
Исправлено в 2.97
 
Форум » Основной » Проблемные ситуации » Значения параметров Алгоритмов по умолчанию (при программном вызове)
  • Страница 1 из 1
  • 1
Поиск: