Версия для печати темы (https://pro1c.org.ua/index.php?s=3a5dd7d4ea155865be10f09f6eaa42da&showtopic=10862)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Отловить нажатие кнопки
Автор: VolandMaster 29.01.13, 12:37
Доброго времени суток. Может кто знает как можно отловить нажатие кнопки(мной созданной) на сервере?
Автор: logist 29.01.13, 12:38
Никак.
Автор: VolandMaster 29.01.13, 12:48
Значит у меня не верный подход к задаче.При проводке есть контроль остатка, мне нужно создать кнопочку которая делает проводку минуя контроль остатков. Отдельные движения писать не хочеться, при модификации кода будет не удобно. Я хотел отловить нажатие кнопки и если была нажата пропустить контроль.
Как еще можно решить задачу?
Автор: logist 29.01.13, 13:22
Цитата(VolandMaster @ 29.01.13, 12:48)
Как еще можно решить задачу?
Сделать реквизит булево "не контролировать остатки" и разместить его на форме, при проведении учитывать его значение.
Автор: Vofka 29.01.13, 13:25
В модуле объекта завести переменную ОтключитьКонтрольОстатков. При нажатии на кнопку делать
ОтключитьКонтрольОстатков = Истина;
В месте, где происходит контроль - проверяйте
Если ОтключитьКонтрольОстатков <> Истина Тогда
// контроль остатков
КонецЕсли;
Автор: VolandMaster 29.01.13, 13:52
Цитата(logist @ 29.01.13, 13:22) http://pro1c.org.ua/index.php?act=findpost&pid=63992
В модуле объекта завести переменную
ОтключитьКонтрольОстатков. При нажатии на кнопку делать
ОтключитьКонтрольОстатков = Истина;
В месте, где происходит контроль - проверяйте
Если ОтключитьКонтрольОстатков <> Истина Тогда
// контроль остатков
КонецЕсли;
Кнопочка в модуле формы, если я объявлю экспортную перемену в модуле объекта, как изменить ее в модуле формы?
Автор: Vofka 29.01.13, 14:32
Цитата(VolandMaster @ 29.01.13, 13:52)
Кнопочка в модуле формы, если я объявлю экспортную перемену в модуле объекта, как изменить ее в модуле формы?
А, это же
УГ УФ
.
&НаКлиенте
Процедура ПровестиПереопределенная(Команда)
ПровестиПереопределеннаяНаСервере();
КонецПроцедуры
Процедура ПровестиПереопределеннаяНаСервере()
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.Тест = Истина; // Тест - экспортная переменная модуля объекта
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры
После этого в обработке проведения можете получить значение переменной Тест.
Автор: VolandMaster 29.01.13, 15:23
Цитата(Vofka @ 29.01.13, 14:32)
А, это же
УГ УФ
.
&НаКлиенте
Процедура ПровестиПереопределенная(Команда)
ПровестиПереопределеннаяНаСервере();
КонецПроцедуры
Процедура ПровестиПереопределеннаяНаСервере()
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.Тест = Истина; // Тест - экспортная переменная модуля объекта
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры
После этого в обработке проведения можете получить значение переменной Тест.
Так пробовал, глобальная переменная в модуле объекта все равно не получает значение.
Автор: logist 29.01.13, 15:28
Цитата(VolandMaster @ 29.01.13, 13:52)
Думал но нужна именно кнопочка.
Сделайте кнопочку которая будет устанавливать реквизит в Исттину, в чем проблема?
Автор: Vofka 29.01.13, 15:34
Цитата(VolandMaster @ 29.01.13, 15:23)
Так пробовал, глобальная переменная в модуле объекта все равно не получает значение.
Я перед тем как написал - проверил. Всё получает.
Автор: VolandMaster 29.01.13, 16:12
Модуль формы
&НаКлиенте
Процедура ПровестиБезКонтроля(Команда)
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Объект.ссылка);
ПровестиБезКонтроляНаСервере();
Прочитать();
ПоказатьОповещениеПользователя("Документ проведен",НавигационнаяСсылка,Строка(Объект.Ссылка));
КонецПроцедуры
&НаСервере
Функция ПровестиБезКонтроляНаСервере()
Тест = РеквизитФормыВЗначение("Объект");
Тест.ОтключитьКонтрольОстатка = Истина;
Док = Объект.Ссылка.ПолучитьОбъект();
Док.Записать(РежимЗаписиДокумента.Проведение);
КонецФункции
В модуле объекта объявил переменную Перем ОтключитьКонтрольОстатка Экспорт;
В процедуре обработка проведения ОтключитьКонтрольОстатка не имеет значения.
В переменной Тест есть перемена ОтключитьКонтрольОстатка ,она изменяется ,но в модуле объекта не получает значение.
Автор: pablo 29.01.13, 16:12
Мне одному кажется, что Ваш код отличается от Вовкиного?
Автор: VolandMaster 29.01.13, 16:21
Понял,все заработало, спасибо!!
Автор: Vofka 29.01.13, 16:24
VolandMaster, скажите, пожалуйста, всегда хотел понять чем руководствуется человек, когда ему говоришь сделай "так", он делает "не так" и говорит "не работает"?
Автор: logist 29.01.13, 16:34
Мне вот чисто из любопытства, вот я пользователь, нажму я эту кнопочку "провести без контроля", а потом нажму "провести и закрыть" и если остатка не будет получу сообщение о том что нельзя провести, я попытаюсь закрыть форму а она у меня еще спросит сохранить изменения или нет, а я хз, что я там менял, ну нажму "да", опять ошибка проведения, опять нажму закрыть, опять вопрос о сохранении, и я уже начну нервничать, что за нафик, почему эта куча вопросов... И опять же наличие такой кнопочки обязует постоянно помнить, что в случае ее использования документ надо закрывать нажатием "на крестик" а не в коем случае кнопкой "провести и закрыть", и я ж еще должен помнить что я провел его этой кнопочкой а не обычной кнопкой "провести"...
Я к чему - юзабилити такого решения - просто ужасное.
Автор: VolandMaster 29.01.13, 16:47
Цитата(Vofka @ 29.01.13, 16:24)
VolandMaster, скажите, пожалуйста, всегда хотел понять чем руководствуется человек, когда ему говоришь сделайте "так", он делает "не так" и говорит "не работает"?
Код был уже написан до совета, а что вызывал обработку не так просто не заметил.
Автор: Vofka 29.01.13, 16:50
Цитата(logist @ 29.01.13, 16:34)
Я к чему - юзабилити такого решения - просто ужасное.
Называем кнопку "Провести и закрыть (без контроля)" в процедуре кнопки дописываем Закрыть();
А с какой радости при закрытии система будет спрашивать о сохранении данных?
Автор: VolandMaster 29.01.13, 16:51
Цитата(logist @ 29.01.13, 16:34)
Мне вот чисто из любопытства, вот я пользователь, нажму я эту кнопочку "провести без контроля", а потом нажму "провести и закрыть" и если остатка не будет получу сообщение о том что нельзя провести, я попытаюсь закрыть форму а она у меня еще спросит сохранить изменения или нет, а я хз, что я там менял, ну нажму "да", опять ошибка проведения, опять нажму закрыть, опять вопрос о сохранении, и я уже начну нервничать, что за нафик, почему эта куча вопросов... И опять же наличие такой кнопочки обязует постоянно помнить, что в случае ее использования документ надо закрывать нажатием "на крестик" а не в коем случае кнопкой "провести и закрыть", и я ж еще должен помнить что я провел его этой кнопочкой а не обычной кнопкой "провести"...
Я к чему - юзабилити такого решения - просто ужасное.
Это лишь решение обучающего задания, что описано в задании то и сделано.
Автор: Vofka 29.01.13, 16:54
Я выше что ещё хотел сказать: когда вопрос задается на техническом уровне и не говорится зачем и почему так делается - нельзя говорить о неэффективности какого-либо решения. Давать какие-либо комментарии о варианте с добавлением реквизита я не буду.
Автор: logist 29.01.13, 17:02
Цитата(VolandMaster @ 29.01.13, 16:51)
Это лишь решение обучающего задания, что описано в задании то и сделано.
Можно дать задание "Удалить гланды", а если их удалят через жопу, то получить ответ - задание было удалить - удалили.
Автор: VolandMaster 29.01.13, 17:11
Цитата(logist @ 29.01.13, 17:02)
Можно дать задание "Удалить гланды", а если их удалят через жопу, то получить ответ - задание было удалить - удалили.
Если пациент будет под наркозом то ему все равно как их удалят
Если у вас есть более коректные варианты как отловить кнопочку буду благодарен за информацию.
Автор: logist 29.01.13, 17:16
Цитата(VolandMaster @ 29.01.13, 17:11)
Если у вас есть более коректные варианты как отловить кнопочку
Более конкретные чем я уже предложил? Вряд ли.
Автор: Vofka 29.01.13, 17:18
Цитата(logist @ 29.01.13, 17:02)
Можно дать задание "Удалить гланды", а если их удалят через жопу, то получить ответ - задание было удалить - удалили.
Если пациент на следующий день чувствует себя хорошо - то пусть хоть через ухо удаляют, главное результат.
И я для себя так и не могу понять следующее. Не я, не вы не знали для чего это требовалось ТС. Как оказалось, есть некое задание, которое делается так, как написано: в лоб. И то, что тут создание реквизита это даже не просто излишне, а неправильно, я надеюсь, понятно всем. Но несмотря на это, вы продолжаете выдумывать какие-то варианты, почему решение без создания реквизита плохое. Лично меня вы не убедили и не убедите. Поэтому, в контексте этой темы, как раз вариант с добавлением реквизита - это удаление гланд через заднее место.
Автор: logist 29.01.13, 17:24
Цитата(Vofka @ 29.01.13, 17:18)
Если пациент на следующий день чувствует себя хорошо - то пусть хоть через ухо удаляют, главное результат.
Тогда прошу прощения, дальше развивать свою точку зрения нет смысла.
Автор: Vofka 29.01.13, 17:26
Цитата(logist @ 29.01.13, 17:24)
Тогда прошу прощения, дальше развивать свою точку зрения нет смысла.
Я ещё попрошу обратить внимание на то, что ниже написано в том посте, откуда вы предоставили цитату.
Автор: logist 29.01.13, 17:28
Цитата(Vofka @ 29.01.13, 17:26)
Я ещё попрошу обратить внимание
Обратил конечно.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua