1с проверить нажатие кнопки

Обновлено: 06.07.2024

Вопрос про кнопку!
Ребят как сделать так что бы вместо серой кнопки, я мог поставить какую-нибудь картинку?(и еслиь.

интересный вопрос про кнопку submit
добрый день. Возник такой вопрос. предположим у нас есть форма <form> <input type="submit".

Вопрос про транзакции и хранимые процедуры
Здравствуйте! У меня вот такой вопрос. Есть в SQL Server 2000 две таблицы. В №1 содержатся.

Вопрос про выходной параметр хранимой процедуры
Есть хранимая процедура. В ней создается временная таблица с записанноым в неё результатом. Как.

Вот я создал кнопку на форме .Куда надо зайти что бы появилось окно ввода кода и я смог назначить процедуру на кнопку?

Если платформа 8.х, то - на кнопке нажмите пр. кнопкой мыши, в конт. меню выберите "Свойства". В открывшемся окне, справа от поля "Действие" нажмите кнопку с лупой. В результате, будет создана процедура обработки события нажатия на кнопку и вы попадете в редактор кода для ее написания.

На такой вопрос ответить трудно. Приведите текст ошибки (а лучше скриншот) и опишите ситуацию, в которой она возникает.

Если-бы сразу указали платформу (8.2) и режим разработки конфигурации (управляемое приложение) было-бы легче ответить

В правой верхней части окна ФормаЭлемента перейдите на закладку "Команды". Добавьте новую команду, зайдите в ее свойства и добавьте обработчик в поле "Действие". Затем назначьте эту команду кнопке (в свойствах кнопки поле "ИмяКоманды").

Karaton, не вижу такую закладку . =(

Добавлено через 3 минуты
А если слева в разделе конфигурация щелкнуть по добавить команду не одно и то же будет?
А как эту кнопку переместить на форму? А то я ее создал,а на форме она не отображается.

Добавлено через 3 минуты
Еще я когда делал форму и один реквизит у меня был с типа ХранениеЗначения,то при создании формы он не был в списке выбора граф для формы => не отображается на форме.Так и должно быть?

Karaton, не вижу такую закладку . =(

Добавлено через 3 минуты
А если слева в разделе конфигурация щелкнуть по добавить команду не одно и то же будет?
А как эту кнопку переместить на форму? А то я ее создал,а на форме она не отображается.

Добавлено через 3 минуты
Еще я когда делал форму и один реквизит у меня был с типа ХранениеЗначения,то при создании формы он не был в списке выбора граф для формы => не отображается на форме.Так и должно быть?

Кнопка появится на форме, когда вы назначите для нее команду.

Karaton,
Я перебил код,теперь как сохранить и назначить на кнопку?

Добавлено через 3 минуты
Все разобрался.Теперь надо пофиксить ошибки.

Добавлено через 1 минуту

Выдает такие ошибки:

: Тип не определен (ДиалогВвыбораФайла)
ДиалогОткрытияФала=Новый <<?>>ДиалогВвыбораФайла(Режим); (Проверка: Тонкий клиент)
: Тип не определен (ХранилищеЗначения)
ЭлементХранилища=Новый <<?>>ХранилищеЗначения(ВыбраннаяКартинка); (Проверка: Тонкий клиент)

Karaton,
Я перебил код,теперь как сохранить и назначить на кнопку? Karaton,
А как можно вам перекинуть конфигурацию,что бы вы посмотрели ,где я допустил ошибки? Karaton,
А как можно вам перекинуть конфигурацию,что бы вы посмотрели ,где я допустил ошибки?

Этого делать не нужно.

: Тип не определен (ДиалогВвыбораФайла)
ДиалогОткрытияФала=Новый <<?>>ДиалогВвыбораФайла(Режим); (Проверка: Тонкий клиент)

Здесь у вас опечатка в название типа - ДиалогВвыбораФайла - лишняя буква "в".

: Тип не определен (ХранилищеЗначения)
ЭлементХранилища=Новый <<?>>ХранилищеЗначения(ВыбраннаяКартинка); (Проверка: Тонкий клиент) А здесь предупреждение о том, что данная конструкция не будет работать в режиме тонкого клиента, т.к. конструктор ХранилищеЗначения доступен только в режиме запуска "Толстый клиент", на сервере и внешнем соединении.
Разбейте ваш код на две части, вынеся работу по созданию хранилища в отдельную функцию, которая будет исполняться на сервере. Например, так:
У меня данный набор кода, написанный в модуле формы тестовой конфигурации нормально отработал.
Значит, что-то еще не так. Какие ошибки?

А все разобрался.Все норм

Добавлено через 3 минуты
Код работает нормально .
Теперь появилась другая ошибка:Поле Наименование не опознано .
Его нет на форме и в реквизитах я его не объявлял .

Код работает нормально .
Теперь появилась другая ошибка:Поле Наименование не опознано .
Его нет на форме и в реквизитах я его не объявлял . Текст ошибки лучше полностью копировать сюда из окна, где она выдается в 1С. Ибо, так - непонятно.
И ситуацию, в результате которой она появилась, тоже лучше описать. Karaton,
Я случайно при создании формы указал,что бы было добавлено Наименование,но мне оно не нужно.
Я удалил его с формы,но при пробном запуске,меня просят его ввести .Как избавиться от наименование?
Хотел удалить и по новой создать форму,но пишут ,что удаление формы не возможно т.к имеются ссылки в других объектах . Karaton,
Я случайно при создании формы указал,что бы было добавлено Наименование,но мне оно не нужно.
Я удалил его с формы,но при пробном запуске,меня просят его ввести .Как избавиться от наименование?
Хотел удалить и по новой создать форму,но пишут ,что удаление формы не возможно т.к имеются ссылки в других объектах .

Про Наименование все-равно непонятно. У справочника есть реквизит Наименование, который создается по-умолчанию. При создании формы, вы вынесли его на форму. А затем удалили с формы. Ничего криминального в этом нет. Поэтому непонятно, на что оно у вас там ругается. Может скриншот сделаете, ругани этой?

Здравствуйте! Такая задача. При интерактивном проведении документа необходимо проверить некое условие, задать вопрос пользователю и в зависимости от его ответа либо выполнить проведение, либо отменить команду. Т.к. режим использования модальности отключен, то такой код: &НаКлиенте ТекстВопроса = "У клиента имеется достаточно средств на депозите, чтобы оплатить оказанные ему услуги. Клиент действительно хочет рассчитаться наличными?"; Иначе ТекстВопроса = "У клиента имеются средства на депозите для частичной оплаты оказанных ему услуг. Клиент действительно хочет оплатить всю сумма наличными?"; КонецЕсли; Все работает, но возникает проблема, что если пользователь нажал "Провести и закрыть", то после его утвердительного ответа документ проведется но форма не закроется. В общем, нужно узнать, какую кнопку нажал пользователь: "Провести и закрыть" или просто "Провести". Как это сделать?

примитив - записать в переменную что либо в принажатиикнопки. потом смотри эту переменную где угодно

Но так делают только мудаки. Ответы на такие вопросы должны храниться в документе, а для этого предусмотрены реквизиты объектов и проверки заполнения

Это понятно. А стандартных механизмов никаких нет? Что-то вроде кода возврата диалога и т.п.?

Как тут использовать реквизиты объектов и проверки заполнения? Нужно задать уточняющий вопрос, а не проверять, все ли правильно заполнил пользователь.

Когда же люди научатся читать СП? "Глобальный контекст (Global context) ПоказатьВопрос (ShowQueryBox) Синтаксис: ПоказатьВопрос(<ОписаниеОповещенияОЗавершении>, <ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>) Параметры: Тип: ОписаниеОповещения. Содержит описание процедуры, которая будет вызвана после закрытия окна ввода значения со следующими параметрами: <РезультатВопроса> - результат выбора пользователя: значение системного перечисления или значение, связанное с нажатой кнопкой. В случае закрытия диалога по истечении времени - значение Таймаут, <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения"

Ну и? Читать умею вроде. И в курсе про дополнительные параметры. И если посмотришь на код, то я их там и использую. И вопрос как раз и заключается в том, как узнать, что нажал пользователь, чтобы передать это значение в дополнительные параметры.

Еще раз повторяю, если кто неправильно понял мой вопрос: нужно просто узнать, нажал пользователь "Провести и закрыть" или "Провести". Еще до самого вопроса.

ниух все уточняющие вопросы. Если для проведения нужно какое-то значение, его нужно хранить в документе и не давать проводить, пока значение не заполнено.

неа, нужно тебе что-то другое, а это просто то, *как* ты придумал этого добиться

Да причем тут заполнено или не заполнено? Еще раз: пользователь выбрал, что клиент рассчитывается наличными, но при этом на депозите клиента есть бабло. Вот я и спрашиваю пользователя, а клиент реально не хочет использовать бабло с депозита, или это ты забыл изменить режим оплаты с "наличными" на "с депозита"? Никаких тут реквизитов и т.п.

Если пользователь отвечает "Да" (т.е. "ну да, ничего я не забыл, просто клиент так хочет"), то так и продолжаем проводить документ. А если пользователь выбирает "нет" (т.е. "ой, да, забыл, ща выберу, что надо"), то отменяем команду и позволяем пользователю подумать и выбрать другой режим оплаты.

см , поиск по "Вопрос в обработчике формы ПередЗаписью "

в обсуждении на партнерском сказали не выпендриваться и сделать свои кнопки.

Блин, ну и зачем мне про "режим модальности". Короче, упрощаю вопрос. Просто ситуация: пользователь нажал одну из двух кнопок в документе, либо "Провести и закрыть", либо "Провести". Как узнать какую из них?

ни как. Удалить генерируемые системой кнопки и сделай свои, которые будут вызывать нужные тебе методы

Когда уже ты научишься читать вопрос и понимать его?

Ну это я и так понимаю, просто думал, что должны же быть какие-то стандартные механизмы.

потому что в той статье написано, цитата: В обработчике события формы ПередЗаписью также может возникнуть потребность задать вопрос. Как и в предыдущем примере. Однако здесь вопрос так просто не решается. Отличие заключается в следующем. В предыдущем примере, оказываясь в обработчике ПередЗакрытием, мы однозначно знали действие, которое должно быть выполнено. Это закрытие формы. Поэтому в обработке оповещения мы смело писали Закрыть. Но в обработчике ПередЗаписью мы такой однозначной информации не имеем. В этом обработчике мы можем оказаться по двум причинам: если пользователь нажал Записать, или если он нажал Записать и закрыть. То есть дальнейший сценарий действий нам неизвестен. Определить его стандартными способами, находясь внутри этого обработчика, мы не можем. Поэтому тут можно предложить три варианта, но все они, к сожалению, обладают недостатками: Изменить логику прикладного решения так, чтобы не было диалога с пользователем в этом обработчике. Это не всегда возможно; В обработке оповещения с помощью собственной блокирующей формы задавать пользователю развернутый вопрос, предполагающий точное описание дальнейших действий: Отказаться?, Только записать?, Записать и закрыть? Это может выглядеть не очень красиво, ведь пользователь уже нажал "Записать и закрыть", а его опять об этом спрашивают; Не использовать стандартные команды формы Записать, "Записать и закрыть". Вместо них создать собственные команды, в которых и выполнять необходимые алгоритмы. Создание собственных команд потребует дополнительных трудозатрат.

Понятно. Т.е. стандартного механизма нет. Печально. Ладно, придется делать свои кнопки. Спасибо.

Сегодня мы продолжим изучать вывод приветствия пользователю, но только теперь оно будет выводится в тот момент, когда была нажата кнопка пользователем.

Давайте приступим к созданию данного функционала.

Для этих целей давайте создадим новый справочник, который будет называться "Экспериментальный" (Рисунок 1). Создаем его для того, чтобы учиться в нем и не поломать тот функционал, который уже есть в нашей конфигурации.

Перейдем на вкладку подсистем и добавим его в подсистему "Управление". Перейдем на вкладку "Формы" и создадим форму элемента для этого справочника (Рисунок 2).

Откроем форму и начнем создавать функционал. На этот раз мы создадим процедуру для формы, а у каждой формы есть свой модуль, который называется "Модуль формы". Находится он на второй вкладке снизу (Рисунок 3).

В этот модуль можно перейти двумя способами:

1. Просто нажать на вкладку и вы окажитесь в модуле (Рисунок 3).

2. Выбрать специальное событие и оно переведет вас в этот модуль.

Первое время, пока мы обучаемся и пока еще мало знаем, лучше всего пользоваться вторым способом.

Приступим ко второму способу. Этот способ является лучшим, так как вы выбираете элемент на форме и сразу же связываете его с процедурой в модуле, а используя первый способ, нужно прописывать процедуру и потом выбирать элемент, который вы хотите связать с этой процедурой с помощью специального свойства.

Чтобы создать команду, необходимо перейти на вкладку "Команды", затем на вкладку "Команды формы" и нажать на значок плюсика.

После этого перетащим команду на форму. Посмотрите на рисунок 4, в левой колонке нет нашей команды (кнопки), ее нужно туда перетащить.

Левая колонка - это отображение формы в виде списка.
Команда становится кнопкой при перетаскивании на форму.

Перетаскиваем команду на форму (Рисунок 5).

Запустите пользовательский режим и откроем форму элемента данного справочника (Рисунок 6).

На форме элемента появилась кнопка, на нее можно нажать, но ничего не произойдет, так как мы не прописывали никакой процедуры.

Давайте пропишем ее, но для начала нужно связать кнопку с процедурой. Для этого нужно выделить команду, нажать на значок увеличительного стекла напротив свойства действие и в новом окне выбрать "На клиенте" (Рисунок 7).

После того, как нажмете "Ок", платформа автоматически переведет вас в модуль формы и там вместо зеленой строки (это закомментированная строка) вписать команду, которую мы использовали в прошлый раз (Рисунок 8).

Запустим и проверим кнопку в пользовательском режиме (Рисунок 9).

На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том, что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!

Ссылка для вступления телеграм-канал - t.me.Apiscourses

Подписаться в группу ВКонтакте

Прошлые уроки:

На этом все. Жду Вас на следующем занятии.

P.S. Подписывайтесь на мой канал :-)

программирование программирование 1с 1с предприятие обучение онлайн обучение 1с

Работа в программном комплексе 1С осуществляется как одним человеком, так и группой людей. Соответственно, существует необходимость проверки вносимых в документы изменений. Речь идет о том, чтобы посмотреть кто, когда и какие корректировки вносил в определенный объект данных. Даже если пользователь всего один, но при этом абсолютный новичок, он может совершать ошибки. И в данном случае также необходима возможность просмотра истории изменений. Как и где это можно сделать в 1С рассмотрим в статье.

  1. Механизмы отслеживания изменения данных в базах 1С
  2. Настройки хранения история изменений
  3. Просмотр истории изменения в документе
  4. Сравнение версий объекта данных
  5. Переход на предыдущую версию
  6. Как включить версионирование в различных решениях 1С
  7. Как узнать кто менял документ с помощью журнала регистрации
  8. Как узнать с какими объектами данных работал пользователь?
  9. Групповое изменение данных (ГИД)
  10. Просмотр ранее измененных реквизитов

1. Механизмы отслеживания изменения данных в базах 1С

В рассматриваемом программном продукте существуют 3 механизма, которые помогают отследить корректировки:

  • журнал регистрации;
  • платформенный механизм истории данных;
  • версионирование

Для того чтобы каждый из этих механизмов правильно работал необходимо изначально провести настройки.

2. Настройки хранения история изменений

Стоит отметить, что настройку можно включить как для всего объекта данных, так и выборочно для каких-то его частей. Например, только для реквизитов. Тем самым экономится место объема сохраненных данных. Для того, чтобы сохраненные корректировки не занимали места больше, чем сами объекты, с которыми производилась эта работа, необходимо грамотно настраивать механизм версионирования. В противном случае произойдет замедление работы всей программы. Включить сам механизм может либо сотрудник предприятия, работающий в системе, либо разработчик в конфигураторе.

Для того чтобы настроить хранение истории изменений, следует перейти в левом меню в раздел «Администрирование», далее в раздел «Общие настройки» и затем «История изменений».

Читайте также: