Открытие формы для ввода новой записи и автоматическое заполнение ее полей #3622


#0 by MC
Господа, подскажите, плиз: Как бы сделать так, чтобы в самодельном отчете ( непосредственно в таблице ) при щелчке на одну специальную ячейку открывался для заполнения новый Приходный Ордер и в качестве КоррСчета авоматически указывался 62.1 ???
#1 by skunk
Для открытия смотри: OpenForm(<?>,,) Синтаксис: ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>) Назначение: Открывает визуальную форму ввода нового документа (в т.ч. в режиме ввода на основании). Возвращает: 1 - если действие выполнено, 0 - иначе. Параметры: <ОписательОбъекта> - строка-описатель документа вида:  'Документ.ХХХХХ', где ХХХХХХ - вид документа; <КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен); <ДокументОснование> - документ-основание для открытия формы ввода нового документа в режиме ввода на основании (необязателен). Замечание: Пока форма открыта, тип значения параметра <КонтекстФормы> равен 100, когда закрыта - 0. а для автоматического заполнения, проще всего иметь эмдишник... в форме нужного документа, в процедуре ВводНового ставишь что типа: а в своем отчете для открытия нужного дока ставишь строчку:
#2 by 427
В поле Расшифровка этой ячейки пишешь идентификатор СпПарам В обработке перед выводом этой ячейки пишешь СпПарам=СоздатьОбъект("СписокЗначений");     при выводе ячейки в таблицу значение СпПарам заносится в поле расшифровка         в глобальнике в процедуре ОбработкаЯчейкиТаблицы добавляешь                                        if EmptyValue(Расшифровка.Get("Команда")) <> 1 then     далее идет существующий текст этой процедуры все..... наслаждаешься .....
#3 by Рупор абсурда
Не надо так ..., тут проще ч/з контекст заполнить ... Последняя твоя строчка - развод? ;))
#4 by skunk
нет просто у кого-то именины... а кто уже наверное нажрался... надро спать идти... а то опять леший куда-нить понесет
#5 by 427
Конт.КоррСчет = "62.1";  - точно развод.... КоррСчет - тип Счет...
#6 by Рупор абсурда
Почему ты так уверен? Про это ничего не сказал ... :))
#7 by 427
62.1 - Россия..... а в приходнике КоррСчет - тип Счет.... нигде не видел просто строки
#8 by MC
Не ожидал, что так шустро отреагируете - за что еще одно спасибо. Можно ли в открываемую форму передать значения ее полей не внося изменений в модуль этой формы, типа как в VBA      MyForm.Field1.Value = "62.1" А то как не хочется портить модуль часто используемых документов своими кривыми руками. По поводу слов уважаемого Рупора "тут проще ч/з контекст заполнить ..."   Конт.КоррСчет = "62.1"; Не понял (извиняюсь конечно), где писать эти строчки и что тогда писать в расшифровке ячейки "Обновить"
#9 by GrayT
"Обновить" я так понимаю это та самая ячейка приклике по которой надо создать новый ПриходныйОрдер? Если больше ни каких расшифровок использоваться не будешь, то напиши в расшифровке что угодно, хошь число, хошь слово какое. По клику в этой ячейки вызоветься процедура ОбработкаЯчейкиТаблицы. Вот в ней и напишешь Конт.  и есть ссылка на вновь открытую форму (MyForm) См. также
#10 by Asmody
чтоб было как в VBA (ну или почти так) используй 1С++ (а точнее FormEx, но 1С++ - это все и сразу). Там есть такое ServiceFormEx::SetContextVar(Context, VarName, NewValue) - установка значения переменной в заданном контексте.
#11 by MC2
Сорри за смену ника - это глупость, но я забыл пароль к старому ( МС ) To CrayT: Дружище, ты не прав. Во-первых эта байда НЕ РАБОТАЕТ! Здесь Конт - это как я понимаю свойство MyForm.Tag в VBA Во-вторых - если в процедуре ОбработкаЯчейкиТаблицыписать ОткрытьФорму("Документ.ПриходныйОрдер", Конт); то  эта форма будет открываться при формировании основного отчета, т.е. никуда кликать не надо - а форма уже открыта - это не есть гуд
#12 by GrayT
Прав. Вот внешний отчет: В стандартной бухне. В секции "Отчет" всего одна ячейка с надписью "Прав", а в поле расшифровка стоит 1. У меня работает.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С