Имя: Пароль:
1C
1С v8
ТЗ.Свернуть() не работает: Обращение к процедуре объекта как к функции
,
0 Poez9
 
24.11.14
15:52
ТЗСпец = Новый ТаблицаЗначений;
ТЗСпец.Колонки.Добавить("Номенклатура");
ТЗСпец.Колонки.Добавить("Количество");
      Для каждого эл из ТЗ Цикл
        НоваяСтрока = ТЗСпец.Добавить();    
        НоваяСтрока.Номенклатура = эл.Номенклатура;
        НоваяСтрока.Количество   = эл.Количество;
        КонецЦикла;    
    КонецЦикла;    
    
ТЗСпец.Свернуть("Номенклатура","Количество");

ТЗ формируется в цикле. Это выгруженные результаты запросов.
И каждый раз это новая ТЗ. Все ТЗ я выгружаю в итоговую ТЗСпец и сворачиваю.

В результате ошибка."Обращение к процедуре объекта как к функции " Не могу понять, в чем дело.
Подскажите, кто сталкивался, как боролись?
1 vicof
 
24.11.14
15:54
В какой строке?
2 фобка
 
24.11.14
15:55
Конеццикла два раза почемуто
3 Poez9
 
24.11.14
15:57
(2) копировал,не удалил
(1) в последней.  ТЗСпец.Свернуть
4 pessok
 
24.11.14
15:59
(3) да что-то ты нам не тот кусок кода даешь. в представленном все норм, акромя КонецЦикла
5 фобка
 
24.11.14
15:59
(3) не верю
6 dk
 
24.11.14
15:59
; где-то забыл
7 vicof
 
24.11.14
16:00
видимо там ТЗСпец = ТЗСпец.Свернуть("Номенклатура","Количество");
8 pessok
 
24.11.14
16:02
(7) если только так
9 ukolabrother
 
24.11.14
16:07
Вообще надо было проще сделать.
ТЗСпец = ТЗ.Скопировать();
ТЗСпец.Свернуть("Номенклатура", "Количество");
10 wertyu
 
24.11.14
16:08
(3) тогда скопируй как у тебя на самом деле или там у тебя секретный код
11 wertyu
 
24.11.14
16:09
(9) ТЗСпец = ТЗ.Скопировать(, "Номенклатура, Количество");
12 Poez9
 
24.11.14
16:12
(9),(11) попробую.
Если не прокатит,выложу полный код
13 Poez9
 
24.11.14
16:20
(9)я, копируя, затираю предыдущие данные. А мне надо дописывать к существующим.

вот код:

ТЗСпец = Новый ТаблицаЗначений;
    ТЗСпец.Колонки.Добавить("Номенклатура");
    ТЗСпец.Колонки.Добавить("Количество");
    Для каждого стр из Полуфабрикаты Цикл
        Для каждого эл из РассчитатьИзПолуфабрикатов(стр.Номенклатура)Цикл
        НоваяСтрока = ТЗСпец.Добавить();    
        НоваяСтрока.Номенклатура = эл.Номенклатура;
        НоваяСтрока.Количество   = эл.Количество;
        КонецЦикла;    
    КонецЦикла;    
    
    ТЗСпец.Свернуть("Номенклатура","Количество");


РассчитатьИзПолуфабрикатов(стр.Номенклатура) - возвращает ТЗ, в которой результат запроса.
14 Крошка Ру
 
24.11.14
16:20
(13) На это тоже ошибку выдаёт?
15 Poez9
 
24.11.14
16:21
да я ничего не поменял. Всё как и было. Ошибка на "Свернуть..."
16 Euguln
 
24.11.14
16:26
(15) А точно ошибка именно на этом "Свернуть", может где ещё есть, например в РассчитатьИзПолуфабрикатов?
17 Poez9
 
24.11.14
16:28
(16) я отладчиком построчно смотрю.
РассчитатьИзПолуфабрикатов возвращает ТЗ.
вот последние строки из функции:

Результат = Запрос.Выполнить().Выгрузить();
Запрос.МенеджерВременныхТаблиц.Закрыть();
Возврат Результат;
18 Euguln
 
24.11.14
16:28
а у тебя в отладчике в окне вызова никакого мусора не торчит?
19 Крошка Ру
 
24.11.14
16:29
(17) Удали все между

    КонецЦикла;

    и  
    
    ТЗСпец.Свернуть("Номенклатура","Количество");
20 Poez9
 
24.11.14
16:30
(18) нет))

сейчас попробовал Результат свернуть еще до возврата из функции - не сворачивает по той же ошибке. Что за хрень?
21 Euguln
 
24.11.14
16:31
(20) как попробовал? В отладчике?
22 Poez9
 
24.11.14
16:32
(21) да
23 Euguln
 
24.11.14
16:33
(22) молодец ))))
24 Крошка Ру
 
24.11.14
16:33
(20) В запросе случайно временные таблицы не используешь?
25 Poez9
 
24.11.14
16:33
что не так?
26 Poez9
 
24.11.14
16:33
(24) использую
27 Бледно Золотистый
 
24.11.14
16:33
(20) Там точки останова с условием не стоит?
28 Euguln
 
24.11.14
16:34
(25) прямо вот так в окне вызова пишешь ТЗСпец.Свернуть("Номенклатура","Количество")?
29 YFedor
 
24.11.14
16:35
(22) Так это в табло отладчика ошибку выдает?
30 Poez9
 
24.11.14
16:36
Не знаю почему,может кто-то объяснит. Всё сработало сейчас. Хотя упорно отладчик продолжает выдавать ошибку. Всем спасибо за идеи.
31 Euguln
 
24.11.14
16:36
(30) Учись отладчиком пользоваться, смотри просто ТЗСпец
32 YFedor
 
24.11.14
16:37
(30) Ты все-таки скажи ошибка в отладчике выходит или при работе в режиме Предприятие?
33 Ненавижу 1С
 
гуру
24.11.14
16:38
(30) хватит мучать отладчик, ну не сможет он тебе показать результат работы процедуры по причине его отсутствия
34 Poez9
 
24.11.14
16:38
в отладчике.
35 YFedor
 
24.11.14
16:38
(34) И в чем проблема? Все правильно, чего ты хочешь-то?
36 Diman000
 
24.11.14
16:38
(30) Ясное дело, в табло отладчика или в окне будет эта ошибка.
37 Poez9
 
24.11.14
16:38
(30) не понял. По причине чьего отсутствия?
38 YFedor
 
24.11.14
16:39
(37) Разницу между процедурой и функцией знаешь?
39 Diman000
 
24.11.14
16:39
(37) Отсутствия возвращаемого результата.
40 Бледно Золотистый
 
24.11.14
16:39
(37) возвращенного значения после отработки процедуры
41 Euguln
 
24.11.14
16:39
(37) В отладчике можно смотреть значения переменных и функций.
42 Poez9
 
24.11.14
16:39
раньше не сталкивался с таким. Хотя часто какую-то мелочь смотрю таким образом в отладчике до того,как написать.
43 Poez9
 
24.11.14
16:41
Вы не правильно поняли. Я ж не результат функции смотрю. Результат есть. Я отладчиком смотрю уже последнюю строчку после того,как функция отработала
44 YFedor
 
24.11.14
16:41
(42) Ты скажи, чего ты хотел получить от указания в табло МояТаблица.Свернуть()?
45 Diman000
 
24.11.14
16:41
(42) Ты смотрел значения переменных. А тут пытаешься вызывать процедуру.
46 Euguln
 
24.11.14
16:42
(43) Это ты не понял, нельзя смотреть результат ТЗСпец.Свернуть("Номенклатура","Количество"), его просто нет. Результат содержится в переменной ТЗСпец.
47 Poez9
 
24.11.14
16:47
Спасибо! Век живи-век учись))
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой