Имя: Пароль:
1C
1С v8
Конвертация данных - Передача параметров в алгоритм
,
0 VladSt
 
09.10.15
14:32
Добрый день.
Делаю конвертацию из 1С77 в 1C8, в ПВД создаю таблицу значений и заполняю поля. Для заполнения одного поля вызываю алгоритм(функцию), которая создаст какое-то значение и вернет его.
И вот тут я не знаю как передать в эту функцию параметры:
[img]http://i.imgur.com/CK9z5Z2.png[/img]

ругается что переменная Спр не определена. Подскажите
1 АдинС
 
09.10.15
14:37
Может  в одном из вариантов "С" не той раскладкой написана?))
2 бомболюк
 
09.10.15
14:38
Я когда то попробовал это дело у меня не полетело, не работает это мне кажется.
3 Mankubus
 
09.10.15
14:41
покажи как вызываешь алгоритм
4 АдинС
 
09.10.15
14:41
(2) Что не работает? алгоритмы в КД?
5 бомболюк
 
09.10.15
14:42
(4) с параметрами
6 VladSt
 
09.10.15
14:43
7 Mankubus
 
09.10.15
14:46
параметры нужны для вызова из ПКО.
в ПВД пиши:
СерияИзАлгоритма = Неопределено;
Выполнить(Алгоритмы.ВернутьСериюНоменклатуры);
ТЧАккумы.СерияНоменклатуры = СерияИзАлгоритма ;

а в конце алгоритма определяй серию:
СерияИзАлгоритма  = мояСерия
8 бомболюк
 
09.10.15
14:46
так это семерка ;-)
Попробуй в теле алгоритма вместо Спр.Код писать ИсходящиеДанные.Код;
9 АдинС
 
09.10.15
14:48
(8) Так ошибка то похоже при компиляции самого алгоритма..
причем тут семерка?
10 PLUT
 
09.10.15
14:49
(0) почитал бы "знак вопросика" в алгоритмах, для чего параметры используются

а в алгоритмах все твои переменные обормотчика ПКС доступны, из которого ты этот алгоритм вызываешь

(9) Возврат 1 человека смутил :)

клюшками попахивает
11 АдинС
 
09.10.15
14:49
(5) Возможно ты и прав, просмотрел несколько типовых правил... там во всех алгоритмов нету параметров.... 1С как всегда, что-нибудь да не работает как задуманно..
12 бомболюк
 
09.10.15
14:50
(9) в 7ке алгоритмы совсем иначе вызываются
13 PLUT
 
09.10.15
14:51
(11) "Поле "Параметры" используется при отключенном режиме совместимости. Используется для явного задания параметров алгоритмов при формировании отладочных модулей и модулей с кодом обработчиков. При включенном режиме совместимости в правилах заполнение не обязательно.

Синтаксис вызова любого алгоритма:  Выполнить(Алгоритмы.<ИмяАлгоритма>)
"

ваш КО
14 VladSt
 
09.10.15
14:53
Вот как функция выглядит в коде:

Функция ВернутьСериюНоменклатуры(
            ИсходящиеДанные = "", ВходящиеДанные = "", Источник = "", Приемник = "", ТипПриемника = "", Значение = "", Выражение = "",
            Пусто = "", ВыборкаДанных = "", Объект = "", КоллекцияОбъектов = "", ОбъектКоллекции = "", ИмяПКО = "", ИмяПКОВидСубконто = "",
            НомерПКО = "", НомерПКС = "", Правило = "", КлючВыгружаемыхДанных = "", НеЗапоминатьВыгруженные = "", НеЗамещатьОбъектПриЗагрузке = "",
            ВсеОбъектыВыгружены = "", ТолькоПолучитьУзелСсылки = "", РежимЗаписи = "", РежимПроведения = "", СтандартнаяОбработка = "",
            НеЗамещать = "", НеОчищать = "", УзелСсылки = "", УзелКоллекцииОбъектов = "", УзелОбъектаКоллекции = "", УзелСвойства = "",
            ВидСубконто = "", Субконто = "", Отказ = "")


    Сообщить("Попал в алгоритм!");
    Сообщить("Спр.Код: " + Спр);
    Возврат 1;


КонецФункции // ВернутьСериюНоменклатуры()
15 АдинС
 
09.10.15
14:56
Тогда как в (8) должно работать..
16 VladSt
 
09.10.15
15:00
Да, как в (8) работает, причем в параметрах в алгоритме можно ничего не писать.
Спасибо
17 VladSt
 
09.10.15
15:43
Народ, а подскажите, как передавать, изменять и хранить параметр (ТаблицаЗначений) при работе конвертации?
Вот создаю в ПВД ТаблицуЗначений, потом передаю ее в параметр.
[img]http://i.imgur.com/Ju2gAVT.png[/img]
потом при работе конвертации, буду ее заполнять, а потом выгружу.

Когда перехожу в алгоритм, хотелось бы увидеть эту таблицу
а тут она пустая, параметр пустой, его нету. Вот результат:
[img]http://i.imgur.com/fvY2xaE.png[/img]
18 VladSt
 
09.10.15
15:57
или я не правильным путем иду?
19 VladSt
 
09.10.15
16:15
Все, разобрался.
Объявлять параметр таблицей значений надо делать не в ПВД, а в обработчике ПередВыгрузкойДанных самой конвертации.
Параметры.ТЗ1Аккум = СоздатьОбъект("ТаблицаЗначений");            // для создания элемента справочника уатСерииНоменклатуры
Параметры.ТЗ1Аккум.НоваяКолонка("ТипАгрегата");                    // - СправочникСсылка.уатТипыАгрегатов.Аккумулятор
Параметры.ТЗ1Аккум.НоваяКолонка("Модель");                        // - ТипАгрегата, Производитель, Модель, Емкость, СрокСлужбы (мес.)
Параметры.ТЗ1Аккум.НоваяКолонка("СерийныйНомер");                // - строка
Параметры.ТЗ1Аккум.НоваяКолонка("Номенклатура");                // - СправочникСсылка.Номенклатура