Имя: Пароль:
1C
1С v8
Помогите с ТЧ
,
0 stas_t_88
 
22.10.12
18:57
Здравствуйте. Собственно нужна ваша помощь. мучаюсь, никак не могу понять как сделать.

Вообщем в 1с8.2. есть Табличная часть в ней 3 колонки, №пп, Улица, Полный адрес

Туда вручную спомощью кладр добавляются нужные улицы (к примеру 5 улиц), получаем 5 строк.

Теперь надо как то эти пять строк ( а именно пять адресов(улиц)) взять и подставить в запрос для выборки Абонентов живущих на этих улицах.

У справочника абонентов есть реквизит - адрес, там полностью при помощи кладр-а записан адрес.

Я сделал щас так: выбираю по одной строке, этот адрес подставляю в фильтр результата запроса он фильтрует по этой улице и добавляет в выходную таблицу отфильтрованных абонентов. Потов берёться вторая строка, опять выполняется запрос и результат отфильтровуется по новому адресу, отфильтрованные абоненты добавляются следующими строками в выходную таблицу.

Вышло всё это дело очень трудоёмко и сложно!!( Как сделать по другому?!
1 Wobland
 
22.10.12
18:58
ПОДОБНО изучал?
2 Beduin
 
22.10.12
18:59
(1) Ему надо список значений сделать при добавлении строк и в запросе по нему отбирать.
3 Wobland
 
22.10.12
19:00
хм, Адрес=АдресРаз ИЛИ Адрес=Адрес2... не?
4 aleks-id
 
22.10.12
19:01
а запросом не?
5 aleks-id
 
22.10.12
19:01
(3) чё?? выпил, признавайся!!
обычное левое соединение
6 Wobland
 
22.10.12
19:02
(5) не, не пил. читал по диагонали ;)
7 stas_t_88
 
22.10.12
19:36
неее! так не выйдет!
8 aleks-id
 
22.10.12
19:37
(7) да ну?
9 stas_t_88
 
22.10.12
19:38
лучше примером кода изобразите это.

Зачем мне в запросе ИЛИ??? мне надо адрес1+адрес2+адрес3 и т.д. в зависимости от количества строк в таблице!!!
10 aleks-id
 
22.10.12
19:40
какое ИЛИ?? там обычное левое соединение. соединяешь свою ТЧ с запросом
11 stas_t_88
 
22.10.12
19:47
а как ТЗ соединить с запросом? извините я только учусь...
12 aleks-id
 
22.10.12
19:50
ну открой конструктор запроса, выбери какой нить реквизит из ТЧ, добавь вложенный запрос. соедини результаты
13 stas_t_88
 
23.10.12
17:38
aleks-id
то на то и выйдет, что я внутри запроса буду выполнять запрос потом его результат по очереди подставлять во внешний запрос, что циклом по строчкам таблицы буду брать значение и подставлять его в запрос..(

выходить очень трудоемко, а если бельше 200 строк то минут 5 думает, а то и дольше...(
14 aleks-id
 
23.10.12
20:18
(13) не свисти. никаких там циклов не надо. все собирается в одном запросе и на выходе получается готовый результат за секунды.
15 stas_t_88
 
23.10.12
20:50
Если не сложно набросайте код как это будет?

Есть Справочник.Абоненты.Адрес и Таблица в Документе с колонкой адрес и 300стами строк. Как без цикла мы будем брать по одной строке из колонки адрес и искать подходящих абонентов в справочнике и их Добавлять по строчно в ещё одну таблицу в документе??

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
     |    Абоненты.адрес
     |ИЗ
     |     Справочники.Абоненты КАК Абоненты
      где абоненты.адрес подобно $адрес";
Запрос.УстановитьПараметр("Адрес", Адрес);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

пока Выборка.Следующий() цикл
    Новстр.ТЧ=Выборка.Адрес
Конеццикла;

В Адрес циклом подставляет адрес из другой табл и каждый раз  запускается этот запрос....(((
16 aleks-id
 
23.10.12
21:16
давай вторую таблицу
17 МишКа
 
23.10.12
21:25
По видимому есть только два пути:
или в справочник абонентов добавлять улицы
или собирать текст запроса в цикле