1с проверить нажатие кнопки
Сегодня мы продолжим изучать вывод приветствия пользователю, но только теперь оно будет выводится в тот момент, когда была нажата кнопка пользователем.
Давайте приступим к созданию данного функционала.
Для этих целей давайте создадим новый справочник, который будет называться "Экспериментальный" (Рисунок 1). Создаем его для того, чтобы учиться в нем и не поломать тот функционал, который уже есть в нашей конфигурации.
Перейдем на вкладку подсистем и добавим его в подсистему "Управление". Перейдем на вкладку "Формы" и создадим форму элемента для этого справочника (Рисунок 2).
Откроем форму и начнем создавать функционал. На этот раз мы создадим процедуру для формы, а у каждой формы есть свой модуль, который называется "Модуль формы". Находится он на второй вкладке снизу (Рисунок 3).
В этот модуль можно перейти двумя способами:
1. Просто нажать на вкладку и вы окажитесь в модуле (Рисунок 3).
2. Выбрать специальное событие и оно переведет вас в этот модуль.
Первое время, пока мы обучаемся и пока еще мало знаем, лучше всего пользоваться вторым способом.
Приступим ко второму способу. Этот способ является лучшим, так как вы выбираете элемент на форме и сразу же связываете его с процедурой в модуле, а используя первый способ, нужно прописывать процедуру и потом выбирать элемент, который вы хотите связать с этой процедурой с помощью специального свойства.
Чтобы создать команду, необходимо перейти на вкладку "Команды", затем на вкладку "Команды формы" и нажать на значок плюсика.
После этого перетащим команду на форму. Посмотрите на рисунок 4, в левой колонке нет нашей команды (кнопки), ее нужно туда перетащить.
Перетаскиваем команду на форму (Рисунок 5).
Запустите пользовательский режим и откроем форму элемента данного справочника (Рисунок 6).
На форме элемента появилась кнопка, на нее можно нажать, но ничего не произойдет, так как мы не прописывали никакой процедуры.
Давайте пропишем ее, но для начала нужно связать кнопку с процедурой. Для этого нужно выделить команду, нажать на значок увеличительного стекла напротив свойства действие и в новом окне выбрать "На клиенте" (Рисунок 7).
После того, как нажмете "Ок", платформа автоматически переведет вас в модуль формы и там вместо зеленой строки (это закомментированная строка) вписать команду, которую мы использовали в прошлый раз (Рисунок 8).
Запустим и проверим кнопку в пользовательском режиме (Рисунок 9).
На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том, что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!
Ссылка для вступления телеграм-канал - t.me.Apiscourses
Подписаться в группу ВКонтакте
Прошлые уроки:
На этом все. Жду Вас на следующем занятии.
P.S. Подписывайтесь на мой канал :-)
программирование программирование 1с 1с предприятие обучение онлайн обучение 1с
Управляемый интерфейс.
Я создал на обработке несколько кнопок, всех привязал к одной и той же команде.
Я хочу, чтобы при нажатии на кнопку изменился ее шрифт. Т.е. в команде нужно получить ту кнопку, на которую я нажал, и у нее поменять шрифт.
Как обратиться к кнопке, на которую нажал пользователь?
(1) nayd,
Задай своим кнопкам синонимы, а потом с помощью свойства формы ТекущийЭлемент сможешь определить, какая из кнопок была нажата.
А то мне пришло в голову
(1) nayd, создать объекты с именами, легко генерируемыми программно (вроде "Кнопка1", "Кнопка2" и т.д.), и в 45 событиях переходить в общую процедуру, проверять, что за кнопка, и от этого выполнять другие действия.
Только так. ООП нет в 1С (о чем многие неимоверно радуются), поэтому избежать 45 событий вам никак не удастся. Собственно, в 10 уже вам показали пример бессмысленности какого-либо другого пути.
Это не "недоработка" платформы, а прямое следствие "понимания" разработчиков в вопросе разработки платформы.
Эти, и подобные вещи, давно являющиеся элементарными в мире ООП - невозможно реализовать в 1С. Просто невозможно. Имитацию сделать еще можно, засыпать терминами, кнопочки сделать, назвать все "умными" словами, чтоб 1с-неофиты тут же падали в обморок едва заслышав "новшества", но реализовать как неотемлемую (т.е. надежную, производительную, качественную, удобную и т.д.) часть платформы - нельзя.
Таких кнопок - 45, все производят одно и то же действие. Так что не вариант создавать для каждой кнопки команду.
zamichnik
Спасибо большущее.
ТекущийЭлемент - как раз то, что нужно!
(0) что-то суть ускользнула.
45 кнопок - делают одно и то же действие? Это Игра такая - как пятнашки?
(7) frc, ну, например, автор реализует что-нибудь типа клавиатуры 4-октавного синтезатора. Why not? :)
Ну ладно, раскрою секрет :)
Есть лотерея "Гослото 6 из 45".
Из 45 чисел я выбираю 31 число (для этого и сделал 31 кнопку, и чтобы при нажатии было видно, что она нажата или отжата) и нажимаю кнопку "сформировать", программа мне формирует из них 31 комбинацию по 6 чисел для Гослото.
(10) Надо создавать программно и кнопку, и команду, которая ссылается на определенную процедуру. Может кому пригодится:
Здравствуйте! Такая задача. При интерактивном проведении документа необходимо проверить некое условие, задать вопрос пользователю и в зависимости от его ответа либо выполнить проведение, либо отменить команду. Т.к. режим использования модальности отключен, то такой код: &НаКлиенте ТекстВопроса = "У клиента имеется достаточно средств на депозите, чтобы оплатить оказанные ему услуги. Клиент действительно хочет рассчитаться наличными?"; Иначе ТекстВопроса = "У клиента имеются средства на депозите для частичной оплаты оказанных ему услуг. Клиент действительно хочет оплатить всю сумма наличными?"; КонецЕсли; Все работает, но возникает проблема, что если пользователь нажал "Провести и закрыть", то после его утвердительного ответа документ проведется но форма не закроется. В общем, нужно узнать, какую кнопку нажал пользователь: "Провести и закрыть" или просто "Провести". Как это сделать?
Но так делают только мудаки. Ответы на такие вопросы должны храниться в документе, а для этого предусмотрены реквизиты объектов и проверки заполнения
Как тут использовать реквизиты объектов и проверки заполнения? Нужно задать уточняющий вопрос, а не проверять, все ли правильно заполнил пользователь.
Когда же люди научатся читать СП? "Глобальный контекст (Global context) ПоказатьВопрос (ShowQueryBox) Синтаксис: ПоказатьВопрос(<ОписаниеОповещенияОЗавершении>, , , , , , ) Параметры: Тип: ОписаниеОповещения. Содержит описание процедуры, которая будет вызвана после закрытия окна ввода значения со следующими параметрами: - результат выбора пользователя: значение системного перечисления или значение, связанное с нажатой кнопкой. В случае закрытия диалога по истечении времени - значение Таймаут, - значение, которое было указано при создании объекта ОписаниеОповещения"ОписаниеОповещенияОЗавершении>
Ну и? Читать умею вроде. И в курсе про дополнительные параметры. И если посмотришь на код, то я их там и использую. И вопрос как раз и заключается в том, как узнать, что нажал пользователь, чтобы передать это значение в дополнительные параметры.
Еще раз повторяю, если кто неправильно понял мой вопрос: нужно просто узнать, нажал пользователь "Провести и закрыть" или "Провести". Еще до самого вопроса.
ниух все уточняющие вопросы. Если для проведения нужно какое-то значение, его нужно хранить в документе и не давать проводить, пока значение не заполнено.
Да причем тут заполнено или не заполнено? Еще раз: пользователь выбрал, что клиент рассчитывается наличными, но при этом на депозите клиента есть бабло. Вот я и спрашиваю пользователя, а клиент реально не хочет использовать бабло с депозита, или это ты забыл изменить режим оплаты с "наличными" на "с депозита"? Никаких тут реквизитов и т.п.
Если пользователь отвечает "Да" (т.е. "ну да, ничего я не забыл, просто клиент так хочет"), то так и продолжаем проводить документ. А если пользователь выбирает "нет" (т.е. "ой, да, забыл, ща выберу, что надо"), то отменяем команду и позволяем пользователю подумать и выбрать другой режим оплаты.
Блин, ну и зачем мне про "режим модальности". Короче, упрощаю вопрос. Просто ситуация: пользователь нажал одну из двух кнопок в документе, либо "Провести и закрыть", либо "Провести". Как узнать какую из них?
ни как. Удалить генерируемые системой кнопки и сделай свои, которые будут вызывать нужные тебе методы
потому что в той статье написано, цитата: В обработчике события формы ПередЗаписью также может возникнуть потребность задать вопрос. Как и в предыдущем примере. Однако здесь вопрос так просто не решается. Отличие заключается в следующем. В предыдущем примере, оказываясь в обработчике ПередЗакрытием, мы однозначно знали действие, которое должно быть выполнено. Это закрытие формы. Поэтому в обработке оповещения мы смело писали Закрыть. Но в обработчике ПередЗаписью мы такой однозначной информации не имеем. В этом обработчике мы можем оказаться по двум причинам: если пользователь нажал Записать, или если он нажал Записать и закрыть. То есть дальнейший сценарий действий нам неизвестен. Определить его стандартными способами, находясь внутри этого обработчика, мы не можем. Поэтому тут можно предложить три варианта, но все они, к сожалению, обладают недостатками: Изменить логику прикладного решения так, чтобы не было диалога с пользователем в этом обработчике. Это не всегда возможно; В обработке оповещения с помощью собственной блокирующей формы задавать пользователю развернутый вопрос, предполагающий точное описание дальнейших действий: Отказаться?, Только записать?, Записать и закрыть? Это может выглядеть не очень красиво, ведь пользователь уже нажал "Записать и закрыть", а его опять об этом спрашивают; Не использовать стандартные команды формы Записать, "Записать и закрыть". Вместо них создать собственные команды, в которых и выполнять необходимые алгоритмы. Создание собственных команд потребует дополнительных трудозатрат.
А как можно программно нажать "Да" в стандартном 1с-ком диалоге (РежимДиалогаВопрос.ДаНет)? Как называется форма и кнопка?
Никак. Можно установить значение по умолчанию и таймаут закрытия. эти данные передабтся параметрами при создании окна.
Спасибо за ответ. Так и сделал.
Что-то.
Я не буду первооткрывателем ошибки, но возможно добавлю в в свою карму чужого сэкономленного времени. Я мучился с этой ошибкой полгода.
Умер ноутбук бухгалтера. На нем был установлен СБИС (и запрещенный к копированию ключ ГазПромБанка), и ключи, как любит делать ТП СБИСа был.
Многим рассказываю про такую штуку, и многие хотят, реализуя под каждого я нашел несколько вариантов у каждого есть свои плюсы и минусы.
Стояла задача найти Конрагента в справочнике по ИНН и КПП (кто знает, что такое обособленное подразделение, поймет). Логика проста - найти .
Эти фотографии уже встречались ранее, но не было описано как это сделано. На этот раз я напишу, не много, но будет понятно. И возможно.
Давным давно, почти три года назад звонит мне знакомая, со старой работы: -"Привет, я разбила матрицу на своем нетбуке, за сколько ег.
Всем добра. Задача: В некую таблицу скопировать все значения из столбца другой таблицы где значение справа равно некоторому. Мысли: .
Встала задача - перед записью документа произвести некоторые проверки и задать вопрос пользователю, в зависимости от ответа - провести доку.
С каждым днем все больше внедряются системы видеонаблюдения, в связи с этим системы удешевляются, и появляется оборудование работающее .
Многие используют сервисы облачного хранения файлов для резервных копий. Одним из приоритетов является Яндекс.Диск, из-за изначального о.
Пример отлова нажатия кнопок управления (вверх, вниз, влево, вправо) на клавиатуре на форме средствами 1С. Используется в играх разными авторами, так что кто первый начал - неизвестно:) Накидал, чтоб не забыть:-)
Краткое описание: на форму кидаем ТЗ 3х3 (вне пределов формы, чтобы скрыть от пользователя) и надпись с функцией (тоже вне пределов формы, чтобы скрыть от пользователя). Когда хотим начать отлов, курсор ставим в ТЗ в центральную ячейку (ТЗ у нас 3х3) и при нажатии стрелок курсор будет смещаться по ТЗ. А в функции, вызываемой из надписи мы считываем перемещение курсора и узнаем нажата ли кнопка управления по тек. позиции курсора, и какая, перемащая потом курсор опять в центр ТЗ, для считывания следующего нажатия кнопки, а соответственно перемещения курсора. Что-то типа того, в общем:-)
Специальные предложения
а вообще, способусто лет в обед.
Даже у Рупора на сайте полно примеров..
Та и во всех игрушках.
(6) Управление курсором как повесить на кнопку?
Но то, что баян, то понятно, я ж написал:-) Просто выделил и отложил, чтоб самому не забыть и объяснять одной ссылкой, как отдельный пример, чем искать в поисковике подобное, но не совсем такое, как всегда надо в данный момент:-)
Можешь еще тут поглядеть:
ЗЫ: Повесть на кнопку можно ЛЮБОЙ хоткей . и любое сочетание 2-х кнопок(шифт+а, например и т.д.)
(10) В смысле так?
http://www.erp-volga.com/hare/kb/article.31.html
"Нам потребуется: файловый менеджер FAR, plug-in к нему по имени DocFileBrowser, справочник по кодам клавиш (в смысле, которые Virtual Keys, VK_), и любой HEX-редактор (можно использовать соответствующую функцию FAR'a)."
(11) Можно и так, только технология шагнула далеко вперёд..
достаточно просто скрипта к опенконфу в пару строк, или GComp или turbomd
или любым средством для правки компаунда.
всё лучше, чем Hex редактор..
12, кстати, можно скачать обработку-заготовку с уже установленными хоткеями на кнопки, стрелками, например. И просто скопировать кнопки на свою, заменив потом вызываемые ими функции.
Я правда внешнюю добавлял в конфигурацию сначала, для верности, перед копированием и копировал уже из одного в другой в пределах конфы, но из внешнего ert-файла тоже должно нормально копироваться.
Просмотры 17583
Загрузки 76
Рейтинг 7
Создание 09.02.09 21:24
Обновление 09.02.09 00:00
№ Публикации 19008
Тип файла Архив с данными
Конфигурация Конфигурации 1cv7
Операционная система Не имеет значения
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
См. также
StartManager 1.4 - Развитие альтернативного стартера Промо
Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.
Читайте также: