Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Отобрать подчиненные и док. основания (число прочтений - 8026 )
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Отобрать подчиненные и док. основания
Ответ #15 - 31. Января 2008 :: 11:55
Печать  
mov68 писал(а) 31. Января 2008 :: 11:38:
При этом, как я понимаю, при записи каждого документа необходимо найти коренной документ (первый документ сделки), тогда для произвольного документа извлекаем корневой документ и уже по нему быстро и дешево получаем все связанные. Если при записи поиск не делать, а в таблицу писать Документ основание - текущий документ, то возвращаемся к первоначальной задаче но по другой таблице. Или я что-то упустил?


Именно так.
Найти первый документ сделки - довольно быстрая операция. Причем, этот первый документ можно искать тоже в этой таблице, используя IDDOC документа-основания. Если документа основания нет - то и искать ничего не надо.
Единственно, надо продумать - что хотим увидеть, когда документ находится в табличной части другого документа.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Отобрать подчиненные и док. основания
Ответ #16 - 31. Января 2008 :: 12:01
Печать  
Поддержую.
1 этап - по документу основанию находим коренной документ (select mainID from ... where ChildID='ид-шник основания')
2 этап - по документу корню поднимаем всю цепочку (select ChildID from ... where mainID='ид-шник корня полученный на 1-м этапе') добавляем доп ходы типа сортировку/грппировку/проч. и пользуемся
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Отобрать подчиненные и док. основания
Ответ #17 - 31. Января 2008 :: 12:26
Печать  
Не завидую тому кто придет сопровождать творение автора Улыбка
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: Отобрать подчиненные и док. основания
Ответ #18 - 31. Января 2008 :: 12:29
Печать  
Salimbek писал(а) 31. Января 2008 :: 12:01:
Поддержую.
1 этап - по документу основанию находим коренной документ (select mainID from ... where ChildID='ид-шник основания')
2 этап - по документу корню поднимаем всю цепочку (select ChildID from ... where mainID='ид-шник корня полученный на 1-м этапе') добавляем доп ходы типа сортировку/грппировку/проч. и пользуемся


В таком виде тоже поддерживаю, сразу не понял, что для основания у нас уже есть запись в таблице и корень ищем быстро.
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: Отобрать подчиненные и док. основания
Ответ #19 - 31. Января 2008 :: 12:34
Печать  
Еще один вопрос, при таком подходе, если документа основания нет, то желательно в таблицу прописать строку текущий документ - текущий документ ? Ведь мы заранее не знаем, будет ли вводиться на основании и корень не будет присутствовать в таблице. Или эту проверку лучше оставить программной?
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Отобрать подчиненные и док. основания
Ответ #20 - 31. Января 2008 :: 12:38
Печать  
Естественно, надо прописать.
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: Отобрать подчиненные и док. основания
Ответ #21 - 31. Января 2008 :: 14:00
Печать  
berezdetsky писал(а) 30. Января 2008 :: 10:43:
Во втором варианте, в общем случае, количество найденных документов будет больше, чем в первом.


И в первом и во втором вариантах возвращаемое значение вообще не список. В чем может быть засада?

Извиняюсь, такое выдавалось, если пытался получить список в тот же список, который передавал. Если точно брать как у тебя по тексту, то в обоих вариантах возвращает пустой список
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отобрать подчиненные и док. основания
Ответ #22 - 31. Января 2008 :: 14:10
Печать  
mov68 писал(а) 31. Января 2008 :: 14:00:
И в первом и во втором вариантах возвращаемое значение вообще не список. В чем может быть засада?

Возможно, в старой версии 1С++. ВыполнитьИнструкцию не всегда умел выгружать в СписокЗначений.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отобрать подчиненные и док. основания
Ответ #23 - 31. Января 2008 :: 14:16
Печать  
mov68 писал(а) 31. Января 2008 :: 14:00:
Извиняюсь, такое выдавалось, если пытался получить список в тот же список, который передавал. Если точно брать как у тебя по тексту, то в обоих вариантах возвращает пустой список

хм.. Вот обработка, на которой я проверял этот код. 1С++ v2.0.3.3.
  

test_003.ert ( 57 KB | Загрузки )

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: Отобрать подчиненные и док. основания
Ответ #24 - 31. Января 2008 :: 14:39
Печать  
berezdetsky писал(а) 31. Января 2008 :: 14:16:
хм.. Вот обработка, на которой я проверял этот код. 1С++ v2.0.3.3.


Извинения и мои благодарности....

Второй раз натыкаюсь, хотя встречал по веткам:
Вместо
СписокСвязанных.ДобавитьЗначение(Конт);
Нужно
СписокСвязанных.ДобавитьЗначение(Конт.ТекущийДокумент());
тогда работает

Больше понравился второй вариант, т.к. первый не смотрит ниже второго уровня подчиненности
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отобрать подчиненные и док. основания
Ответ #25 - 31. Января 2008 :: 14:50
Печать  
mov68 писал(а) 31. Января 2008 :: 14:39:
первый не смотрит ниже второго уровня подчиненности

На анализе какой строки кода основан этот вывод? Озадачен
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: Отобрать подчиненные и док. основания
Ответ #26 - 31. Января 2008 :: 15:38
Печать  
berezdetsky писал(а) 31. Января 2008 :: 14:50:
mov68 писал(а) 31. Января 2008 :: 14:39:
первый не смотрит ниже второго уровня подчиненности

На анализе какой строки кода основан этот вывод? Озадачен


Перепроверил, мой недогляд (смотрел по получаемым данным и видно проглядел)
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: Отобрать подчиненные и док. основания
Ответ #27 - 31. Января 2008 :: 15:40
Печать  
Пока замеров не сделал, но мне кажется, при всем удобстве однократного запроса, по времени тормознее, если делать несколькими по каждому уровню подчиненности от корня.

Сделал
Вариант нескольких запросов 13.78
Первый вариант одного запроса 32.41
Второй вариант одного запроса 32.31

База SQL, SQL на том же компе, что и база, монопольно.

При реальной загрузке попробую (нужно несколько дней, вносить изменения в основную базу получается раз в сутки )
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать