Имя: Пароль:
1C
1С v8
Вывод результата запроса в табличную часть
,
0 amadeus2010
 
13.04.12
08:44
Доброе утро всем, имеется табличная Рейсы с колонкой список рейсов.Тип значений табличной части-Таблица значений. Создал такой запрос.Теперь как можно вывести результат запроса в колонку табличной части.
Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |Рейс.Ссылка
   |ИЗ
   |Документ.Рейс КАК Рейс
   |ГДЕ Рейс.Состояние=&РейсВпути";
   Запрос.УстановитьПараметр("РейсВПути",Документы.Рейс.Ссылка);
   Результат=Запрос.Выполнить().Выгрузить();
   ТаблицаЗначений=Новый ТаблицаЗначений;
   Для Каждого  Строка из ЭлементыФормы.Рейсы.Колонки.СписокРейсов Цикл
       НоваяСтрока=ТаблицаЗначений.Добавить();
       НоваяСтрока[Строка.СписокРейсов]= ЭлементыФормы.Рейсы.Колонки.СписокРейсов;
   КонецЦикла;
ТаблицаЗначений=Результат;

При компиляции выдается следующая ошибка
{Обработка.ЗакрытиеРейсов.Форма.ЗакрытиеРейсов(32,24)}: Переменная не определена (СписокРейсов)
   Для Каждого Строка Из <<?>>СписокРейсов Цикл
прошу помощи
1 butterbean
 
13.04.12
08:49
не сохранил небось
2 ASU_Diamond
 
13.04.12
08:50
собсно а причём тут запрос?
3 Rizhij_Nikitos
 
13.04.12
08:50
(0) у тебя сам цикл неправильно устроен.
4 butterbean
 
13.04.12
08:50
хотя тут все как-то странно
5 Rizhij_Nikitos
 
13.04.12
08:51
ЗАпрос нормально, не понятна строчка ТаблицаЗначений = Результат, эт что?
6 Гефест
 
13.04.12
08:51
Для Каждого  Строка из ЭлементыФормы.Рейсы.Колонки.СписокРейсов Цикл

это что за кошмар?
7 vmv
 
13.04.12
08:53
г-код детектед
8 amadeus2010
 
13.04.12
09:00
Я только начинаю программировать в 1С поэтому прошу совета у вас как у специалистов как исправить ошибку
(5) ТаблицаЗначений = Результат пытался присвоить таблице результат запроса
(6) Для Каждого  Строка из ЭлементыФормы.Рейсы.Колонки.СписокРейсов Цикл хотел выбрать строку из колонки табличного поля
9 Fish
 
13.04.12
09:03
(8) Чтобы исправить ошибку, имхо, надо всё переписать заново :)
10 butterbean
 
13.04.12
09:03
(8) напиши  Таблица =Запрос.Выполнить().Выгрузить();
и всё
11 butterbean
 
13.04.12
09:05
(10)+ хотя запрос у тебя странный и нерабочий
12 vmv
 
13.04.12
09:05
(9) я бы был более категоричен, чтобы исправить ошибку - нужно родиться заново или просто прекратить примитивный троллинг
13 Wobland
 
13.04.12
09:06
(10) а чтобы потом всё это увидеть на форме, надо б ещё колонки создать у соответствующего ТП
14 butterbean
 
13.04.12
09:07
(13) до этого еще очень далеко
15 godmod80
 
13.04.12
09:21
Вопще кусок кода бредовый, надо алгоритм пересмотреть заново, может и в ДНК покопаться)) Смотри хоть на примере типовых модулей - как реализовать решение подобной задачи
16 le_
 
13.04.12
09:30
17 Rizhij_Nikitos
 
13.04.12
09:41
(0) стоп Результат = Запрос.Выполнить().Выгрузить() вот тута ты уже выгрузил запрос в таблицу значений Результат. Если хочешь, чтобы не результат, а ТаблицаЗначений называлась переменная пиши сразу ТаблицаЗначений = Запрос.Выполнить.Выгрузить() и все.
18 Rizhij_Nikitos
 
13.04.12
09:43
Теперь таблицу значений чтобы выгрузить в табличное поле, дела
19 Rizhij_Nikitos
 
13.04.12
09:45
делай так,
для каждого строкаТЗ из ТаблицаЗначений цикл
   НоваяСтрокаТабличногоПоля = ТабличноеПоле.Добавить();
   НоваяСтрока.Рейс = СтрокаТЗ.Рейс;
конецЦикла;
// где НоваяСтрока.Рейс = это строка со значением в колонке Рейс, а строкаТЗ.Рейс - это строка со значением в колонке рейс.
ТаблицаЗначений эт название самое таблицы у тебя она Результат, если ты код не поменял.Ну примерно должно быть так.
20 Wobland
 
13.04.12
09:46
(19) а не проще данные для ТП указать?
21 amadeus2010
 
13.04.12
09:56
я указал данные для ТП, сама ТП называется Рейсы, колонка СписокРейсов, тип данных=Таблицазначений, проблема заключалась в загрузке колонки ТП данными из запроса
22 butterbean
 
13.04.12
10:00
(21) проблема решилась??
23 amadeus2010
 
13.04.12
10:15
пока не решилась все равно выдает ошибку {Обработка.ЗакрытиеРейсов.Форма.ЗакрытиеРейсов(29,24)}: Переменная не определена (СписокРейсов)
   Для Каждого Строка Из <<?>>СписокРейсов Цикл
Хотя поменял саму процедуру на такую
Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |Рейс.Ссылка
   |ИЗ
   |Документ.Рейс КАК Рейс
   |ГДЕ Рейс.Состояние=&РейсВпути";
   Запрос.УстановитьПараметр("РейсВПути",Документы.Рейс.Ссылка);
   Рейсы=Запрос.Выполнить().Выгрузить();
   Для Каждого строкаТЗ Из Рейсы Цикл
       НоваяСтрокаРейсы=Рейсы.Добавить();
       НоваяСтрокаРейсы.СписокРейсов=строкаТЗ.СписокРейсов;
   КонецЦикла;
//где Рейсы название ТП и ТаблицыЗначений, СписокРейсов имеющаяся колонка в ТП
24 le_
 
13.04.12
10:21
Рейсы=Запрос.Выполнить().Выгрузить();
   Для Каждого строкаТЗ Из Рейсы Цикл
       НоваяСтрокаРейсы=Рейсы.Добавить();
...

Генератор случайных словосочетаний поработал.
25 butterbean
 
13.04.12
10:22
(23) вот это
Документы.Рейс.Ссылка
что за бред?? там должно быть что-то типа перечисления наверно - тип посмотри
26 butterbean
 
13.04.12
10:24
(23) какой у тебя тип колонки СписокРейсов?? ТаблицаЗначений или нет??
27 hhhh
 
13.04.12
10:25
(23) наверно, старую обработку забыл закрыть. Нажми на крестик, и запусти еще раз.
28 amadeus2010
 
13.04.12
10:26
тип колонки СписокРейсов=строка
29 butterbean
 
13.04.12
10:27
(28) О_О внезапно
30 hhhh
 
13.04.12
10:32
(28) ну вот тебе нужно из запроса взять СписокРейсов, а где у тебя в запросе это слово?

ВЫБРАТЬ
   |Рейс.Ссылка
   |ИЗ
   |Документ.Рейс КАК Рейс
   |ГДЕ Рейс.Состояние=&РейсВпути";

вот твой запрос, слова списокрейсов в упор не вижу. Тут ссылка какая-то.
31 amadeus2010
 
13.04.12
10:47
запрос отбирает все рейсы чье состояние= в пути. В консоли отчетов проверял запрос рабочий, переписал немного запрос, присвоил значение параметра &РейсВпути значения Перечисления,
Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |Рейс.Ссылка
   |ИЗ
   |Документ.Рейс КАК Рейс
   |ГДЕ Рейс.Состояние=&РейсВпути";
   Запрос.УстановитьПараметр("РейсВПути",Перечисления.СостояниеРейса);
   Рейсы=Запрос.Выполнить().Выгрузить();
   Для Каждого строкаРейсы  Из Рейсы Цикл
       НоваяСтрокаРейсы=Рейсы.Добавить();
       НоваяСтрокаРейсы.СписокРейсов=строкаРейсы.СписокРейсов;
   КонецЦикла;
если я вас правильно понял то вы предлагаете вместо НоваяСтрокаРейсы.СписокРейсов написать НоваяСтрокаРейсы.Рейс и колонку ТП поменять на Рейс или в запросе Как Рейс написать Как Список Рейсов, чтобы в дальнейшем определилась переменная?
32 butterbean
 
13.04.12
10:48
(31) это не значение перечисления, а само перечисления, но осталось немного :-)
33 amadeus2010
 
13.04.12
10:55
ну да пардон неправильно выразился (31) параметру &РейсВпути, присвоил само перечисление Перечисления.СостояниеРейса,одно из значений которого ВПути
34 Fish
 
13.04.12
10:58
(33) У тебя каша в голове.
35 hhhh
 
13.04.12
11:03
(33) ну у вас ГДЕ Рейс.Состояние=&РейсВпути

Рейс.Состояние - это значение перечисления
&РейсВпути - само перечисление.

они никогда не будут равны, поэтому у вас пусто будет в результате запроса.
36 vmv
 
13.04.12
11:04
(31) в следущий раз создавай тему женским аккаунтом с фото так веселее)
37 SanGvin
 
13.04.12
11:05
ржака))
38 hhhh
 
13.04.12
11:05
(35)+ то есть вы должны сделать над собой неимоверное усилие и в &РейсВПути тоже задать одно из значений этого перечисления.
39 SanGvin
 
13.04.12
11:07
во-первых ты пихаешь в параметр запроса само перечисление а не его значение, во-вторых - в цикле у тя идет присвоение СТРОКЕ таблицы целиком реквизита с типом ТаблицаЗначений (если, как ты гришь, там у реквизита ТЗ значение Таблица значений)
40 Шапокляк
 
13.04.12
11:10
(0) "Тип значений табличной части-Таблица значений". Наверно, это не табличная часть самого документа, а табличное поле на форме. И значение этого табличного поля - таблица значений с именем СписокРейсов?
41 amadeus2010
 
13.04.12
13:47
Добрый день, объясните пожалуйста такую вещь. Я изменил частично сам запрос,сделал табличную часть документа ТаблицаРейс вместо табличного поля на форме, создал колонку Рейсы с типом данных строка, и все равно выходит ошибка

Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |Рейс.Ссылка
   |ИЗ
   |Документ.Рейс КАК Рейс
   |ГДЕ Рейс.Состояние=&Состояние";
   Запрос.УстановитьПараметр("Состояние",Документы.Рейс.Состояние);
   РезультатЗапроса=Запрос.Выполнить();
   Выборка=РезультатЗапроса.Выбрать();
   Пока Выборка.Следующий()Цикл
       НоваяСтрока=ТаблицаРейс.Добавить();
       НоваяСтрока.Рейсы=Выборка.Состояние;
   КонецЦикла;


{Обработка.ЗакрытиеРейсов.Форма.ЗакрытиеРейсов(30,24)}: Переменная не определена (СписокРейсов)
   Для Каждого Строка Из <<?>>СписокРейсов Цикл
В чем может быть проблема?
42 butterbean
 
13.04.12
13:49
(41) 1. опять ты про перечисление забыл
2. твой код не соответствует ошибке, настоящий покажи
43 hhhh
 
13.04.12
13:51
(41) действительно тут нет у тебя переменной СписокРейсов, поищи хоть сам в этом тексте.
44 Fish
 
13.04.12
13:57
Что-то чем дальше, тем больше похоже на развод :))
45 amadeus2010
 
13.04.12
13:57
ну я о том же что нет здесь переменной такой СписокРейсов, а ошибка ссылающаяся на нее есть. Тем более что я поменял ту часть запроса которая отвечает за вывод результата запроса а табличную часть и переименовал колонку.
46 amadeus2010
 
13.04.12
13:58
никакого развода, остается нерешенным вопрос вывода результата в колонку ТЧ
47 salvator
 
13.04.12
14:05
(45) Изменения-то сохранил?
48 Wobland
 
13.04.12
14:07
(46) слушай, заколбал уже. вот у меня есть обработка с реквизитом типа ТЗ, делаю запрос, отображаю результат запроса в ТП на форме. изначально там никаких колонок нет. подойдёт для подсмотреть?
49 hhhh
 
13.04.12
14:54
(48) ничего не получится. Результат запроса надо в колонку поместить, а у тебя колонок нет.
50 Wobland
 
13.04.12
14:56
да я сделаю выгрузку в колонку. и колонку создам. только пусть уже ТС закончит с этим ;)
51 hhhh
 
13.04.12
15:04
(50) имхо у ТС есть еще темы в запасе.
52 amadeus2010
 
13.04.12
16:01
если для подсмотреть то пойдет
53 hhhh
 
13.04.12
16:07
(52) ну откройте ему email свой, email ваш закрыт. он вам кинет обработку. Вы чего-то сегодня несообразительный.
54 amadeus2010
 
13.04.12
16:16
[email protected]сбросьте сюда обработку.Буду очень благодарен за помощь
55 Rizhij_Nikitos
 
13.04.12
16:26
(0) у тебя в запросе берется ссылка, а значит Колонка в ТЗ которую ты через запрос выгружаешь, будет СТрокаТЗ.ССылка.
56 Rizhij_Nikitos
 
13.04.12
16:28
(20) а как данные для ТП указать, поделись опытом просто, что я нашел когда изучал в книгах, то и часто использую свое пытаюсь новое неизобретать всегда.
57 hhhh
 
13.04.12
16:29
(54) только никогда в жизни больше не пиши

Документы.Рейс.Ссылка  или
Документы.Рейс.Состояние

Это смахивает на пропаганду гомосексуализма.
58 amadeus2010
 
13.04.12
16:31
Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |Рейс.Ссылка
   |ИЗ
   |Документ.Рейс КАК Рейс
   |ГДЕ Рейс.Состояние=&Состояние";
   Запрос.УстановитьПараметр("Состояние",Перечисления.СостояниеРейса.ВПути);
   РезультатЗапроса=Запрос.Выполнить();
   Выборка=РезультатЗапроса.Выбрать();
   Пока Выборка.Следующий()Цикл
       НоваяСтрока=ТаблицаРейс.Добавить();
       НоваяСтрока.Рейсы=Выборка.Состояние;
   КонецЦикла;
в итоге пришел только к этому
59 Wobland
 
13.04.12
16:33
(54) всё уже. обработка на работе, а я дома
60 le_
 
13.04.12
16:33
(58)...Поразмышляем над этим: НоваяСтрока.Рейсы=Выборка.Состояние;
61 Wobland
 
13.04.12
16:34
(58) а ЗагрузитьКолонку() чем у нас обычно занимается?
62 Argon
 
13.04.12
16:36
ОМГ.... УДК... :)
63 Wobland
 
13.04.12
16:37
я так и не понял главного: на зачем весь этот огород?
64 amadeus2010
 
13.04.12
16:44
(61)ЗагрузитьКолонку()-Загружает значения из массива в заданную колонку табличной части.

Пока Выборка.Следующий()Цикл
       НоваяСтрока=ТаблицаРейс.Добавить();
       НоваяСтрока.Рейсы=Выборка.Состояние;
       ТаблицаРейс.ЗагрузитьКолонку(Рейсы, "Состояние")
   КонецЦикла;

как то так что ли?
65 SurFace
 
13.04.12
16:46
теперьищи тут ошибку  
НоваяСтрока.Рейсы=Выборка.Состояние;
66 salvator
 
13.04.12
16:48
Воистину, Пятница, 13-е...
67 hhhh
 
13.04.12
16:50
(64) у тебя Выборка.Состояние всегда равно Перечисления.СостояниеРейса.ВПути. Сам же написал в запросе. Зачем тебе оно? Зачем его в колонку грузить?
68 Rizhij_Nikitos
 
13.04.12
16:51
Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |Рейс.Ссылка
   |ИЗ
   |Документ.Рейс КАК Рейс
   |ГДЕ Рейс.Состояние=&Состояние";
   Запрос.УстановитьПараметр("Состояние",Перечисления.СостояниеРейса.ВПути);
   РезультатЗапроса=Запрос.Выполнить();
   Выборка=РезультатЗапроса.Выбрать();
   Пока Выборка.Следующий()Цикл
       НоваяСтрока=ТаблицаРейс.Добавить();
       НоваяСтрока.Рейсы=Выборка.Ссылка;
   КонецЦикла;
Выбранное поле у тебя будет ССылка,А не состояние.
69 Rizhij_Nikitos
 
13.04.12
16:51
(64) это тебе вот так пробуй все должно взлететью
70 amadeus2010
 
13.04.12
16:52
а теперь понятно
71 amadeus2010
 
13.04.12
16:53
сейчас попробую
72 amadeus2010
 
13.04.12
16:58
спасибо за запрос, только не подумайте что развожу вас но при попытке выполнить код выдает ошибку
{Обработка.ЗакрытиеРейсов.Форма.ЗакрытиеРейсов(29,24)}: Переменная не определена (СписокРейсов)
   Для Каждого Строка Из <<?>>СписокРейсов Цикл
хотя никого упоминания о СписокРейсов нигде нет ни в коде ни в реквизитах, ни в ТЧ словом нигде, не могу понять это.
73 Wobland
 
13.04.12
16:59
можно я матом ругаться буду? весь день эту ошибку вижу
74 Rizhij_Nikitos
 
13.04.12
17:00
открой форму документа и в поиске напиши СписокРейсов и найдешь где есть таккая переменная. или созрани обработку, и заного открой в режими 1С предприятиие.

Смотри что стоит
до слова "ИЗ" это колонки таблицы значений которые будут выгружены. В нашем случае это     |Рейс.Ссылка, в объединения\пседонимы можно меняить название колонок.
75 Wobland
 
13.04.12
17:01
>хотя никого упоминания о СписокРейсов нигде нет \
он ещё и издевается
76 Rizhij_Nikitos
 
13.04.12
17:02
(75) ЗагрузитьКолонку() - это ты мне говорил?
77 Wobland
 
13.04.12
17:03
(76) не, автору
78 amadeus2010
 
13.04.12
17:04
очень извиняюсь нашел где находится СписокРейсов, исправил ошибку
79 amadeus2010
 
13.04.12
17:07
спасибо (68) все заработало,еще раз спасибо всем за помощь
80 Rizhij_Nikitos
 
13.04.12
17:15
(79) успел проверить до конца рабочего дня :)) все мы учились и учимся)
81 le_
 
13.04.12
17:18
(80) Судя по всему, amadeus2010 нихрена не учится и ему это нафиг не надо. Ему нужно было, чтобы кто-то ему готовое решение выложил. А на программиста денег жмет.
82 sanja26
 
13.04.12
17:21
Может это лучше

http://infostart.ru/public/101396/
83 amadeus2010
 
14.04.12
08:08
в том то и дело что на СКД сделать ТЧ и вывести в нее данные легче чем создать новую обработку и запрос к ней для отбора документов. Не надо судить строго начинающего программиста,ведь все когда-то чему-то учились
84 experimentator76
 
14.04.12
10:54
(36) да хоть как-то тупняк будет оправдан
85 experimentator76
 
14.04.12
10:55
(54) пипец... и мне тогда бабла на карточку ))
86 experimentator76
 
14.04.12
10:56
(81) +100500 никогда не научится если все готовое испоьзовать
87 Wobland
 
14.04.12
18:30
(83) представь, как было лично мне, когда СКД ещё не изобрели. пришлось самому. самому вникать в то, что же оно имело в виду вот в этой ошибке, почему вот здесь оно хочет от меня совсем не то, что я думаю и т.п.... плин, сильно помог принцип "задумайся, пойми, как работает, и сделай по-своему"
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.