Версия для печати темы (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) *
Кнопочка в модуле формы, если я объявлю экспортную перемену в модуле объекта, как изменить ее в модуле формы?

А, это же УГ УФ faceoff.gif .

&НаКлиенте
Процедура ПровестиПереопределенная(Команда)
    
    ПровестиПереопределеннаяНаСервере();
    
КонецПроцедуры

Процедура ПровестиПереопределеннаяНаСервере()
    
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ДокументОбъект.Тест = Истина; // Тест - экспортная переменная модуля объекта
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    
КонецПроцедуры


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

Автор: VolandMaster 29.01.13, 15:23

Цитата(Vofka @ 29.01.13, 14:32) *
А, это же УГ УФ faceoff.gif .

&НаКлиенте
Процедура ПровестиПереопределенная(Команда)
    
    ПровестиПереопределеннаяНаСервере();
    
КонецПроцедуры

Процедура ПровестиПереопределеннаяНаСервере()
    
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ДокументОбъект.Тест = Истина; // Тест - экспортная переменная модуля объекта
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    
КонецПроцедуры


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

Так пробовал, глобальная переменная в модуле объекта все равно не получает значение.

Автор: 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) *
Можно дать задание "Удалить гланды", а если их удалят через жопу, то получить ответ - задание было удалить - удалили.

Если пациент будет под наркозом то ему все равно как их удалят smile.gif Если у вас есть более коректные варианты как отловить кнопочку буду благодарен за информацию.

Автор: 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