Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Заполнение колонки индексированной таблицы (число прочтений - 3008 )
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Заполнение колонки индексированной таблицы
19. Сентября 2007 :: 10:55
Печать  
Есть две индексированных таблицы.

В первой содержатся следующие строки (абоненты повторяются, адреса пока не известны):
------------------------------------
Абонент  |  Адрес
------------------------------------
Абонент1   <пусто>
Абонент1   <пусто>
Абонент2   <пусто>
Абонент2   <пусто>

Во второй (абоненты уникальны и их адреса заполнены):
------------------------------------
Абонент  |  Адрес
------------------------------------
Абонент1   Адрес1
Абонент2   Адрес2

Можно ли в первой таблице заполнить колонку адреса по второй таблице (для абонента проставить соответствующий ему адрес), не выполняя перебора по всей таблице? Если можно то как? Методом "ЗаполнитьКолонку" не получилось...

  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Заполнение колонки индексированной таблицы
Ответ #1 - 19. Сентября 2007 :: 11:06
Печать  
Я делал так:

Код
Выбрать все
ТЗ1.ДобавитьИндекс("Абонент", "Абонент");
ТЗ2.ДобавитьИндекс("Абонент", "Абонент");
ТЗ1.ЗаполнитьКолонку("Абонент", "Адрес", ТЗ2, "Абонент", "Адрес"); 



Получилось:
------------------------------------
Абонент  |  Адрес
------------------------------------
Абонент1   Адрес1
Абонент1   Адрес2
Абонент2   <пусто>
Абонент2   <пусто>

А надо:
------------------------------------
Абонент  |  Адрес
------------------------------------
Абонент1   Адрес1
Абонент1   Адрес1
Абонент2   Адрес2
Абонент2   Адрес2

Есть идеи?
  
Наверх
ICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Заполнение колонки индексированной таблицы
Ответ #2 - 19. Сентября 2007 :: 11:12
Печать  
es3000 писал(а) 19. Сентября 2007 :: 11:06:
Есть идеи?


Тебе в прицнипе нужна третья ИТЗ которая произведет левое соединение первой таблицы со второй по Абоненту.

Попробуй глянь методы Объединить() и Групировать()

Если не догадаешься  Подмигивание скину рабочий код, минут через 30 во время перекура.
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Заполнение колонки индексированной таблицы
Ответ #3 - 19. Сентября 2007 :: 11:48
Печать  
Пробовал так. Не получилось  Смущённый
Давай код посмотрим, если не трудно Улыбка
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Заполнение колонки индексированной таблицы
Ответ #4 - 19. Сентября 2007 :: 11:50
Печать  
После "объединить" получится:

------------------------------------
Абонент  |  Адрес
------------------------------------
Абонент1   <пусто>
Абонент1   <пусто>
Абонент2   <пусто>
Абонент2   <пусто>
Абонент1   Адрес1
Абонент2   Адрес2


И как это превратить в такой вид:
------------------------------------ 
Абонент  |  Адрес 
------------------------------------ 
Абонент1   Адрес1
Абонент1   Адрес1
Абонент2   Адрес2
Абонент2   Адрес2
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Заполнение колонки индексированной таблицы
Ответ #5 - 19. Сентября 2007 :: 11:52
Печать  
"Группировать" я думаю не поможет
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Заполнение колонки индексированной таблицы
Ответ #6 - 19. Сентября 2007 :: 11:53
Печать  
Ну народ, помогите!
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Заполнение колонки индексированной таблицы
Ответ #7 - 20. Сентября 2007 :: 07:31
Печать  
Схематично:

Код
Выбрать все
ТЗ1.ДобавитьИндекс("Абонент", "*Абонент");
ТЗ2.ВНачало();
Пока ТЗ2.СледующаяСтрока() =1 Цикл
  ТЗ1.УстановитьФильтр(ТЗ2.Абонент, ТЗ2.Абонент, "Абонент");
  ТЗ1.ЗаполнитьКолонку("Абонент", "Адрес", ТЗ2.Адрес);
КонецЦикла;
 


  

De quelle planète es-tu?
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Заполнение колонки индексированной таблицы
Ответ #8 - 20. Сентября 2007 :: 08:50
Печать  
ОК, Спасибо!
  
Наверх
ICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Заполнение колонки индексированной таблицы
Ответ #9 - 20. Сентября 2007 :: 09:17
Печать  
es3000 писал(а) 19. Сентября 2007 :: 11:50:
После "объединить" получится:


Эх действительно не получится, как то я пропустил что у тебя значения в первой ТЗ не уникальны. В итоге переписал как Михаил сказал

ЗЫ А так красиво было....

  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать