|
Как добавить кнопку "Ввести на основании" на форму обработки | ☑ | ||
---|---|---|---|---|
0
mvgfirst
17.02.12
✎
04:31
|
Создал обработку. Добавил в нее табличную часть.
В табличной части добавил реквизит с типом "ДокументССылка". На форму обработки добавил Табличное поле отображающее эту самую табличную часть. Хочу добавить панель с кнопками выше табличного поля. Не могу понять как добавить кнопку "Ввести на основании" аналогичную одноименной кнопке в форме списка документом. Порылся в типовых... похожего решения не обнаружил.... Прошу помощи, советом или может даже готовым решением. |
|||
1
Капитан О
17.02.12
✎
04:54
|
если не появляется при автозаполнении командной панели, то рисовать свою придётся
|
|||
2
mvgfirst
17.02.12
✎
06:02
|
Не появится... это же табличная форма на обработке.
|
|||
3
Капитан О
17.02.12
✎
06:14
|
конфигуратор придуман как раз для конфигурирования
|
|||
4
mvgfirst
17.02.12
✎
06:22
|
(3) Намек слишком утончен что бы я мог понять.... :(
|
|||
5
Капитан О
17.02.12
✎
06:23
|
(4) передаю открытым текстом: сделай свою кнопку
|
|||
6
mvgfirst
17.02.12
✎
06:28
|
Это понятно. Каким образом? Писать самому функционал поиска в метаданных документов вводимых на основании текущего?
|
|||
7
mvgfirst
17.02.12
✎
15:35
|
Кто нибудь делал такую кнопку? Поделитесь алгоритмом.
|
|||
8
BuHu
17.02.12
✎
15:39
|
ты свой журнал документов что ли рисуешь или что ?
|
|||
9
BuHu
17.02.12
✎
15:42
|
(7) какой там алгоритм , проверяешь позиционирования на строке в таблице , проверяешь что в строке есть документ на основании которого собираешься вводить новый , создаешь новый документ нужного типа , заполняешь по основанию .
|
|||
10
mvgfirst
17.02.12
✎
15:48
|
(8) Ну не журнал, обработка выводит список документов двигающих определенный товар. И вот пользователь желает из этого списка переходить на журнал (это я нашел как сделать) и вводить на основании.
(9) Как раз прикол в том что я не знаю какого типа документ будет вводить на основании пользователь. В стандартном функционале при нажатии на эту кнопку выводится список документов которые могут быть введены на основании данного. Получатся нужно через перебор метаданных создавать свой список и выводить рядом с кнопкой? |
|||
11
Reset
17.02.12
✎
15:49
|
У своего табличного поля ставишь тип значение документ-список (нужный из)
Над полем добавляешь панель интсрументов с источником действий - твоим таб полем. Далее или включаешь автозаполнение, или добавляешь кнопку с действием "ввести на основании" |
|||
12
Reset
17.02.12
✎
15:50
|
+ (11) на список наклыдваешь отбор.
P.S. Все эти действия - для того, что самому не рисовать кнопку. |
|||
13
Reset
17.02.12
✎
15:51
|
(12) Если отбор не хочется, то похоже на "Получатся нужно через перебор метаданных создавать свой список и выводить рядом с кнопкой"
|
|||
14
Reset
17.02.12
✎
15:53
|
Ну, не рядом, а здесь из кнопки красивое подменю
|
|||
15
Reset
17.02.12
✎
15:53
|
а сделать*
|
|||
16
BuHu
17.02.12
✎
15:54
|
вроде как у документа есть "является основанием для..." -вывести список выбора
|
|||
17
Reset
17.02.12
✎
15:58
|
(16) Наоборот, "ВводитсяНаОсновании" есть - в метаданных. Ну ТС про это знает)
|
|||
18
mvgfirst
17.02.12
✎
15:58
|
(16) Ну понятно, я так и думал. Что ж... займусь "изобразительным творчеством".
|
|||
19
Reset
17.02.12
✎
15:59
|
(18) Да ладно, чего там, простой цикл :)
|
|||
20
BuHu
17.02.12
✎
15:59
|
(17) мне почему то кажется что и (16) имеет место быть
|
|||
21
Reset
17.02.12
✎
16:00
|
(20) неа
|
|||
22
BuHu
17.02.12
✎
16:04
|
(21)http://i015.radikal.ru/1202/fb/4f417b920c01.jpg не оно?
|
|||
23
Reset
17.02.12
✎
16:04
|
(22) Нет.
|
|||
24
BuHu
17.02.12
✎
16:05
|
(23) а что это? или эти данные нигде не хранятся ?
|
|||
25
Reset
17.02.12
✎
16:07
|
(24) Хранятся, но во ВводитсяНаОсновании, в тех объектах, которые там перечислены.
Это форма для удобства так сделана. |
|||
26
mvgfirst
17.02.12
✎
16:07
|
В СП нашел только "ВводитсяНаОсновании" свойство метаданных документа:
ОбъектМетаданных: Документ (MetadataObject: Document) ВводитсяНаОсновании (BasedOn) Использование: Только чтение. Описание: Тип: КоллекцияЗначенийСвойстваОбъектаМетаданных. Коллекция объектов конфигурации, данные которых могут являться основанием для ввода нового объекта базы данных этого типа. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
27
Reset
17.02.12
✎
16:09
|
+(25) Это логично, зачем связи хранить дважды.
|
|||
28
mvgfirst
17.02.12
✎
16:10
|
Т.е. перебор всех документов и анализ свойства "ВводитсяНаОсновании" для каждого из них. Ищем там свой документ - и если поиск удался ... добавляем в список?!
Прикольно. Вопрос - неужели это ранее никто не реализовывал? И в типовых нигде нет? |
|||
29
Reset
17.02.12
✎
16:12
|
"Ищем там свой документ - и если поиск удался ... добавляем в список?!"
Да. Сделай таки ради меня не список, а красивое меню) Панель.Кнопки.КнопкаПодменюВвестиНаОсновании.Кнопки.Добавить(); :) |
|||
30
mvgfirst
17.02.12
✎
16:20
|
(29) Ну это уж полюбому :) Придеццо делать теперь именно так )))
|
|||
31
mvgfirst
17.02.12
✎
16:24
|
(29)
Учитывая что в таблице в которой у меня хранятся документы, будут содержаться документы разного вида, придется этот цикл по заполнению выполнять в событии "ПриАктивизацииСтроки". Отсюда вопрос - не будет ли визуальных эффектов связанных с переформированием данного списка при смене строки? |
|||
32
mvgfirst
17.02.12
✎
16:26
|
(31) Имеются ввиду - нежелательные визуальные эффекты, такие как мерцания кнопки или еще что в этом духе.
Или правильнее составить список вводимых на основании для каждого вида документа которые будет в этой таблице, и хранить его в качестве кеша, а уж оттуда подгружать при смене вида документа. Почему спрашиваю - насколько целесообразно заморачиватся с такого рода кешированием.... или достаточно будет просто переформировывать список, каждый раз при смене строки пробегая по всем метаданным. |
|||
33
Reset
17.02.12
✎
16:32
|
Мне кажется, заметно не будет (визуально), ну кроме как на совсем медленных компьютерах. Никаких обращений к БД тут нет, а перформируемое подменю "невидимо"
|
|||
34
Reset
17.02.12
✎
16:34
|
Обработчик на каждый пункт подменю один и тот же, в котором по имени кнопки можно получать требуемое имя метаданных (для создания на основании)
|
|||
35
Reset
17.02.12
✎
16:36
|
Ну да, получается некотjрая возьня, зато кнопка будет как родная :-) (особенно если картинку ей установить такую же)
|
|||
36
Baximilian
17.02.12
✎
16:36
|
Есть у меня вопрос, не проще ли создать свой журнал документов?
Засунуть туда все документы которые тебе надо и все, будете тебе кнопка. |
|||
37
Reset
17.02.12
✎
16:37
|
(36) На журнал отбор придется ставить, у него не все документы предполагаются в таблице
|
|||
38
Reset
17.02.12
✎
16:39
|
+(37) А если отбор не простой, придется типа ссылка в() делать, а это тормоза.
|
|||
39
Baximilian
17.02.12
✎
16:40
|
(38) а постоянное беганье по метаданным, это легко? да и если у него такие отборы, он их все равно выполняет только в запросе когда список строит, не так ли?
|
|||
40
Reset
17.02.12
✎
16:41
|
(32) Гарантированно не тормозящий вариант - повесить подменю на правый клик (тогда придется меня рисвоать только при нажатии). Но придется учить ее (правую кнопку) нажимать. Многие не умеют ;)
|
|||
41
mvgfirst
17.02.12
✎
16:41
|
(36)(37) Вот про журнал и отбор, не совсем понимаю. Как это мне поможет. Вернее понимаю как журнал поможет вывести кнопку... но как это будет работать в контексте моей задачи...
Объясню - есть серийный номер. Он првязан к какому-то товара. При вводе серийного номера пользователем, обработка выбирает все документы в которых использовался этот товар с этим серийным номером. И выводит их в табличную часть на обработке. Каким боком тут можно использовать журнал?! Я шото недоганяю... приведите пример пожалуйста... может и вправду есть более элегантное решение. |
|||
42
Baximilian
17.02.12
✎
16:43
|
(41) Ну тут тебе еще и критерий отбора надо будет сделать, и все заработает.
|
|||
43
mvgfirst
17.02.12
✎
16:45
|
Ага, кажись доганяю. С помощью запроса получаю список документов которые нужно вывести в журнал. Потом в журнале добавляю отбор у которого ставлю условие "В списке" и указываю список документов который нужен. И получаю журнал только с нужными ме документами.
|
|||
44
Baximilian
17.02.12
✎
16:45
|
хотя может я и не прав, в документах используется только товар или и серийный номер?
|
|||
45
mvgfirst
17.02.12
✎
16:46
|
Ну что же... идея рабочая... только вот как форму журнала разместить на форме моей обработки.
Т.к. если пользователь введет часть серийного номера - то в обработки выводится список товаров которые содержат этот фрагмент серийного номера, а потом уже при перемещении по этому списку отображается перечень документом для каждого товара. |
|||
46
Baximilian
17.02.12
✎
16:46
|
(43) ну это ты предложил точно работающий вариант.
|
|||
47
Reset
17.02.12
✎
16:47
|
(46) Это я ее предложил в (11) . Разве документ-список заменить на журнал )
|
|||
48
mvgfirst
17.02.12
✎
16:48
|
(44) Это типовая конфигурация УТП
В документах есть две табличные части Товары и СерийныеНомера. Связаны по полю "Ключ связи". При этом серийные номера - это подчиненный справочник у справочника номенклатура. Но сложность заключается в том что если ведется учет по характеристикам - то соответствие конкретного серийного номера можно выловить только из документа. |
|||
49
mvgfirst
17.02.12
✎
16:50
|
(47) Т.е. я правильно понял, я могу положить на форму обработки табличное поле любого журнала, так?
|
|||
50
Baximilian
17.02.12
✎
16:51
|
(49) да, так как ДокументСписок, там можно выбрать ЖурналСписок, или как то так
|
|||
51
Reset
17.02.12
✎
16:51
|
(49) конечно, тип значения у табличного поля установить нужный из ЖурналДокументовСписок, далее по тексту)
|
|||
52
Baximilian
17.02.12
✎
16:52
|
(49) ЖурналДокументовСписок вот, подсмотрел)
|
|||
53
mvgfirst
17.02.12
✎
16:53
|
(50)(51)(52) Фигасе! Вот жеж... век живи век учись.
Все класно, идея очень даже мне нравится. Есть только одно но - для этого придется добавлять объект типа журнал в конфигурацию. Что лишает обработку универсальности. Изначально эта обработка планировалась как "Дополнительная внешняя форма" подключаемая через всем-известный функционал типовых конфигураций. |
|||
54
Reset
17.02.12
✎
16:55
|
(53) Это если не подойдет ни один из существующих.
Кроме того, хотел бы еще раз сказать что отбор типа "ссылка в списке" может существенно тормозить, если список ссылок достаточно большой. Потестируй. |
|||
55
mvgfirst
17.02.12
✎
16:57
|
(54) Мне кажется "ссылка в списке" на вид документа - должна полюбому попасть в какой-то из индексов. Тормозить не должна. Да и по одному товару не может быть "огромного действительно влияющего на скорость" списка документов.
|
|||
56
mvgfirst
17.02.12
✎
17:16
|
Посмотрел существующие журналы, больше всего подходит Журнал "Складские документы". Т.к. в нем есть все документы которые часто используются в бизнес-процессах покупки и продажи товара.
Но вот смущает что табличная часть "Серийные номера" существует еще и в других документах (которые не включены в журнал складские документы) таких как например "Авансовый отчет". Т.е. получается если недайбог кто-то что-то купить по авансовому отчету да еще с серийным номером - в журнале я не смогу отбразить этот документ. Вот и получается что, если делать обработку "для людей" что бы могли использовать все кому надо (например скачав с Инфостарта) - журнал не подходит. Получается выход один? Рисовать собственные кнопки? |
|||
57
mvgfirst
17.02.12
✎
17:18
|
Хотя Журнал - в 100500 раз более "красивое" решение. Т.к. пользователь сам сможет настроить список нужных ему полей, да и работать будет как с журналом... без каких либо ограничений связанных с тем что я что-то упустил или недодумал в процессе разработки "своих кнопок".
|
|||
58
mvgfirst
17.02.12
✎
17:33
|
Еще вопрос, если я наложу на журнал отбор, как запретить пользователю его снять, не запревщая при этом добавлять свои отборы в дополнение к уже установленному?
|
|||
59
Reset
17.02.12
✎
17:37
|
(58) Отбор по ссылку интерактивно не снимается.
|
|||
60
Reset
17.02.12
✎
17:37
|
по ссылке*
|
|||
61
mvgfirst
17.02.12
✎
18:07
|
Вообщем пока сделал так:
Добавил на форму обработки табличное поле, и командную панель. В командной панели ИсточникДанных = ТабличноеПоле. Автозаполнение = Истина. В методе "ПриАктивизацииСтроки" списка товаров написал: // Текст запроса вырезан - может быть любой в принципе Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); СписокДляОтбора = Новый СписокЗначений; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл СписокДляОтбора.Добавить(ВыборкаДетальныеЗаписи.Документ); КонецЦикла; ЭлементОтбора = ТабличноеПоле1.Отбор.Ссылка; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке; ЭлементОтбора.Значение = СписокДляОтбора; Все работает "НА УРА!" :) |
|||
62
mvgfirst
17.02.12
✎
18:12
|
(61) В качестве источника данных использовал ЖурналДокументов.СкладскиеДокументы
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |