Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка (число прочтений - 13355 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
17. Июня 2010 :: 05:18
Печать  
Предложение добавить в объект ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
( как назвать иетод не принципиально)

Рассматривая тему http://www.1cpp.ru/forum/YaBB.pl?num=1276610073/36#36
обнаружил что если есть заполненная Таблица Значений и нам нужно
выгрузить колонку этой Таблицы Значений
во временную таблицу то придеться выполнить
создать списокзначений
выгрузить туда колонку ТЗ
после этого воспользоваться методом ODBCRecordSet :: УложитьСписокОбъектов

Новый метод позволит программе работать чуть быстее ( не нужно выгружать ТЗ в список )
и чуть проще программировать и чуть больше функционал 1cpp


примерный синаксис :
УложитьОбъекты_из_ТЗ_Колонка(ТЗ,Колонка,ИмяТаблицы_sql,ВидЭлементов)
где ТЗ  таблица значений или ИТЗ
Колонка или число - номер колонки, или строка Название Колонки
ИмяТаблицы_sql Имя временной таблицы sql
ВидЭлементов - Строка. Вид справочника для иерархического включения элементов

--------------------
Либо можно модифицировать  УложитьСписокОбъектов
так чтобы если  первый параметр это ТЗ то ВидЭлементов  задает колонку
этой ТЗ(либо в виде номера или названия колонки).
но новый метод по моему лучше.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #1 - 17. Июня 2010 :: 05:55
Печать  
Чего уж там, лучше сразу аналог из 1sqlite - УложитьТЗ сделать
Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #2 - 17. Июня 2010 :: 08:56
Печать  
Z1

Eprst писал(а) 17. Июня 2010 :: 05:55:
Чего уж там, лучше сразу аналог из 1sqlite - УложитьТЗ сделать
Улыбка

Вот во-первых, о да.
Вот во-вторых, это надо делать на базе универсальных интерфейсов, как это сделано для выгрузки ИТ, например.
Я, может, вектор хочу уложить, или ИТ.
Ну и в третих у тебя много полезных предложений, есть опыт - может быть, возьмешься за реализацию?
Если получится - без проблем включу в состав компоненты.
  

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #3 - 17. Июня 2010 :: 09:14
Печать  
kms писал(а) 17. Июня 2010 :: 08:56:
Z1

Eprst писал(а) 17. Июня 2010 :: 05:55:
Чего уж там, лучше сразу аналог из 1sqlite - УложитьТЗ сделать
Улыбка

Вот во-первых, о да.
Вот во-вторых, это надо делать на базе универсальных интерфейсов, как это сделано для выгрузки ИТ, например.
Я, может, вектор хочу уложить, или ИТ.
Ну и в третих у тебя много полезных предложений, есть опыт - может быть, возьмешься за реализацию?
Если получится - без проблем включу в состав компоненты.

Можно попробовать.
Только не ясно что из предложенного реализовывать(вроде как три варианта уже)
У меня есть только 2.3 в текстах ( потому что что выше надо
вроде компилятор переставлять  а его и нет и VC6 надо оставлять
вдруг что со старыми работающими объектами)
(Ну и с субботы у меня отпуск на одну неделю.)
Т.е. наверное обсуждать более конкретно задание надо в личной почте ?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #4 - 17. Июня 2010 :: 14:38
Печать  
Ну, наверное, в идеале должен получиться некий механизм, который укладывает заданные колонки источника в таблицу БД.
Я, правда, не знаю, насколько его востребованность стоит затрат на реализацию.

ОК, можно отдохнуть, а потом вернуться к этой теме.
  

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



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #5 - 18. Июня 2010 :: 10:11
Печать  
Для своих задач пользуюсь примером trad-а
http://www.1cpp.ru/forum/YaBB.pl?num=1170322440/7#7
мне хватает...
  
Наверх
ICQ  
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #6 - 18. Июня 2010 :: 18:44
Печать  
УложитьТЗ в 1sqlite не позволяет укладывать отдельные колонки - только всю ТЗ.
Из этого также следует, что этот метод к тому же не разворачивает по иерархии, тк в общем случае при количестве колонок более одной, совершенно непонятно, как это делать.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #7 - 18. Июня 2010 :: 19:01
Печать  
orefkov писал(а) 18. Июня 2010 :: 18:44:
УложитьТЗ в 1sqlite не позволяет укладывать отдельные колонки - только всю ТЗ.
Из этого также следует, что этот метод к тому же не разворачивает по иерархии, тк в общем случае при количестве колонок более одной, совершенно непонятно, как это делать.

ИМО, разворачивание по иерархии можно бы сделать вообще отдельным методом.
Взяли источник, одну конкретную колонку развернули, остальные скопировали.
В свое время я и типизацию предлагал явно делать отдельным методом (разнести с моментом выборки данных).
  

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #8 - 23. Августа 2010 :: 14:17
Печать  
наконец то смог уделить внимание своему же предложению по улучшению 1сpp
сейчас на тестовой 1сpp сделано
УложитьСписокЗначений(Знач1,ИмяТаблицы, ИмяСправочника);

Знач1 может были либо спискомЗначений либо ТаблицаЗначений
Когда первыйпараметр есть ТаблицаЗначений то
укладываем во временную таблицу первую колонку.

Пример кода
Код
Выбрать все
Процедура Сформировать1()
	Запрос = СоздатьОбъект("ODBCRecordSet");

	Сообщить("Работает  сформировать1");
	Запрос = СоздатьОбъект("ODBCRecordSet");
	Список1=СоздатьОбъект("СписокЗначений");
	Список1.ДобавитьЗначение(ВыбТовар,"");
	Список1.ДобавитьЗначение(ВыбТовар1,"");
	Запрос.УложитьСписокОбъектов(Список1,"#Х_Список1","Товары");

	ТекстЗапроса = " select Id [Тов  $Справочник.Товары]
	| from $Справочник.Товары (NOLOCK)
	| where Id in ( select val from #Х_Список1  ) ";
	тз=Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
	Сообщить("Колво строк = " + тз.КоличествоСтрок() );
	тз.ВыбратьСтроку();
КонецПроцедуры

Процедура Сформировать2()
	Запрос = СоздатьОбъект("ODBCRecordSet");

	Сообщить("Работает  сформировать2");
	Запрос = СоздатьОбъект("ODBCRecordSet");
	Таб1 = СоздатьОбъект("ТаблицаЗначений");
	Таб1.НоваяКолонка("Тов","Справочник.Товары");
	Таб1.НоваяСтрока();
	Таб1.Тов = ВыбТовар;
	Таб1.НоваяСтрока();
	Таб1.Тов = ВыбТовар1;
	Запрос.УложитьСписокОбъектов(Таб1,"#Х_Список1","Товары");


	ТекстЗапроса = " select Id [Тов  $Справочник.Товары]
	| from $Справочник.Товары (NOLOCK)
	| where Id in ( select val from #Х_Список1  ) ";
	тз=Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
	Сообщить("Колво строк = " + тз.КоличествоСтрок() );
	тз.ВыбратьСтроку();
КонецПроцедуры


 



Т.е. процедуры  Сформировать1 ,Сформировать2 дают одинаковый результат.

Также есть идеи как улучшить и  сделать для любой(не первой) колонки ТаблицыЗначений.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #9 - 24. Августа 2010 :: 04:54
Печать  
Тестовая библиотека (версия 2.0.3.3) с реализованным #8
  

1CPP_006.rar ( 422 KB | Загрузки )
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #10 - 24. Августа 2010 :: 05:27
Печать  
Давай-ка я сюда свое мнение тоже закину

Цитата:
Хорошие новости.
Но, как водится, есть вопросы.

1. Каков процент потерь на дополнительном шаге для выгрузки из ТЗ в СЗ?
2. С одной стороны хотелось бы работать с любой колонкой ТЗ
3. С другой - не только ТЗ, но и с колонками ИТ, векторами и т.п.
4. Ну и с третьей - не хотелось бы менять интерфейс методов типа УложитьСписокОбъектов (т.е. хочется иметь возможность передавать именно первым параметром СЗ, Вектор, или колонку ТЗ/ИТ (которые пока как отдельные объекты не существуют)).

Надо бы сопоставить выигрыш от п.1. и потери на реализацию п.2-4.
Конечно, если сделать, будет красиво - но стоит ли оно того?

Собственно, в пп. 2-4 говорится не более и не менее - а о дополнительном объекте под названием "итератор".
Мне понятна его архитектура и семантика использования, но ресурсов на реализацию сейчас у меня нет.

Поэтому надо все же получить ответ на п. 1 и уже тогда делать выводы.
  

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #11 - 24. Августа 2010 :: 05:43
Печать  
Цитата:
1. Каков процент потерь на дополнительном шаге для выгрузки из ТЗ в СЗ?

Процент потерь 0
Ради этого все и затевалось.
внутри 1c++ вместо цикла по списку значений идет цикл по ТЗ и все.

Цитата:
С одной стороны хотелось бы работать с любой колонкой ТЗ

Это естественно надо будет делать. Как тоже уже придумал.

Цитата:
С другой - не только ТЗ, но и с колонками ИТ, векторами и т.п.3.

Ну сначала надо сделать для ТЗ после этого можно будет добавить и другие объекты.

Цитата:
Ну и с третьей - не хотелось бы менять интерфейс методов типа УложитьСписокОбъектов

Интерфейс остался прежним что видно из #8. Т.е. будет полная совместимость с работающими программами.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #12 - 24. Августа 2010 :: 05:51
Печать  
Есть еще несколько идей по поводу ODBCRecordSet.
высказать их сразу и сейчас или создать для них другую ветку ?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #13 - 24. Августа 2010 :: 06:34
Печать  
Z1 писал(а) 24. Августа 2010 :: 05:43:
Процент потерь 0
Ради этого все и затевалось.
внутри 1c++ вместо цикла по списку значений идет цикл по ТЗ и все.

Меня интересует параметр, который можно оценить - эффективность твоего предложения.
Для этого надо соотносить не "0", а время затрат на выгрузку из СЗ в ТЗ (которая необходима сейчас) к общему времени выполнения.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Предложение добавить в  ODBCRecordSet метод УложитьОбъекты_из_ТЗ_Колонка
Ответ #14 - 24. Августа 2010 :: 06:35
Печать  
Z1 писал(а) 24. Августа 2010 :: 05:51:
Есть еще несколько идей по поводу ODBCRecordSet.
высказать их сразу и сейчас или создать для них другую ветку ?

Лучше в другую.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать