Переключение на Главную Страницу Страницы: 1 ... 3 4 [5]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Поле выбора значения a la 8.xx (число прочтений - 40786 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поле выбора значения a la 8.xx
Ответ #60 - 30. Августа 2006 :: 05:54
Печать  
ADirks писал(а) 30. Августа 2006 :: 04:30:
Про родителя.  Сделать можно, и видимо нужно. И ещё нужно будет сделать задавание владельца. И возможно всякие другие начальные фильтры.  И поиск по любому текстовому полю наверное тоже не помешает.

Блин, ну почему вот так всегда?!! Хотел сделать маленькую такую примочечку, а получается монстр какой-то...


Может быть потому что изначально оч хорошие идеи тебе в голово приходят!  Подмигивание
Ну если ты сделаешь всё что тут написал, вообще конфетка получиться!
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Поле выбора значения a la 8.xx
Ответ #61 - 05. Сентября 2006 :: 11:21
Печать  
Kurya писал(а) 05. Сентября 2006 :: 11:00:
А у меня не работает Плачущий
1С вываливается.
Ошибка:
оПолеВвода_Контрагент.ПриНажатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО);
{\\CRAY\COPY_1C_KONF\КЛАССЫ\EDITFIELD\ПОЛЕВЫБОРА_ТЕСТ.ERT(5)}: State HY000, native 0, message [Microsoft][ODBC SQL Server Driver]Подключение занято до получения результатов для другого hstmt
Это чего оно?

Надо полагать, где-то курсор открыт (т.е. где-то используется метод ODBCRecordSet::Открыть()).
  
Наверх
 
IP записан
 
Kurya
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 28
Зарегистрирован: 24. Мая 2006
Re: Поле выбора значения a la 8.xx
Ответ #62 - 05. Сентября 2006 :: 11:42
Печать  
Сорри, разобрался.
Версия 1срр была 2.0.2.2
Поставил 2.0.3.1 заработало

ЗЫ: Родитель действительно очень нужен. А вот код имхо нет.
  
Наверх
 
IP записан
 
Igor-bts
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 103
Зарегистрирован: 14. Июля 2006
Re: Поле выбора значения a la 8.xx
Ответ #63 - 24. Сентября 2006 :: 06:54
Печать  
Небольшая модификация, для учета справочника юез иерархии
///******************************** ADirks 17.08.2006
Процедура Инит(Конт, _ИдентификаторПоляВвода, ИдентификаторМаскирующегоТекста, _МаксКоличествоЭлементов) Экспорт
     КонтекстФормы                  = Конт;
     ИдентификаторПоляВвода      = _ИдентификаторПоляВвода;
     ТекстНаФорме                  = КонтекстФормы.Форма.ПолучитьАтрибут(ИдентификаторМаскирующегоТекста);
     МаксКоличествоЭлементов      = _МаксКоличествоЭлементов;
     стрПрефиксНаименования      = "";
     
     ТекстНаФорме.Видимость(0);
     
     Модуль = СоздатьОбъект("ВыполняемыйМодуль");
     Модуль.УстановитьМодуль("
     |Функция ПолучитьЗначение()
     |      Возврат "+ИдентификаторПоляВвода+";
     |КонецФункции
     |
     |Процедура УстановитьЗначение(НовоеЗначение)
     |      "+ИдентификаторПоляВвода+" = НовоеЗначение;
     |КонецПроцедуры
     |
     |Функция Вид()
     |      Возврат "+ИдентификаторПоляВвода+".Вид();
     |КонецФункции
     |");
     Модуль.НазначитьКонтекст(КонтекстФормы);
     Модуль.КомпилироватьМодуль();
     Модуль.ВыполнитьМодуль();

     МД                        = СоздатьОбъект("MetaDataWork");
     ВидСправочника      = Модуль.Вид();
     ИмяТаблицы            = МД.ИмяТаблицыСправочника(ВидСправочника);
     МетаСпр                  = Метаданные.Справочник(ВидСправочника);
     ЕстьГруппы            = ?(МетаСпр.КоличествоУровней>1,1,0);

     запросКоличествоБезПрефикса = СоздатьОбъект("ODBCRecordSet");

     Если _фЭтоСКЛ = 1 Тогда
           запросКоличествоБезПрефикса.Подготовить("
           |Set NoCount ON
           |SELECT count(*)
           |FROM "+ИмяТаблицы+" Спр (NoLock)
           |WHERE IsMark = 0 " +?(ЕстьГруппы=1,"AND IsFolder = 2",""));
     Иначе
           запросКоличествоБезПрефикса.УстБД(_ODBCDatabase);
           ТекстзапросКоличествоБезПрефикса ="
           |SELECT count(*)
           |FROM "+ИмяТаблицы+"
           |WHERE IsMark = 0 "  +?(ЕстьГруппы=1,"AND IsFolder = 2","");
     КонецЕсли;      
     
     Если _фЭтоСКЛ = 1 Тогда
           Если ПоискПоВхождению = 0 Тогда
                 стрУсловие = "Descr >= RTrim(@Prefix) AND Descr < RTrim(@Prefix)+'яяяя'";
           Иначе
                 стрУсловие = "Descr like '%'+RTrim(@Prefix)";
           КонецЕсли;
     Иначе
           Если ПоискПоВхождению = 0 Тогда
                 стрУсловие = "RTrim(Upper(Descr)) >= RTrim(:Префикс) AND RTrim(Upper(Descr)) < (RTrim(:Префикс)+'яяяя')";
           Иначе
            // похожее наименование (здесь обязательно приведение к верхнему регистру)
                 стрУсловие = "RTrim(Upper(Descr)) LIKE :Префикс";
           КонецЕсли;
     КонецЕсли;
     
     запросКоличествоСПрефиксом = СоздатьОбъект("ODBCRecordSet");
     Если _фЭтоСКЛ = 1 Тогда
           запросКоличествоСПрефиксом.Подготовить("
           |Set NoCount ON
           |DECLARE @Prefix varchar("+МетаСпр.ДлинаНаименования+")
           |SET @Prefix = ?
           |SELECT count(*)
           |FROM
           |      "+ИмяТаблицы+" Спр (NoLock)
           |WHERE IsMark = 0 " +?(ЕстьГруппы=1,"AND IsFolder = 2","")+" AND "+стрУсловие+"
           |");
           запросКоличествоСПрефиксом.ДобПараметр(1, 14, МетаСпр.ДлинаНаименования, 0);
     Иначе
           запросКоличествоСПрефиксом.УстБД(_ODBCDatabase);
           ТекстзапросКоличествоСПрефиксом = "
           |SELECT count(*)
           |FROM
           |      "+ИмяТаблицы+"
           |WHERE IsMark <> '*' " +?(ЕстьГруппы=1,"AND IsFolder = 2","")+" AND "+стрУсловие+"
           |";
     КонецЕсли;

     запросЭлементы = СоздатьОбъект("ODBCRecordSet");
     Если _фЭтоСКЛ = 1 Тогда
           запросЭлементы.Подготовить("
           |Set NoCount ON
           |DECLARE @Prefix varchar("+МетаСпр.ДлинаНаименования+")
           |SET @Prefix = ?
           |SELECT
           |      RTrim(Descr) + ' (' + LTrim(Code) + ')|""'+ID+'""' Представление
           |FROM
           |      "+ИмяТаблицы+" (NoLock)
           |WHERE IsMark = 0 " +?(ЕстьГруппы=1,"AND IsFolder = 2","")+" AND "+стрУсловие+"
           |");
           запросЭлементы.ДобПараметр(1, 14, МетаСпр.ДлинаНаименования, 0);
     Иначе
           запросЭлементы.УстБД(_ODBCDatabase);
           ТекстзапросЭлементы = "
           |SELECT
           |      RTrim(Descr) + ' (' + LTrim(Code) + ')|""'+ID+'""' Представление"+РазделительСтрок+
           "FROM
           |      "+ИмяТаблицы+"
           |WHERE IsMark <> '*' " +?(ЕстьГруппы=1,"AND IsFolder = 2","")+" AND "+стрУсловие+"
           |";
     КонецЕсли;
КонецПроцедуры
  
Наверх
ICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поле выбора значения a la 8.xx
Ответ #64 - 05. Октября 2006 :: 09:22
Печать  
Вот бы из этого класса сделать иерархию  Подмигивание
В базовый класс при инициализации передавать следующее:
  • Соединение с базой - тогда станет возможно выбирать значения из другой базы
  • Имя таблицы, наименование ключевого поля, наименование поля "Наименование" - тогда можно будет выбирать значения из инородных систем (ЕГАИС и иже с ними).

В наследнике от этого класса определить текущий функционал.
В другом наследнике изменить поведение метода ПоказатьСписокЭлементов, чтобы вводить значения в ТЗ или МногострочнуюЧасть.
Еще неплохо было бы функции УстановитьЗначение и ПолучитьЗначение не добавлять при наличии из в модуле (чтобы при выборе можно было выполнить дополнительные действия в вызывающем модуле).
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
FogOfJokes
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 1
Зарегистрирован: 11. Октября 2006
Re: Поле выбора значения a la 8.xx
Ответ #65 - 13. Октября 2006 :: 17:33
Печать  
Доброго дня(скорее ночи)! У меня возникла следующая проблема: хочу сделать в ТиС подбор
номенклатуры как в конфигураторе "Методы модуля", т.е. список по набранному фильтру (как я понимаю тема, которую многоуважаемые обсуждают).
код следующий:

      
Код
Выбрать все
СписокВыбора = "Провода высокого напряжения ВАЗ 08 ТРЕК
					  |Рычаг ВАЗ (верхний) левый Трек в сборе
					  |Рычаг ВАЗ (верхний) правый Трек в сборе
					  |Рычаг ВАЗ (нижний) левый Трек в сборе
					  |Рычаг ВАЗ (нижний) правый Трек в сборе
					  |Сайлентблок рессоры Газель (Трек)
					  |Сайлентблоки ВАЗ (Трек)
					  |Сайлентблоки ВАЗ 2121 (Трек)";
	  //офигенно быстрый!!
	  Аддон=СоздатьОбъект("SelectValue.SelectVal");
	  ВозврФ = Аддон.SelectPopUp(СписокВыбора, , РазделительСтрок)


	  //медленный но удобный
	  //Аддон=СоздатьОбъект("Svcsvc.Service");
	  //ВозврФ = Аддон.FilterValue(СписокВыбора, 1+4+16, "", 100, 100, 1) 



очень сильно не устраивает быстрый поиск в 1С, т.е. наименование нужно
набирать полностью а потом шариться дальше в поисках нужного
      
работает все "хорошо". Но есть несколько НО:
самый быстрый  SelectValue.SelectVal.SelectPopUp т.к. 15 000 номенклатуры фильтрует
на ура. но нет возможности установить позицию и размеры окна подбора
как в SvcSvc.FilterValue и если не влазит наименование то не происходит его
полный показ при наведении мышкой.

Проблема такова: не знаю ни VB ни C++.
Исходники svcsvc(на С++ 6.0) и SelectValue(на VB) взял.
у меня VisualStudio 2005. компилится пока не хочет ни то ни другое.
Пытаюсь хотябы заставить работать. Может кто подскажет рекомендации по конвертации проектов с предыдущих версий VS.

Хочу перенести механизм поиска вхождений перенести из SelectValue
    в SvcSvc.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поле выбора значения a la 8.xx
Ответ #66 - 16. Октября 2006 :: 06:31
Печать  
Пожалуйста, начни новую тему по своему посту.
В этой теме ИМХО мы обсуждаем указанный класс.
  

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


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Поле выбора значения a la 8.xx
Ответ #67 - 02. Ноября 2006 :: 05:43
Печать  
Класс переехал в состав демо-конфы по ТП и ActiveX. В этой ветке обновлять его больше не буду.

http://www.1cpp.ru/forum/YaBB.pl?num=1155187084
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поле выбора значения a la 8.xx
Ответ #68 - 02. Ноября 2006 :: 07:09
Печать  
ADirks писал(а) 02. Ноября 2006 :: 05:43:
Класс переехал в состав демо-конфы по ТП и ActiveX. В этой ветке обновлять его больше не буду.

http://www.1cpp.ru/forum/YaBB.pl?num=1155187084

Но там же у тебя только для SQL. А тут ещё и Артур для дбф-ков старается...
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Поле выбора значения a la 8.xx
Ответ #69 - 02. Ноября 2006 :: 08:23
Печать  
Поле выбора там с дополнениями от Артура.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поле выбора значения a la 8.xx
Ответ #70 - 02. Ноября 2006 :: 11:19
Печать  
ADirks писал(а) 02. Ноября 2006 :: 08:23:
Поле выбора там с дополнениями от Артура.

А ты его забросил? Влруг изменения какие будут (ну хотя бы родитель, владелец  Круглые глаза)... и Артур оперативно под дбф забабацает...   Подмигивание
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Поле выбора значения a la 8.xx
Ответ #71 - 02. Ноября 2006 :: 14:11
Печать  
Ну почему забросил?!  Просто теперь всё будет в одной куче, в одном МДшнике.
Как я могу забросить то, чем я постоянно пользуюсь. В той конфе, которую щас делаем, везде где можно втыкаем такие поля.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 
ОтправитьПечать