|
Как сделать Отбор периодических реквизитов справочника? | ☑ | ||
|---|---|---|---|---|
|
0
mirvel
27.08.10
✎
12:42
|
Как известно что периодическим реквезитам нельзя использовать командты ВыбратьЭлементыПоРеквезиту или УстановитьОбор (галочки отбор и сортировка не доступны)
Как выйти из ситуации? МОжет есть какая нибудь хорошая компонента (dll) для работы со справочниками....(вроде в 1cpp, 7plus, таких функций не замечал) |
|||
|
1
ДенисЧ
27.08.10
✎
12:43
|
ТП и нет проблем..
|
|||
|
2
mirvel
27.08.10
✎
12:45
|
тП - это что такое? ТЗ, СЗ...меня не устраивают...а ТП??
|
|||
|
3
mirvel
27.08.10
✎
12:55
|
Перебирать весь справочник и закидывать в Список, займет больше времени чем стандартная функция ВыбратьЭлементыПоРЕк..... поэтому не хочеться использоватьСписокЭлементов
|
|||
|
4
mirvel
27.08.10
✎
12:56
|
Какие есть другие варианты?
|
|||
|
5
mirvel
27.08.10
✎
13:02
|
+
|
|||
|
6
Тьма
27.08.10
✎
13:04
|
Пиши прямой запрос к 1SCONST
|
|||
|
7
ДенисЧ
27.08.10
✎
13:04
|
(2) ТабличноеПоле из 1с++
|
|||
|
8
mirvel
27.08.10
✎
13:16
|
(7) 1CPP_Classes.als, 1C++.als, 1C++_Add.als, 1CPP_Classes.als просмотрел....но что-то не вижу функций отбора...
(6) через dbf чтоли? |
|||
|
9
mirvel
27.08.10
✎
23:12
|
тема затухла....
|
|||
|
10
ДенисЧ
27.08.10
✎
23:13
|
(8) Используй поставщикДанных...
|
|||
|
11
mirvel
27.08.10
✎
23:20
|
(10).....да ну....что-то пахло, но не совсем убедительно было....дайка попробую....поставщикданных говоришь....
он управляет списком в форме?...или вообще всем справочником вне формы списка?...я так задал этот вопрос по ходу....покамись еще не подрубил ее и не прочитал описание функции.... |
|||
|
12
ДенисЧ
27.08.10
✎
23:21
|
он управляет данными, которые будут показываться в ТП...
|
|||
|
13
mirvel
27.08.10
✎
23:28
|
эх,щас бы проверил....но удаленка что-то не работает...думаю завтро проверю...Спасибо Денис.....Я так понимаю ТабличноеПоле это на подобие ТЗ и СЗ? и не имеет формы диалога? или что-то я путаю? и на самом ли деле будет быстрее делать отбор через ТП, чем через Цикл, а затем ИспользоватьСписок?
|
|||
|
14
ДенисЧ
27.08.10
✎
23:30
|
(13) тп - это элеменгт диалога. Отдельно не существует.
А быстрее - это как запрос напишешь |
|||
|
15
mirvel
27.08.10
✎
23:36
|
Элемент диалога? да ну...а как его закинуть*? Программно видимо только да?
|
|||
|
16
mirvel
27.08.10
✎
23:40
|
ни в одной из этих описаний не нашел ТП в чистом виде...1CPP_Classes.als, 1C++.als, 1C++_Add.als, 1CPP_Classes.als
в последнем описании есть классы_ДемоТП...но там только Форма.ДГС, форма.ПКС, Форма.формаспискасправочника.... Где рыть? |
|||
|
17
mirvel
27.08.10
✎
23:44
|
ТТабличноеПОлесНастройками?
|
|||
|
18
mirvel
28.08.10
✎
00:11
|
ИндексированнаяТаблица?
|
|||
|
19
zak555
28.08.10
✎
00:12
|
стоп
а если сначала использовать метод ИспользоватьДату() ??? |
|||
|
20
zak555
28.08.10
✎
00:12
|
всё равно не будет искать 67
|
|||
|
21
zak555
28.08.10
✎
00:12
|
?
|
|||
|
22
mirvel
28.08.10
✎
00:13
|
Думаю не проканает....будет крякать неправильный реквезит....
|
|||
|
23
mirvel
28.08.10
✎
00:19
|
(19) как и ожидалось...не работает...
|
|||
|
24
mirvel
28.08.10
✎
00:20
|
блин где-то видел я этого "поставщикаданных"....чтот не могу найти
|
|||
|
25
zak555
28.08.10
✎
00:25
|
да
нельзя сделать, чтоб Сортировка с "Периодическим" сочетались =( |
|||
|
26
mirvel
28.08.10
✎
00:26
|
оФорма = СоздатьОбъект("Форма");
оФорма.УстановитьФорму(Форма); тпПечатьТоваров = оФорма.СоздатьЭлементУправления("ТабличноеПоле", |
|||
|
27
mirvel
28.08.10
✎
00:32
|
блин запарился ждать помощи...может мне поможет http://openconf.1cpp.ru/beta/artbear/1cpp_classes.rar, решил скачать и посмотреть...
|
|||
|
28
mirvel
28.08.10
✎
00:34
|
главное чтобы этот ТП, помог мне решить мой ТАСК
|
|||
|
29
Cthulhu
28.08.10
✎
01:48
|
||||
|
30
mirvel
28.08.10
✎
08:50
|
подрубил поставщикаданных...через пример...пример в виде обработки...поменял справочник контрагенты на интересующий меня другой справочник, вроде бы все работает, но только в обработке....
А теперь вопрос как возвратить элемент? допустим в документ? заменить форму списка справочника этой обработкой? |
|||
|
31
ДенисЧ
28.08.10
✎
08:54
|
(40) ПриначалеВыбора()
открытьФорму() В обработке - ВыполнитьВыбор() В документе ОбработкаПодбора() |
|||
|
32
mirvel
28.08.10
✎
09:04
|
Хорошо....
В доке пропишу Процедура ПриначалеВыбора() //хотя приначалевыборазначения еще есть процедура... ОткрытьФорму("Обработка.СпрТовары); КонецПРоцедуры а в обработке? Дописать Процедура ВыполнитьВыбор() КонецПроцедуры |
|||
|
33
mirvel
28.08.10
✎
09:06
|
что-то не клеется...где то я что то не понимаю.....как получить результат обработки? т.е. получить выбранный элемент из обработки? найти его опять же в справочнике?
я полагаю результатом должен быть сам элемент? |
|||
|
34
mirvel
28.08.10
✎
09:08
|
читаю описание ТП...по http://www.1cpp.ru/docum/icpp/html/TableField.html#id3... в правильном направлении движусь?
|
|||
|
35
ДенисЧ
28.08.10
✎
09:10
|
(33) я ж написал ВыполнитьВыбор
Форма.ВыполнитьВыбор(<?>); Form.MakeChoice(<?>); Синтаксис: Форма.ВыполнитьВыбор(<Знач>) Назначение: Осуществляет выбор в форме, открытой для подбора или выбора значения (аналогично интерактивному двойному клику в подборе). Параметры: <Знач> - значение, которое выбирается в форме, открытой для подбора или выбора значения. Замечание: Доступ к методу возможен только в контексте Модуля формы через атрибут Форма. |
|||
|
36
mirvel
28.08.10
✎
09:27
|
Вот я туплююю....
ДЕнис... объясни на пальцах.... у меня есть допустим диалог с типом "справочник.товары" на форме1 куда надо вставить выбранное значение и форма2 сама обработка.... в форме 1 к диалогу я креплю процедуру: форма.ВыполнитьВыбор("Обработка.Форма2")... короче страшно туплю..... плиз..хелп |
|||
|
37
ДенисЧ
28.08.10
✎
09:29
|
ойблин..
ОбработкаВыбора() лепится в ту форму, из котрой должен придти ответ. |
|||
|
38
mirvel
28.08.10
✎
09:38
|
в форму из которой должен прийти ответ (обработка поставщика данных)
Процедура ОбработкаВыбора() Форма.ВыполнитьВыбор(контекстзначение); КонецПроцедуры а в форму в диалог куда должен возвратить значение перем контекстзначение; //******************************************* Процедура Подбор() ОткрытьПодбор("Отчет.Новый1",,контекстзначение) ; КонецПроцедуры ни хрена не понял...... |
|||
|
39
ДенисЧ
28.08.10
✎
09:40
|
F ngthm допиши процедуру ОбработкаПодбора() и удивись...
|
|||
|
40
mirvel
28.08.10
✎
09:49
|
влииин или у меня обработка неправильная.....и ли у меня мозги неправильные...грешу на последнее.....
Процедура ОбработкаПодбора() Сообщить(контекстзначение); КонецПроцедуры дописал следующее..... не фига....открывается форма обработки....а я не могу выбрать значения.... при двойном нажатии мыши она либо редактируется, либо открывается сама форма элемента..... не могу удивиться....покамись... |
|||
|
41
mirvel
28.08.10
✎
10:55
|
последний шаг вроде остался...а денис не выдержал издевательства и свалил...
|
|||
|
42
viktor_vv
28.08.10
✎
11:12
|
Можешь попроще попробовать. Прямым запросом получаешь список элементов по своим условиям, а потом ИспользоватьСписокЭлементов() в стандартной форме списка. И дальше стандартно работаешь со справочником.
СЗ = СоздатьОбъект("СписокЗначений") ; ЗапросСКЛ.ВыполнитьИнструкцию(ТекстЗапроса,СЗ) ; ИспользоватьСписокЭлементов(СЗ) ; |
|||
|
43
mirvel
28.08.10
✎
11:17
|
(42) в принципе вариант через запрос...(на много быстрее будет чем перебор?)....а вообще мне Табличное Поле очень понравилось...много функций...Как раз, то что мне нужно....главное теперь ее внедрить..
|
|||
|
44
viktor_vv
28.08.10
✎
11:18
|
Намного быстрее будет.
|
|||
|
45
mirvel
28.08.10
✎
11:24
|
(44) выполнитьИнструкцию ВК?
|
|||
|
46
viktor_vv
28.08.10
✎
11:25
|
(43) Если тебе только отбор нужен, то на мой взгляд, то ТП несколько излишне будет, слишком много телодвижений. Для журнала документов со множественным отбором ТП самое то.
ВыполнитьИнструкцию это 1С++. |
|||
|
47
viktor_vv
28.08.10
✎
11:27
|
ODBCRecordSet .
|
|||
|
48
mirvel
28.08.10
✎
11:33
|
(46) в точку попал....как раз для этих и целей нужен тП....., все те функции которые внедрены в обработку ТП, как раз и нужны...всякие отбор, фильтры, и т.д. и т.п.
|
|||
|
49
mirvel
28.08.10
✎
11:36
|
(46) чувствую для файлового варианта не подойдет... или я ошибаюсь?
|
|||
|
50
viktor_vv
28.08.10
✎
11:41
|
Для файлового варианта подойдет, только запрос надо писать по другому и там кажется не работает виртуальное значение $ПоследнееЗначение для периодических реквизитов. Надо самому написать. Для файловой не пробовал.
|
|||
|
51
mirvel
28.08.10
✎
11:44
|
select
$Номенклатура.descr as Наименование, $Номенклатура.Цена as Цена from $Справочник.Номенклатура as Номенклатура where Номенклатура.цена >0 думааешь подойдет? мне последнее значение не надо! только те где цена есть... |
|||
|
52
viktor_vv
28.08.10
✎
11:46
|
(48) Ты кажется не совсем правильно понимаешь. ТП в чистом виде служит для отображения данных, а фильтры и отборы накладываются на источник данных. Это тогда ищи готовые классы для справочников, на http://www.rikcenter.ru/solutions.php например, но там для SQL.
|
|||
|
53
mirvel
28.08.10
✎
11:48
|
(52)....не я все понял... просто я скачал готовую обработку с ТП....Подрубаю нужный мне справочник и красота....вот только не могу его сейчас использовать в доках и так далее...потому что эту обработку не могу привязать к доку!
|
|||
|
54
viktor_vv
28.08.10
✎
11:49
|
Цена периодическая ? $ПоследнееЗначение это аналог Получить(НаДату) для периодических реквизитов. Я ж говорю для получения периодического реквизита в файловой я тебе так сразу не скажу как получить.
|
|||
|
55
viktor_vv
28.08.10
✎
11:50
|
Так тебе для справочника надо или для доков, ты как-то перепрыгиваешь быстро.
|
|||
|
56
mirvel
28.08.10
✎
11:51
|
Смотри у меня есть справочник номенклатура...которую я использую для подбора в доках.....(ну допустим в табличной части выбираю номенклатуру и должен открыться не стандартная форма списка справочника, а обработка с ТП)...
|
|||
|
57
mirvel
28.08.10
✎
11:55
|
(54)....а че номенклатура.цена....в запросе не проканает? ей тоже типа.получить(датадок) нужен да? опять же в тупиковую ситуацию попадаю...вся проблема из-за этого и началась...
|
|||
|
58
viktor_vv
28.08.10
✎
12:05
|
Если периодическая не проканает. Ты бы еще немного почитал про хранение периодических реквизитов. (42) я предложил для простоты. Чтобы не мучится с ТП. А вот как там делать выбор не знаю.
|
|||
|
59
viktor_vv
28.08.10
✎
12:11
|
Могу тольк предположить, что надо смотреть в сторону события ТП Выбор() и там уже Форма.ВыполнитьВыбор()
, вместо того что там прописано. |
|||
|
60
mirvel
28.08.10
✎
12:12
|
(58) спасибо за точно расширил мой узкий кругозор!!!....
а если допустим у меня был бы скульный вариант, то как выглядил бы мой код? так? Запрос=СоздатьОбъект("Запрос"); Запрос.УстБД(сервер); СЗ = СоздатьОбъект("СписокЗначений") ; ТекстЗапроса=" |select |$Номенклатура.descr as Наименование, |$Номенклатура.цена as Наименование, |from $Справочник.Номенклатура as Номенклатура |where $Номенклатура.цена>0" Запрос.ВыполнитьИнструкцию(ТекстЗапроса,СЗ) ; ИспользоватьСписокЭлементов(СЗ) ; |
|||
|
61
mirvel
28.08.10
✎
12:12
|
:)
|
|||
|
62
mirvel
28.08.10
✎
12:13
|
(59) смотрел на Выбор()....что-т не связка не получается
|
|||
|
63
viktor_vv
28.08.10
✎
12:22
|
ТекстЗапроса="
|select |Номенклатура.id as [Номенклатура $Справочник.Номенклатура] | |from $Справочник.Номенклатура as Номенклатура |where $ПоследнееЗначение.Номенклатура.Цена(Номенклатура.id,GetDate())>0" Примерно так. |
|||
|
64
viktor_vv
28.08.10
✎
12:34
|
Там еще с типами данных надо будет смотреть при сравнении. ПоследнееЗначение вернет строку.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |