Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6  ОтправитьПечать
Очень популярная тема (более 25 ответов) Пример работы с ТП и АкивИксами (число прочтений - 62649 )
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #45 - 17. Ноября 2006 :: 09:35
Печать  
ADirks писал(а) 17. Ноября 2006 :: 06:48:
Цитата:
Господа! А вот как бы сделать что бы не только на Справочник.Контрагенты
Причем на одной форме...
Как я понимаю нужно сделать классСправочник_МойСправочник...

Оч. просто.  Добавляешь на форму контрол нужного типа, сверху на него ложишь текстовую маску, и добавляешь в коллекцию ещё одно поле. Примерно так:
Код
Выбрать все
оПоляВвода = СоздатьОбъект("Общие.КоллекцияПолейВыбораЗначения");
оПоляВвода.Инит(Контекст);
оПоляВвода.Добавить("Контрагент",, 1);
оПоляВвода.Добавить("Автомобиль",, 1);
 

Никаких производных классов в данном случае не нужно.


Представляешь! У меня как раз второй справочник именно автомобили Улыбка
Но беда в том, что у моего справочника Автомобили нету наименования Печаль . Нужен поиск по коду... начал смотреть/переделывать запросы... и ничего не понял...
Где бы этот переключатель поставить... По коду/По наименованию... как ПоискПоВхождению
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #46 - 17. Ноября 2006 :: 09:49
Печать  
Господа! И еще один момет с выбром "a la 8.xx"
При выборе элемент справочника выбирается,  но процедура висящая на этом поле ввода не срабатывает...
Нужно же ее куда-то запихнуть...
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #47 - 17. Ноября 2006 :: 12:09
Печать  
Mashinist писал(а) 17. Ноября 2006 :: 09:35:
[quote author=ADirks link=1155187084/40#43 date=1163746091]
...Но беда в том, что у моего справочника Автомобили нету наименования ...

А такое бывет? Или имеется ввиду пустое наименование?

To Алексей: ну не надо было ветку "поля выбора а ля 8.0" прикрывать... (ИМХО)
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #48 - 17. Ноября 2006 :: 13:12
Печать  
Сейчас класс Общие.ПолеВыбораЗначения рассчитан только на фильтрацию по наименованию. Какие-то более общие вещи пока не планирую. Просто потому что это мне не нужно, и значит я не сделаю это хорошо. Но в данном конкретном случае надо в запросе все Descr заменить на Code.

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

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


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #49 - 17. Ноября 2006 :: 13:15
Печать  
Buk писал(а) 17. Ноября 2006 :: 07:11:
to ADirks
попробовал открыть обработку в тестовой конфигурации поле выбора как в 8-ке
получил ошибку:

классТСправочник@MD
Если оЭтотСпр.ПриОткрытииФормыСписка() = 0 Тогда
{Справочник.Контрагенты.ФормаСписка.ФормаСписка.Модуль(57)}: Поле агрегатного объекта не обнаружено
===========================================================================
ТСправочник::ПриОткрытииФормыСписка()
сзПараметры = Сам.Форма.Параметр;
{классТСправочник@MD(72) }
===========================================================================

Не могу понять в чем дело. Не подскажет никто?

А ты точно открываешь обработку "ТестХитрогоПоляВыбора"? Какие-то странные ошибки. Там таких не должно быть.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #50 - 17. Ноября 2006 :: 15:57
Печать  
Я по поводу поля выбора и установки первичных фильтров.
Неоднократно говорилось, что неплохо было бы сделать ИспользоватьРодителя(), ИспользоватьВладельца() и т.д.
Так вот, моё предложение:
1. В классе дописать:
Код
Выбрать все
Перем Родитель;

//---------------------------------------------------
Процедура ИспользоватьРодителя(ВыбРодитель) Экспорт
	Если ПустоеЗначение(ВыбРодитель)=0 Тогда
		Если ТипЗначенияСтр(ВыбРодитель)="Справочник" Тогда
			Если ВыбРодитель.ЭтоГруппа()=1 Тогда
				Мета = СоздатьОбъект("MetaDataWork");
				Родитель = Мета.ЗначениеВСтрокуБД(ВыбРодитель);
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры // ИспользоватьРодителя 


и в процедуре Инит()
после строк, где устанавливается значения переменной стрУсловие написать:
Код
Выбрать все
Если ПустоеЗначение(Родитель)=0 Тогда
		стрУсловие=стрУсловие+"
		|AND Parentid = '"+Родитель+"'";
	КонецЕсли; 



И потом в тесте класса (ну или где там это используется) добавляем реквизит формы с тем же типом справочника для выбора родителя с формулой, например, ПриВыбореРодителя()
Код
Выбрать все
//---------------------------------------------------
Процедура ПриВыбореРодителя()
	оПолеВвода_Контрагент.ИспользоватьРодителя(ВРодитель);
	оПолеВвода_Контрагент.Инит(Контекст, "Контрагент", "текстПрефиксКонтрагента", 500);
КонецПроцедуры // ПриВыбореРодителя 


Аналогично можно и для "ИспользоватьВладельца"...

Вроде ж ничего сложного. Или я чего упустил?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #51 - 17. Ноября 2006 :: 17:01
Печать  
Извини, но кто тебе мешает выложить готовый результат Улыбка
а не просто указывать код?

ЗЫ я свои правки к этому классу так и выкладывал.
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #52 - 20. Ноября 2006 :: 07:44
Печать  
Выкладываю свои доделки класса "Общие.ПолеВыбораЗначения". А именно:
 + Метод "ИспользоватьРодителя"
 + Метод "ИспользоватьВладельца"
 + Теперь отрабатывается формула, указанная в ПолеВвода

В архиве также обновленный Тест.

P.S. Критика приветствуется
  

EditField.zip ( 17 KB | Загрузки )
Наверх
 
IP записан
 
Buk
Junior Member
**
Отсутствует



Сообщений: 24
Зарегистрирован: 19. Сентября 2006
Re: Пример работы с ТП и АкивИксами
Ответ #53 - 20. Ноября 2006 :: 07:59
Печать  
to ADirks
Точно. Открываю именно эту обработку. Приэто эта же ошибка возникает при попытке открыть форму списка справочника контрагентов. При этом не важно откуда данная форма списка открывается.
-------------------
Так, что повторяю свою просьбу помочь разобраться в проблеме.
  
Наверх
 
IP записан
 
miandrew
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 18. Октября 2006
Re: Пример работы с ТП и АкивИксами
Ответ #54 - 23. Ноября 2006 :: 08:56
Печать  
JohnyDeath писал(а) 20. Ноября 2006 :: 07:44:
Выкладываю свои доделки класса "Общие.ПолеВыбораЗначения". А именно:
 + Метод "ИспользоватьРодителя"
 + Метод "ИспользоватьВладельца"
 + Теперь отрабатывается формула, указанная в ПолеВвода

В архиве также обновленный Тест.

P.S. Критика приветствуется


Было бы неплохо если бы все это было приделоно к более новой версии класса, той которая выложена вначале и встроена в md...
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #55 - 15. Декабря 2006 :: 12:58
Печать  
По поводу поля выбора аля v8

Кто-нибудь думал над такой возможностью -
в нужном справочнике (Контрагенты, например) устанавливаем текстовое поле
при наборе в этом поле отрабатывает схема быстрого подбора аля 8


Есть очень большой плюс - не нужно для каждой формы, где используется выбор из справочника Контрагентов, рисовать спец.поле и писать спец.код
а всего лишь в одной форме выбора для контрагентов (для нужного справочника) дать возможность пользователю работать по такой схеме.

Т.е. пользователь, как обычно, в любой форме на нужном реквизите нажимает кнопку с тремя точками для выбора контрагента, открывается форма выбора контрагента, автоматом активизируется поле набор и далее пользователь производит набор нужной подстроки с быстрым поиском.

Что скажете?
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #56 - 15. Декабря 2006 :: 18:40
Печать  
А ты сам пробовал для ТП новые фичи по быстрому поиску? Улыбка
Попробуй ради интереса... Мне больше никаких отборов теперь не надо Улыбка
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #57 - 16. Декабря 2006 :: 09:03
Печать  
в нужном справочнике (Контрагенты, например) устанавливаем текстовое поле
при наборе в этом поле отрабатывает схема быстрого подбора аля 8


Можно конечно, но это уже будет совсем не поле выбора  Улыбка
Основная фишка хитрого поля выбора -  форма списка вообще не открывается, и экономится одно нажатие мышкой/клавой.
  
Наверх
 
IP записан
 
alest
Senior Member
****
Отсутствует



Сообщений: 380
Местоположение: Гродно, Беларусь
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #58 - 20. Января 2007 :: 23:44
Печать  
JohnyDeath писал(а) 20. Ноября 2006 :: 07:44:
Выкладываю свои доделки класса "Общие.ПолеВыбораЗначения". А именно:
  + Метод "ИспользоватьРодителя"
  + Метод "ИспользоватьВладельца"
  + Теперь отрабатывается формула, указанная в ПолеВвода
P.S. Критика приветствуется


Может сразу при ините сделать после
Поле = .ПолучитьАтрибут(Ид);
Если заполнено Поле.СвязанС
ИспользоватьВладельца(.ПолучитьАтрибут(Поле.СвязанС).Значение)

(Кода под рукой нету, потому просто идея)
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пример работы с ТП и АкивИксами
Ответ #59 - 24. Января 2007 :: 16:01
Печать  
Выложена новая версия примера конфигурации.

Цитата:
Изменения от Алексея Антипина aka alest
--------------------
Доработан класс ПолеВыбораЗначения.
+ ВАЖНО : возможность ставить поле без метки !! полностью - ОЧЕНЬ УДОБНО
Теперь не нужно для каждого поля выбора рисовать на форме  доп. метку.

+ Добавлена возможность индикации пустого значения
ИспользоватьИндикаторДляПустогоЗначения(Стр)
(если не выбрано значение, можно подсветить "<???>", как в классе РеквизитОтбора)
+ возможность установить кол. символов, после которых запускается поиск
+ в монопольном режиме просто не работает, без выбрасывания исключения
+ не все запросы ДБФ работали правильно
--------------------

Изменения от Артура Аюханова aka artbear
--------------------
+ конфигурация поправлена под версию 1C++ 2.5 и под ДБФ-версию.
К сожалению, в альтернативной форме списка  справочника  в  ДБФ пока полностью работать нельзя.
--------------------


TODO
Теперь остается только нарисовать универсальный класс, который позволит без изменений текста формы модуля добавить подобный функционал к любому полю выбора.


Думаю, здесь поможет
1) ФормЕкс с его глобальным событием
ПослеОткрытия - т.е. в нем можно получить доступ к форме, проанализировать состав полей, и прописать нужный функционал.
2) мой класс Перехватчик из 1С++ 2.5, с помощью которого
пользовательский класс может перехватывать события от 1С и от ФормЕкс, т.е. перехватывать ПриНажатииКлавиатуры и т.д.

Думаю, что это будет уже не так сложно Улыбка
И в итоге мы получим совсем конфеточку - поля выбора аля v8 в любых формах 1С++.

PS Исправления по ИспользоватьРодителя/Владельца сюда не вошли - не успел сделать. У кого есть желание, просьба добавить и выложить готовые классы.

PPS Алексей, после проверки у себя выложи, плиз, поправленную в свой первый пост, ок?
  

DemoTP_AX_artbear.rar ( 81 KB | Загрузки )

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6 
ОтправитьПечать