Имя: Пароль:
1C
1С v8
Обращение к процедуре как к функции
, ,
0 Nextor257
 
25.10.14
07:50
В строке ТЗ.ЗагрузитьКолонку(МассивСвойств,"Значение") выдает ошибку Обращение к процедуре как к функции
1 hhhh
 
25.10.14
07:51
предфдущую строку смотрите
2 Nextor257
 
25.10.14
07:53
Платформа 8.3.5.11.86, Конфа УТ 11.1.7.60

МассивЗначений=Новый Массив;
    МассивСвойств=Новый Массив;
    
    Для Каждого ЗначениеСтруктуры Из СтруктураСтроки Цикл
        Значение=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ЗначениеСтруктуры.Ключ,Истина);
        Если Значение=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПустаяСсылка() Тогда
            НовоеЗначение=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
            НовоеЗначение.Заголовок=ЗначениеСтруктуры.Ключ;
            НовоеЗначение.Наименование=ЗначениеСтруктуры.Ключ;
            НовоеЗначение.Записать();
            Значение=НовоеЗначение.Ссылка;
        КонецЕсли;
        МассивЗначений.Добавить(Значение);
        
        Свойство=Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеСтруктуры.Значение,Истина);
        Если Свойство=Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка() тогда
            НовоеСвойство=Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
            НовоеСвойство.Наименование=ЗначениеСтруктуры.Значение;
            НовоеСвойство.Владелец=Значение.Ссылка;
            НовоеСвойство.Записать();
            Свойство=НовоеСвойство.Ссылка;
        КонецЕсли;
        МассивСвойств.Добавить(Свойство);
    КонецЦикла;
    
    ТЗ=Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Значение");
    ТЗ.Колонки.Добавить("Свойство");
    ТЗ.ЗагрузитьКолонку(МассивСвойств,"Значение");
    ТЗ.ЗагрузитьКолонку(МассивЗначений,"Свойство");
    Возврат(ТЗ);
3 Nextor257
 
25.10.14
07:56
(1) Help!
4 GROOVY
 
25.10.14
08:07
Чего не понятного? Не надо обращаться к процедуре как к функции.

Чем процедура от функции отличается знаете?
5 Nextor257
 
25.10.14
08:20
Я все правильно делаю. Ошибка была в том, что перед тем как использовать метод "ЗагрузитьКолонку", надо заполнить таблицу пустыми строками, в моем случае будет так:

НомерСтроки=0;
Пока НомерСтроки<=МассивСвойств.Количество() Цикл
   НоваяСтрока=ТЗ.Добавить();
   НомерСтроки=НомерСтроки+1;
КонецЦикла;

Тогда он Загружает колонки. Вот только почему про это ничего не сказано в помощнике?! Приходится гуглить минут 10 с разными запросами чтоб что то найти.
6 Ненавижу 1С
 
гуру
25.10.14
08:38
а не проще сразу заполнять ТЗ?
7 Dmitry1c
 
25.10.14
08:48
(6) мы не ищем легких путей!
8 Индиго
 
25.10.14
09:13
(0)Процедура работает. Функция работает и возвращает значение.
Что может быть проще этого?
9 Индиго
 
25.10.14
09:15
А если ты пишешь
а=процедура()
То извини.Процедура не умеет возвращать и ты идиот .
10 Фокусник
 
25.10.14
09:39
(4),(8),(9) Как думаете, сообщение "Обращение к процедуре как к функции" имеет хоть какое-то отношение к строке:

ТЗ.ЗагрузитьКолонку(МассивСвойств,"Значение") ?

Где здесь "обращение как к функции"? ;)
ИМХО, налицо неинформативность в сообщении об ошибке...
11 MishaD
 
25.10.14
09:49
Возврат(ТЗ); - ничего не напоминает
12 Chameleon1980
 
25.10.14
13:35
(11) чевой
13 Chameleon1980
 
25.10.14
13:36
всё вижу  ТЗ.ЗагрузитьКолонку(МассивЗначений,"Свойство");
    Возврат(ТЗ);
14 Chameleon1980
 
25.10.14
13:37
пирицидур? хех
Закон Брукера: Даже маленькая практика стоит большой теории.