Имя: Пароль:
1C
1С v8
Как добавить кнопку "Ввести на основании" на форму обработки
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
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) В качестве источника данных использовал ЖурналДокументов.СкладскиеДокументы
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой