Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Индексированная таблица (число прочтений - 5432 )
Попытка1С
1c++ donor
Отсутствует


Делал все, иногда быстро.

Сообщений: 103
Местоположение: Санкт-Петербург
Зарегистрирован: 28. Февраля 2008
Пол: Мужской
Индексированная таблица
07. Апреля 2008 :: 11:35
Печать  
Всем привет.

Есть задача сравнения двух больших таблиц с остатками. Нужно перебрать построчно первую таблицу, с поиском значений во второй, найденные значения если таковые есть, запихать еще в одну таблицу.

Умные люди подсказали что надо курить индексированную таблицу.
Но я что-то до конца не впитал как это можно реализовать.
Т.е. создать две индексированные таблицу с остатками, или создать одну обычную ТЗ и одну индексированную в которой и искать.
Может кто кинет пример какой нибудь, перебора.
Я начал делать так

абПерваяИндекс = СоздатьОбъект("ИндексированнаяТаблица");
     ТабПерваяИндекс.Загрузить(ТабПервая);
     ТабПерваяИндекс.ДобавитьИндекс("ТоварМестоХранения","*Товар,*МестоХранения",0);
     
     ТабВтораяИндекс = СоздатьОбъект("ИндексированнаяТаблица");
     ТабВтораяИндекс.Загрузить(ТабВторая);
     ТабВтораяИндекс.ДобавитьИндекс("ТоварМестоХранения","*Товар,*МестоХранения",0);
     
     СЗТоварМестоХранения = СоздатьОбъект("СписокЗначений");
     СзТоварМестоХранения.ДобавитьЗначение(Товар);
     СзТоварМестоХранения.ДобавитьЗначение(МестоХранения);
Тут заглох, ибо до конца не понимаю принцип работу. Объясните плз.



  
Наверх
 
IP записан
 
Попытка1С
1c++ donor
Отсутствует


Делал все, иногда быстро.

Сообщений: 103
Местоположение: Санкт-Петербург
Зарегистрирован: 28. Февраля 2008
Пол: Мужской
Re: Индексированная таблица
Ответ #1 - 07. Апреля 2008 :: 11:46
Печать  
Модеры перенесите тему сюды плз
http://www.1cpp.ru/forum/YaBB.pl?board=general
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Индексированная таблица
Ответ #2 - 07. Апреля 2008 :: 11:47
Печать  
ИМХО Задача объяснена неточно.
Нужно описать:
по каким ключевым полям сравниваются таблицы?
набор ключевых полей уникален для обеих таблиц?
В новую таблицу переносим только ключевые позиции или всю найденную строку?
Если п.1 и п.2 ответ да, то все просто - кури метод Пересечение Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Попытка1С
1c++ donor
Отсутствует


Делал все, иногда быстро.

Сообщений: 103
Местоположение: Санкт-Петербург
Зарегистрирован: 28. Февраля 2008
Пол: Мужской
Re: Индексированная таблица
Ответ #3 - 07. Апреля 2008 :: 11:57
Печать  
Поясню тогда еще раз задачу.

Есть две таблицы. В первой таблице номенклатура и склад по которой по счету 41 нулевое количество и ненулевая сумма.
Во второй таблице наоборот, номенклатура где нулевая сумма и ненулевое количество.
Нужно найти совподения по номенклатурам в этим таблицах.

На совподения грубо нужно сделать перемещение товара. С складом получателем из первой таблице, и отправителем из второй.
  
Наверх
 
IP записан
 
Попытка1С
1c++ donor
Отсутствует


Делал все, иногда быстро.

Сообщений: 103
Местоположение: Санкт-Петербург
Зарегистрирован: 28. Февраля 2008
Пол: Мужской
Re: Индексированная таблица
Ответ #4 - 07. Апреля 2008 :: 12:40
Печать  
Подскажите как работать с пересечением плз!

ТабПерваяИндекс = СоздатьОбъект("ИндексированнаяТаблица");
ТабПерваяИндекс.Загрузить(ТабПервая);
ТабПерваяИндекс.ДобавитьИндекс("ТоварМестоХранения","*Товар,*МестоХранения",0);

ТабВтораяИндекс = СоздатьОбъект("ИндексированнаяТаблица");
ТабВтораяИндекс.Загрузить(ТабВторая);
ТабВтораяИндекс.ДобавитьИндекс("ТоварМестоХранения","*Товар,*МестоХранения",0);

ТабПерваяИндекс.Пересечение(ТабВтораяИндекс, "ТоварМестоХранения", "ТоварМестоХранения",1);


Не догоняю =(

Может пример есть у кого нибудь.
  
Наверх
 
IP записан
 
Попытка1С
1c++ donor
Отсутствует


Делал все, иногда быстро.

Сообщений: 103
Местоположение: Санкт-Петербург
Зарегистрирован: 28. Февраля 2008
Пол: Мужской
Re: Индексированная таблица
Ответ #5 - 07. Апреля 2008 :: 13:14
Печать  
     ТабПерваяИндекс = СоздатьОбъект("ИндексированнаяТаблица");
     ТабПерваяИндекс.Загрузить(ТабПервая);
     ТабПерваяИндекс.ДобавитьИндекс("ТоварМесто","*Товар",0);
     
     ТабВтораяИндекс = СоздатьОбъект("ИндексированнаяТаблица");
     ТабВтораяИндекс.Загрузить(ТабВторая);
     ТабВтораяИндекс.ДобавитьИндекс("ТоварМесто2","*Товар",0);
     
     Сообщить("Первая "+ТабПервая.КоличествоСтрок());
     Сообщить("Вторая "+ТабВторая.КоличествоСтрок());
     Сообщить("Инд первая "+ТабПерваяИндекс.КоличествоСтрок());
     Сообщить("инд вторая"+ТабВтораяИндекс.КоличествоСтрок());
     
     ТабПерваяИндекс.Пересечение(ТабВтораяИндекс, "ТоварМесто", "ТоварМесто2",1);
     Сообщить(""+ТабПерваяИндекс.КоличествоСтрок());

Первая 317
Вторая 12068
Инд первая 317
инд вторая12068
0

Что-то не то? или просто вхождений нет?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Индексированная таблица
Ответ #6 - 07. Апреля 2008 :: 13:43
Печать  
А просто
ТабПерваяИндекс.Пересечение(ТабВтораяИндекс, "ТоварМесто", "ТоварМесто2");
что получается?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Индексированная таблица
Ответ #7 - 07. Апреля 2008 :: 14:07
Печать  
ИМХО нужен простой join.
Хотя и пересечение пойдет.

Цитата:
Что-то не то? или просто вхождений нет?

С виду - просто вхождений нет.
  

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


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Индексированная таблица
Ответ #8 - 08. Апреля 2008 :: 07:28
Печать  
Я делал запросами + обычными ТЗ
Выгружал один с отрицательными значениями, второй - с положительными
Потом заполнение и свертка
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Попытка1С
1c++ donor
Отсутствует


Делал все, иногда быстро.

Сообщений: 103
Местоположение: Санкт-Петербург
Зарегистрирован: 28. Февраля 2008
Пол: Мужской
Re: Индексированная таблица
Ответ #9 - 08. Апреля 2008 :: 11:27
Печать  
Да оказалось действительно нет вхождений. Но я до сих пор не уверен в работоспособности кода.
Будем тестить =)
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать