Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как передать параметр в алгоритм?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Конфигурация "1С:Конвертация данных"
Kutuzov
Алгоритм пытаюсь вызвать в "ПравилоВыгрузкиДанныхПередОбработкой"
 
Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ
|НАЧАЛОПЕРИОДА(ЛМБ_РеестрФинансовыхОпераций.Дата, ДЕНЬ) КАК ДатаДень,
|ЛМБ_РеестрФинансовыхОпераций.Филиал
|ИЗ
|Документ.ЛМБ_РеестрФинансовыхОпераций КАК ЛМБ_РеестрФинансовыхОпераций
|ГДЕ
|ЛМБ_РеестрФинансовыхОпераций.Дата МЕЖДУ &НачДата И &КонДата
|СГРУППИРОВАТЬ ПО
|ЛМБ_РеестрФинансовыхОпераций.Филиал,
|НАЧАЛОПЕРИОДА(ЛМБ_РеестрФинансовыхОпераций.Дата, ДЕНЬ)";
Запрос.УстановитьПараметр("НачДата",ДатаНачала);
Запрос.УстановитьПараметр("КонДата",ДатаОкончания);

Выборка = Запрос.Выполнить().Выбрать();
ИсходящиеДанные = Новый Структура;

Пока  Выборка.Следующий() Цикл
    ДатаДень = Выборка.ДатаДень; // Вот тот параметр который мне надо
    Выполнить(Агоритмы.ГрПредметовВО); //ошибка выскакивает вот тут
    ИсходящиеДанные.Вставить("Дата", Выборка.ДатаДень);
    ИсходящиеДанные.Вставить("колВещДоговоров", ГрПредметовВО);

    ВыгрузитьПоПравилу(, , ИсходящиеДанные ,, "ОперацияБухФилиал");
    
КонецЦикла;


мне нужно передать параметр в алгоритм
Как вызвать алгоритм если не через команду выполнить()
при попытке выгрузки вот такая ошибка
Цитата
Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
ПВД = ЛМБ_РеестрФинансовыхОпераций
Обработчик = ПередОбработкойВыгрузкиДанных
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML(10437)
КодСообщения = 31



 ! 

Правила, п. 5
 
Kutuzov
Кто может подсказать, подскажите. icon_beer17.gif
Tonik992
Цитата(Kutuzov @ 23.01.13, 11:26) необходимо зарегистрироваться для просмотра ссылки
Кто может подсказать, подскажите. icon_beer17.gif


Решение нашлось? Мне интересно, потому что я сталкивался с подобной проблемой, и обошел её несколько другим подходом
Evld
Можно через глобальные параметры, которые задаются с справочнике "Конвертации" на закладке "Параметры"
(в типовых так делают)...
koklobok
Есть два варианта
1) Использовать те же наименования переменных в коде вызова алгоритмов и в самых алгоритмах. Например, для вашего случая в алгоритме ГрПредметовВО использовать ДатаДень
2) Использовать дополнительный параметр-структуру ПараметрыАлгоритмов: при вызове алгоритма
Параметры.ПараметрыАлгоритмов.Вставить("ДатаДень", ДатаДень);
-------------
в самом алгоритме
ДатаДень = Параметры.ПараметрыАлгоритмов.ДатаДень;

В первом случае меньше гемороя с перекидкой параметров в алгоритмы, зато во втором случае возможна отладка алгоритмов как процедур, так что если алгоритмов немного и они вызываются несколько раз проще использовать первый вариант с отладкой алгоритмов по месту вызова.
Elstan
В типовых обычно называют переменные так же, как и в алгоритмах - и тогда всё отлично передается. По-моему, передавать через Параметры немного костыльно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.