Имя: Пароль:
1C
1С v8
не работает оператор Выполнить("кусок кода")
0 altaykniga
 
14.10.16
15:40
Доброй пятницы, уважаемые!
Первый раз пытаюсь использовать оператор Выполнить.
управляемые формы, модуль формы.


Выполнить(ИмяПеременной + "= 25");


т.е. ИмяПеременной = "сч"
т.е. хочу выполняю код "сч=25". не присваивается значение 25 для переменной "сч". Почему?

Если в начале процедуры объявить переменную "сч" явно, тогда все работает. Проблема в том, что в начале процедуры я не знаю ямиПеременной, поэтому объявить ее не могу.
1 Мойдодыр
 
14.10.16
15:42
а как проверяешь что не работает?
2 Мойдодыр
 
14.10.16
15:42
Делай лучшу структуру в параметрами
3 altaykniga
 
14.10.16
15:44
(1) проверяю через отладчик.
4 altaykniga
 
14.10.16
15:44
задача такая: в цикле получаю имяПеременной, вот этой переменной нужно присвоить некоторое значение
5 Мойдодыр
 
14.10.16
15:44
у тебя пременная живет, пока код в выполнить выполняется
6 altaykniga
 
14.10.16
15:45
(2) со структурой не понимаю как присваивать значения переменным по их строковым именам
7 altaykniga
 
14.10.16
15:46
(5) а как продлить жизнь переменной ? ))
8 Мойдодыр
 
14.10.16
15:47
Выполнить("Структура.Вставить(""" + ИмяПеременной + """, 25)");
9 altaykniga
 
14.10.16
15:52
(8)
применительно к моей задаче...
мне нужно переменной ИмяПеременной присвоить значение "тДерево.Строки.Добавить()"

а затем выполнить "ИмяПеременной.Номенклатура = СтрТЗ.Номенклатура"
10 Мойдодыр
 
14.10.16
15:54
будет
Струткруа.ИмяПеременной.Номенклаура
11 altaykniga
 
14.10.16
16:05
(10) Огромное спасибо, сделал так:


CтруктураПеременных.Вставить(ИмяПеременной, тДерево.Строки.Добавить());
            СтруктураПеременных[ИмяПеременной].Номенклатура = Стр.Номенклатура;


Как теперь передать данных из структуры в ДеревоЗначений на форме?
12 Мойдодыр
 
14.10.16
16:13
Что значит передать в дерево на форме?
13 altaykniga
 
14.10.16
16:27
(12)
создал СтруктуруПеременных. внес в нее одну строку, в этой строке присвоил Номенклатура = Стр.Номенклатура; код ниже:

CтруктураПеременных.Вставить(ИмяПеременной, тДерево.Строки.Добавить());
СтруктураПеременных[ИмяПеременной].Номенклатура = Стр.Номенклатура;


проверяю, как перенесется все это дело в ДеревоЗначений на форму: прерываю цикл и выполняю код:

ЗаполнитьЗначенияСвойств(тДерево,СтруктураПеременных);

где тДерево - это деревоЗначений на форме
14 altaykniga
 
14.10.16
16:29
(12) в итоге на форме в дереве отображается моя одна строка.

И опять впал в ступор: как теперь добавить вложенную строку в мою строку дереваЗначений? ну если цикл не прерывать в модуле, а продолжить добавлять строки...
15 Мойдодыр
 
14.10.16
16:33
СтруктураПеременных[ИмяПеременной].Строки.Добавить()
16 altaykniga
 
14.10.16
17:29
(15) все получилось, спасибо! В итоге отказался от использования переменных из структуры, т.к. изначально это оказалось лишним... Ниже приведен код для преобразования ТЗ в Дерево (ТЗ предварительно подготовлена, добавлены Колонки с ИДстроки и ИДродителя)


&НаСервере
Процедура ЗаполнитьДерево(ТЗ)
    перем ИмяПеременной;
    тДерево = РеквизитФормыВЗначение("ДеревоЗначений1");
    Для Каждого Стр ИЗ ТЗ Цикл
        Если НЕ ЗначениеЗаполнено(Стр.ГУИД) Тогда
            СтрДерева = тДерево.Строки.Добавить();
            СтрДерева.Номенклатура = Стр.Номенклатура;
            СтрДерева.ИД = Стр.ИД;
        Иначе
            ПараметрыОтбора = Новый Структура("ИД",Стр.ГУИД);
            МасссивНайденныхСтрок = тДерево.Строки.НайтиСтроки(ПараметрыОтбора, Истина);
            Если МасссивНайденныхСтрок.Количество()=1 Тогда
                СтрДерева = МасссивНайденныхСтрок[0].Строки.Добавить();
                СтрДерева.Номенклатура = Стр.Номенклатура;
                СтрДерева.ИД = Стр.ИД;
            Иначе
                ОбщегоНазначенияКлиентСервер.СообщитьПользователю("найдено несколько строк или не найдено ни одной");
                возврат;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    ЗначениеВРеквизитФормы(тДерево, "ДеревоЗначений1");
КонецПроцедуры