|   |   | 
| 
 | Как добавить кнопку "Ввести на основании" на форму обработки | ☑ | ||
|---|---|---|---|---|
| 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) В качестве источника данных использовал ЖурналДокументов.СкладскиеДокументы     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |