Умение правильно задавать вопросы. Как использовать показатьвопрос в обработчике формы передзаписью

Пожалуйста, когда вы задаете вопрос, придерживайтесь нескольких простых правил:

Первое

Самое простой способ задать вопрос и получить развернутый ответ — телефонный звонок. Для этого вы можете либо набрать сами на телефон в городе Москва +7-495-99-7-88-41 или заказать обратный звонок

Второе

— Что приборы?
— 15!
— А что 15?
— А «Что приборы»?

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

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

Третье

Пожалуйста, не бойтесь представляться. Вы хотите задать вопрос — мы с удовольствием хотим на него ответить. Нам приятно сразу называть вас по имени.

Все данные, которые передаются через форму «Задать вопрос » передаются по шифрованному каналу, не подлежат разглашению и находятся под защитой аппаратных и программных средств для реализации 152-ФЗ «О защите персональных данных».

Экология сознания. Психология: Большинство людей никогда не задавали себе этих вопросов. А если и задавали, то не пытались найти на них правдивый ответ. Дело даже не в самом ответе, а в его поиске. Каждый из этих вопросов способен натолкнуть вас на определенные размышления о себе самом и мире вокруг, даже если вы не найдете ответа. Кого-то они способны сдвинуть с мертвой точки и заставить думать о том, о чем они обычно не хотят думать.

Большинство людей никогда не задавали себе этих вопросов - 100 вопросов, чтобы познать себя

Большинство людей никогда не задавали себе этих вопросов. А если и задавали, то не пытались найти на них правдивый ответ. Дело даже не в самом ответе, а в его поиске. Каждый из этих вопросов способен натолкнуть вас на определенные размышления о себе самом и мире вокруг, даже если вы не найдете ответа . Кого-то они способны сдвинуть с мертвой точки и заставить думать о том, о чем они обычно не хотят думать.

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

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

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

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

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

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

Как отвечать на вопросы?

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

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

Некоторые вопросы включают в себя утверждение. Например, «почему вы курите?» Если вы не курите - пропускайте вопрос это к вам не относится. То же самое касается всех подобных вопросов.

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

Вопросы:

1. Почему меня должно тревожить мнение других людей о себе?

2. Как ко мне относятся знакомые?

3. Почему я не могу оставаться один?

4. Почему я пью алкоголь?

5. Зачем я стесняюсь и робею?

6. Как ко мне относятся мои дети?

7. Почему мне трудно заводить друзей?

8. Разве я должен быть абсолютно во всем лучше остальных?

9. Судьба несправедлива со мной. Ну и что?

10. Почему я много ругаюсь матом?

11. Что происходит в мире?

12. Что происходит в моей стране?

13. Что происходит на моей работе?

14. Чего я хочу от жизни?

15. Почему мои планы не исполняются?

16. Доволен ли я своим выбором?

17. Зачем нервничать и волноваться?

18. Кто несет ответственность за то, что в моей жизни сложилось в так, а не иначе?

19. Кто несет ответственность за то, что я стал таким?

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

21. Что мне мешает жить той жизнью, которой я хочу жить?

22. Разве мне кто-то чем-то обязан?

23. Разве я кому-то чем-то обязан?

24. Почему я ругаюсь с женой/мужем? Какой в этом смысл? Приходим ли мы к чему-то ценному в результате этих конфликтов?

25. Почему мои эмоции берут надо мной верх?

26. У меня плохое настроение. Ну и что?

27. Зачем мне десятое платье или третьи часы?

28. Что будет со мной через десять, двадцать, тридцать лет? Моя жизнь как-то изменится, если я буду продолжать делать то что делаю? Меня устраивают эти перспективы?

29. Что будет с моим здоровьем, если я буду продолжать вести тот образ жизни, который веду сейчас?

30. Что со мной будет когда я состарюсь и не смогу находить удовольствие в тех вещах, которые мне доставляют радость сейчас (секс, еда, выпивка)?

31. Мне нравится моя работа?

32. Устраивает ли меня моя работа в качестве источника дохода и дела всей жизни?

33. Почему я не могу организовать другие источники дохода?

34. Что будет, если я лишусь работы?

35. Почему я не работаю удаленно?

36. Почему я не занимаюсь своим бизнесом?

37. Мне повезло меньше чем другим. Ну и что?

38. Что я буду делать на этих выходных? А на следующих? Что я делаю каждые выходные?

39. Зачем я курю?

40. Хватает ли мне отдыха?

41. Мне хватает свободного времени?

42. Я высыпаюсь?

43. Я нахожусь в хорошей физической форме?

44. Я хорошо себя чувствую?

45. Удается ли мне сохранять концентрацию внимания?

46. Как правильно питаться?

47. Я достаточно уделяю времени близким?

48. Зачем я задерживаюсь на работе? Что будет, если я стану уходить во время?

49. Почему я исповедую именно эту религию, а не другую? Все другие религии ошибаются?

50. Я прилежно выполняю заповеди своей веры? Если нет, то как я могу быть уверен в спасении души?

51. Какой смысл в страдании?

52. Какие мои интересы, хобби? Чем я увлекаюсь?

53. Сколько я провожу времени в социальных сетях?

54. Сколько времени я смотрю телевизор?

55. Сколько я прочитал книг за последний год?

56. Какая есть еще интересная музыка?

57. Я достаточно образован и эрудирован?

58. Почему Земля не падает на Солнце?

59. Каким образом кодируется генетическая информация?

60. Из чего состоит атом?

61. Сколько иностранных языков я знаю?

63. Когда я последний раз соглашался с чужим мнением, которое было отлично от моего и открыто это признавал?

64. Какой смысл в тех спорах, в которых каждый участник не хочет принимать мнения другого? Разве в таких спорах рождается истина?

65. Зачем мне кому-то что-то доказывать?

66. Когда я последний раз хвалил людей, говорил им искренние комплементы?

67. Чем я лучше тех людей, которых не люблю?

68. За что меня не любят некоторые люди?

69. За что меня любят?

70. За что я люблю тех кого люблю?

71. Достаточно ли я приложил сил, чтобы усилить свои сильные качества и избавиться от недостатков?

72. Давно ли я дарил подарки просто так, без повода?

73. Давно ли я навещал своих пожилых родственников?

74. Много ли существует людей, которые окажут мне бескорыстную помощь, если я в ней буду нуждаться?

75. Когда я последний раз убирался дома?

76. Часто ли я остаюсь один и размышляю о жизни?

77. Когда я последний раз делал то, что другие не одобряли, а в итоге я осталися доволен своим выбором?

78. Я доводижу дела до конца?

79. Развитое ли у меня чувство юмора?

80. Много ли я смеюсь?

81. Получаю ли я удовольствие от жизни?

82. Счастлив ли я?

83. Часто ли я жалуюсь на жизнь?

84. Многие люди живут в условиях голода, недостатка жилья и их жизнь подвергается постоянной опасности. Почему я считаю свои проблемы такими значительными и серьезными?

85. Все ли я делаю для того, чтобы улучшить свою жизнь?

86. Почему происходят войны?

87. Откуда происходят мои страхи? Почему я боюсь мышей, если они не могут причинить мне вреда?

88. бЗачем мне обижаться на других?

89.Зачем мне притворяться тем, кем я на самом деле не являюсь?

90. Какие мои самые серьезные жизненные ошибки?

91. Почему я одинок?

92. Чем помогают мне мои принципы, мое мировоззрение?

93. Что за люди мои друзья? Почему мы вместе?

94. Что определеяет мое поведение?

95. Когда я последний раз наводил порядок в своей квартрие или на рабочем месте?

96. Что такое хорошо, что такое плохо?

97. Внимательно ли я слушаю других людей?

98. Много ли я страдания доставил окружающим?

99. Почему я стыжусь своих близких?

100. Что я знаю о смерти? опубликовано .

Если у вас возникли вопросы по этой теме, задайте их специалистам и читателям нашего проекта .

Было дело, задумался о том, чтобы на Wordpress сайте сделать раздел "Вопрос-ответ". Для чего он нужен? Ну, например, чтобы посетители не писали на почту с вопросами (если этих вопросов очень много), а задавали их в этом разделе. Или самому выносить самые интересные часто-задаваемые вопросы в отдельную категорию.

Еще можно в такой раздел забрасывать НЧ-запросы (собирая больше трафика) по которым попадают на сайт, потому как вопросы могут быть несерьезными, или которые не тянут на полноценную статью.

Но тут нужно быть осторожным: не плодить пустых страниц. Если создается вопрос, то чтобы там хотя бы был текст минимум на 300 символов и обязательно ответ, не меньшего объема.

На форуме Webmasters.ru была такая тема. Искать сейчас эту ветку не буду. Там человек ответил, что можно реализовать это дело с помощью плагина User Submitted Posts на WordPress-е.

На одном своем сайте я реализовал данную систему вопросов-ответов и она хорошо себя зарекомендовала . Поэтому решил еще на паре сайтов сделать и параллельно написать эту подробную статью в виде инструкции.

Требования к разделу с вопросами и ответами

Для начала определимся, какие задачи перед нами стоят:

  1. Любой незарегистрированный посетитель может добавить вопрос на сайт;
  2. Не только админ, но и любой желающий может ответить на вопрос;
  3. Посты от пользователей должны попадать в БД сайта как нормальные статьи, в отдельный раздел (или основные разделы по желанию админа);
  4. Посты должны попадать на модерацию;
  5. Чтобы пользователь мог добавить картинку к посту;
  6. Вопросы НЕ должны попадать в виде анонса на главную страницу, чтобы не засорять её;
  7. Нужна возможность вывода блока последних, или самых обсуждаемых вопросов, в каком-либо месте на сайте.

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

Реализация с помощью плагина User Submitted Posts + дополнительные функции WP

Я думаю любой сможет добавить данный плагин на WordPress, установить и активировать. Поэтому останавливаться на этом не буду. Делаем это и идем дальше.

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

Создаем отдельные страницы и разделы

Покажу на примере своего блога, чтобы вам далеко не ходить , а мне, чтобы не палить другой какой-то свой сайт.

Шаг 1. Добавляем новую (новые) категорию, в которую будут попадать вопросы, и, соответственно, выводится в этом разделе.

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

Пример, создаю основной раздел «Форум» (forums). Можно назвать «Вопрос-ответ». А подкатегории создал такие: «Партнерские программы» (partnerskie-programmy) и «Статейные сайты» (stateiniki).

Читайте также: Адаптация шаблона сайта под мобильные устройства


После создания рубрик, сразу же посмотрите их ID (наведя на ссылку, внизу браузера будет показываться, вот СКРИН) и запишите себе. У меня это 78, 79, 80.

Шаг 2. Добавляем новую страницу для формы (я её назвал «Задайте вопрос»),
и вставляем туда тег .


Шаг 3. Создаем новую страницу, на которую пользователь будет перенаправлен после добавления поста. Она не обязательная (можно перенаправить в общий раздел), но я сделаю для удобства юзера. Также, если у вас стоит плагин All in One SEO Pack, то ставим для этой страницы запрет от индексации.


Настраиваем плагин User Submitted Posts

Надо убрать всё лишнее. Заходим в настройки плагина, разворачиваем вкладку «Plugin Settings» и делаем все как у меня скриншотах.


Если на скриншотах вы не нашли некоторых полей, то значит их и не нужно настраивать, или не обязательно.



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


Разворачиваем настройки для выбора категорий и отмечаем те, в которые вы разрешаем добавлять вопросы пользователям.


Давайте перейдем после этого на страницу добавления вопросов https://сайт/forum/vopros и посмотрим что получилось.



Я сделал рамку вокруг текстовой области, добавив в style.css стиль:

Wp-editor-container { border: 1px solid #ddd;}

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

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


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

Чтобы посты от пользователей не показывались на главной, в файл functions.php добавляем этот код:

// убираем вывод постов из этих рубрик на главной function hidecategory($query) { if ($query->is_home) { $query->set("cat","-78, -79, -80"); } return $query; } add_filter("pre_get_posts", "hidecategory");

Если не хотим, чтоб они также не попадали в RSS, то тогда вставляем этот код (вместо того, что выше):

// убираем вывод постов из этих рубрик на главной и в RSS function hidecategory($query) { if ($query->is_feed || ($query->is_home && !(is_paged()))) { $query->set("cat","-78, -79, -80"); } return $query; } add_filter("pre_get_posts","hidecategory");

Вступление

Для чего вообще стоит отказываться от модальности и, например, Вопрос заменять на ПоказатьВопрос? Всё дело в том, что больше года назад 1С-ники объявили « войну» модальным окнам. Исключение составляют только те, у кого самописная конфигурация, работа с которой не будет вестись на IPad, в режиме сервиса или с помощью веб-клиента. А если у вас обычная Бухгалтерия 3.0 и вы не собираетесь бухгалтеру давать доступ к базе через IPad, всё равно вам придётся заменить все модальные методы на немодальные, т.к. рано или поздно «Режим использования модальности» станет «Не использовать»!

Что же думает по предлагаемому вопросу специалисты фирмы 1С? Для начала можно посмотреть на тему «Вопрос в обработчике формы ПередЗакрытием»:

Особенность диалога с пользователем в этом (и многих других) обработчиках заключается в том, что в зависимости от реакции пользователя принимается решение: продолжать дальнейшие действия, или отказаться от них. Для этого используется параметр процедуры Отказ. При одном ответе пользователя мы отказываемся от продолжения (Отказ = Истина). При другом ответе пользователя - продолжаем дальнейшие действия.

В данном случае сложность заключается в том, что ответ пользователя мы узнаем уже после того, как выйдем из контекста этого обработчика. В процедуре, обрабатывающей оповещение. А параметр Отказ нужно установить именно в этом обработчике.

Поэтому мы действуем в два приёма:

В первый раз безусловно отменяем дальнейшие действия (Отказ = Истина) и выводим вопрос пользователю;

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

Проблема заключается в том, что обработчик ПередЗакрытием будет выполнен два раза. И чтобы отличить первое его выполнение от второго (когда ответ пользователя уже известен) мы используем клиентскую переменную ВыполняетсяЗакрытие в качестве флага.

В первый проход её значение равно Ложь, и это значит, что нужно отказаться от закрытия и задать вопрос. Во второй проход её значение равно Истина, и это значит, что вопрос задавать не надо:

&НаКлиенте Перем ВыполняетсяЗакрытие; &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) Если Не ВыполняетсяЗакрытие Тогда Отказ=Истина; ПоказатьВопрос(Новый ОписаниеОповещения("ПередЗакрытиемЗавершение", ЭтотОбъект), "Закрывать форму?", РежимДиалогаВопрос.ДаНет); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПередЗакрытиемЗавершение(РезультатВопроса, ПараметрыЗаписи) Экспорт Если РезультатВопроса = КодВозвратаДиалога.Да Тогда ВыполняетсяЗакрытие = Истина; Закрыть(); КонецЕсли; КонецПроцедуры

Этот пример схож с нашей темой и очень часто на него ссылаются в теме «ПоказатьВопрос в обработчике формы ПередЗаписью»:

В обработчике события формы ПередЗаписью также может возникнуть потребность задать вопрос. Как и в предыдущем примере. Однако здесь вопрос так просто не решается. Отличие заключается в следующем.

В предыдущем примере, оказываясь в обработчике ПередЗакрытием, мы однозначно знали действие, которое должно быть выполнено. Это закрытие формы. Поэтому в обработке оповещения мы смело писали Закрыть().

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

Поэтому тут можно предложить три варианта, но все они, к сожалению, обладают недостатками:

* Изменить логику прикладного решения так, чтобы не было диалога с пользователем в этом обработчике. Это не всегда возможно;

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

* Не использовать стандартные команды формы Записать, "Записать и закрыть". Вместо них создать собственные команды, в которых и выполнять необходимые алгоритмы. Создание собственных команд потребует дополнительных трудозатрат.

Задача сложная, поэтому разработчики при задании вопроса ПередЗаписью, в первую очередь рекомендуют отказаться от этой идеи…

Дальше предлагают задать вопрос с множеством вариантов: «Отказаться, Только записать, Записать и закрыть». Помимо описанного минуса (пользователь и так уже заранее выбрать вариант, а его тут ещё раз спрашивают) есть ещё: в ПередЗаписью программа могла попасть и из «Отмена проведения». Т.е. надо добавлять ещё кнопку? Мне кажется этот вариант некрасивым.

Остаётся только третий вариант с использованием нестандартных команд формы. Его мы и будем реализовывать. И не стандартной командой у нас будет только «Провести и закрыть». Как и в примере к теме «Вопрос в обработчике формы ПередЗакрытием», нам придётся при первом заходе давать Отказ = Истина, и только во втором заходе выполнять реальную запись. И ещё нам где-то нужно будет запоминать, что это именно второй заход в процедуру «ПередЗаписью». 1С-ники предложили это сделать через общую клиентскую переменную, в рассматриваемом примере это можно сделать через ПараметрыЗаписи.

Пример использования ПоказатьВопрос в обработчике формы ПередЗаписью

1. Сначала нам нужно убрать стандартную команду «Провести и закрыть» из формы и создать свою команду и кнопку.

1.А. Если у вас уже кнопка «Провести и закрыть» не типовая - вам повезло, можете смело приступать к п. 2.

1.Б. Стандартная команда убирается через Свойства формы - Состав команд - Снимаем ненужную команду. Как добавлять команду и кнопку на форму, я не буду описывать, только напомню, что кнопку «Провести и закрыть» необходимо сделать кнопкой по умолчанию.

1.В. Теперь вариант сложнее в реализации, но проще в сопровождении типовой конфигурации. Практически в каждом обновлении Бухгалтерии программисты умудряются изменить 10-50% форм документов, поэтому в типовой конфигурации для сопровождения проще кодом убрать стандартную кнопку и добавить свою команду и кнопку.

Для начала в обработчике формы «ПриОткрытии» необходимо убрать стандартную кнопку «ПровестиИЗакрыть».

Элементы.ФормаПровестиИЗакрыть.Видимость = Ложь;

Замечание: у пользователя с большими ограничениями к документу в платформе 8.3.7 вообще не появляется кнопка "Провести и закрыть". Поэтому для платформы 8.3.7 корректней писать код:

Если Элементы.Найти("ФормаПровестиИЗакрыть")<>Неопределено Тогда Элементы.ФормаПровестиИЗакрыть.Видимость = Ложь; КонецЕсли;

НоваяКоманда1 = ЭтаФорма.Команды.Добавить("ПровестиИЗакрыть2"); НоваяКоманда1.Действие = "ПровестиИЗакрыть"; НовыйЭлемент = Элементы.Добавить("ФормаПровестиИЗакрыть2" , Тип("КнопкаФормы"), Элементы.ФормаКоманднаяПанель); НовыйЭлемент.Заголовок = "Провести и закрыть"; НовыйЭлемент.ИмяКоманды = НоваяКоманда1.Имя; НовыйЭлемент.КнопкаПоУмолчанию = Истина; Элементы.Переместить(НовыйЭлемент,НовыйЭлемент.Родитель,Элементы.ГруппаКнопкиКоманднойПанели);

Соответственно в этом коде заложены типовые наименования для ФормаДокументаОбщая документа «Поступление (акты, накладные)» (например Элементы.ГруппаКнопкиКоманднойПанели), которые в каждом конкретном случае необходимо будет менять на свои.

&НаКлиенте Процедура ПровестиИЗакрыть(Команда) ПараметрыЗаписи = Новый Структура(); ПараметрыЗаписи.Вставить("РежимЗаписи", ПредопределенноеЗначение("РежимЗаписиДокумента.Проведение")); ПараметрыЗаписи.Вставить("Закрыть", Истина); Если Записать(ПараметрыЗаписи) Тогда Закрыть(); КонецЕсли; КонецПроцедуры

Как я писал выше, мы будем обмениваться информацией между нашими процедурами через ПараметрыЗаписи. В ПередЗаписью мы не знаем, нажали мы «Записать», «Провести» или «Провести и закрыть», для этого в параметрах мы передаём параметр Закрыть. Если в параметрах записи есть этот параметр, значит надо закрыть форму после успешной записи.

3. Допустим, нам надо задавать вопрос не всегда, а только когда документ проведён. Теперь мы в процедуру «ПередЗаписью» добавляем (если эта процедура не существовала - создаём) новый код:

Если Не ПараметрыЗаписи.Свойство("ВопросЗадан") И Объект.Проведен Тогда Отказ = Истина; Оповещение = Новый ОписаниеОповещения("ПоказатьВопросЗавершение", ЭтаФорма, ПараметрыЗаписи); ТекстВопроса = "Данный документ уже проведён. Вы действительно хотите перепровести или отменить проведение документа?"; ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 20, КодВозвратаДиалога.Нет, КодВозвратаДиалога.Нет); КонецЕсли;

Свойство «ВопросЗадан» мы будем заполнять в оповещении, чтобы узнавать, когда в процедуру «ПередЗаписью» мы зашли во второй раз (в примере 1С в процедуре ПередЗакрытием это делалось через переменную «ВыполняетсяЗакрытие»). Другими словами: в структуре «ПараметрыЗаписи» есть свойство «ВопросЗадан», значит, вопрос уже задавали, и пользователь уже ответил утвердительно, если же свойства нет, значит, в процедуре «ПередЗаписью» мы первый раз.

После метода ПоказатьВопрос можно ещё написать «Возврат», если у вас есть ещё какой-то код в процедуре «ПередЗаписью», выполняемый после вопроса.

4. Создаём процедуру «ПоказатьВопросЗавершение», в которую программа будет входить, когда пользователь ответит на вопрос (или произошёл таймаут).

&НаКлиенте Процедура ПоказатьВопросЗавершение(Результат, ПараметрыЗаписи) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда ПараметрыЗаписи.Вставить("ВопросЗадан", Истина); Если Записать(ПараметрыЗаписи) И ПараметрыЗаписи.Свойство("Закрыть") Тогда Закрыть(); КонецЕсли; КонецЕсли; КонецПроцедуры

В этой процедуре мы и используем переданное ранее свойство «Закрыть». Если свойства нет, значит, закрывать не надо.

5. Теперь нам надо обработать нажатие «крестика» пользователем. Для этого нам нужна обработчик формы «ПередЗакрытием». Если его нет, то его можно создать на форме «ручками» или программно в обработчике «ПриСозданииНаСервере» :

ЭтаФорма.УстановитьДействие("ПередЗакрытием","ПередЗакрытием");

&НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) Если Модифицированность Тогда Отказ = Истина; ТекстВопроса = НСтр("ru = "Данные были изменены. Сохранить изменения?""); Оповещение = Новый ОписаниеОповещения("ВопросПередЗакрытиемЗавершение", ЭтотОбъект); ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНетОтмена); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ВопросПередЗакрытиемЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда ПараметрыЗаписи = Новый Структура(); ПараметрыЗаписи.Вставить("Закрыть", Истина); Если Записать(ПараметрыЗаписи) Тогда Закрыть(); КонецЕсли; ИначеЕсли Результат = КодВозвратаДиалога.Нет Тогда Модифицированность = Ложь; Закрыть(); КонецЕсли; КонецПроцедуры

Получается, что пользователь когда нажал крестик ответит сначала на вопрос «Сохранить изменения?» и потом задастся ещё вопрос, который у вас прописан «ПередЗаписью». Если вас это не устраивает, можно передать параметр «ВопросЗадан» в «ВопросПередЗакрытиемЗавершение» и тогда второго вопроса не будет.

Вопрос против ПоказатьВопрос

А как бы мы решили задачу, если бы можно было использовать модальные вызовы? А очень просто, мы бы написали в процедуре «ПередЗаписью» следующий код:

Если Объект.Проведен Тогда ТекстВопроса = "Данный документ уже проведён. Вы действительно хотите перепровести или отменить проведение документа?"; Ответ = Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет,20,КодВозвратаДиалога.Нет,КодВозвратаДиалога.Нет); Если Не Ответ=КодВозвратаДиалога.Да Тогда Отказ = Истина; Возврат; КонецЕсли; КонецЕсли;

И всё! Никаких «заморочек» типа «А что пользователь нажал: Провести или ПровестиИЗакрыть?». И ещё надо будет отработать нажатие крестика в «ПередЗакрытием».

Изначально похожий код я реализовывал у себя в Бухгалтерии предприятия 3.0. Задача заключалась в следующем: при определённом наборе условий (это не одно условие Объект.Проведен, как указано в примере в данной публикации ) из ФормаДокументаОбщая документа ПоступлениеТоваровУслуг спрашивать дополнительно подтверждения его действий. Ниже перечислены нюансы, которые мне не пришлось обходить, т.к. не подпадали под задачу.

В обработчик формы «ПередЗаписью» программа не заходит, если: 1) пользователь нажал на кнопку «Пометить на удаление / снять пометку»; 2) если пользователь нажал на не проведённом документе кнопку «ДТ/КТ». И это не всё: если вы на форме документа создали всё, как я написал, и пользователь из формы списка перепроведёт документ - то никаких вопросов программа ему не задаст. Необходимо все интересующие вас кнопки на форме списка заменять на свои и отслеживать действия пользователя. Ещё у документа может быть не одна форма документа, а несколько (например, документ ПоступлениеТоваровУслуг в БП 3.0, где 3 формы: общая, товары и услуги). В каждой форме документа надо написать много кода…

В связи с кучей нюансов остаётся актуальным первый совет от 1С (который сначала, без подробного вникания в задачу, может вызвать улыбку): «Изменить логику прикладного решения так, чтобы не было диалога с пользователем в этом обработчике».

Самый простой способ - обычная страница, на которой перечислены вопросы и ответы на них. Как добавить на сайт страницу «Вопросы и ответы»:

  1. В приложении «Сайт» откройте раздел «Структура» и убедитесь, что в нем присутствует строка с правилом для приложения «Сайт». Если такой строки нет, добавьте правило для приложения «Сайт».
  2. Перейдите в раздел «Страницы » и создайте черновик новой страницы. В тексте страницы перечислите вопросы, которые вы хотите осветить, и ответы на них. Оформите страницу, как вам нужно.
  3. Опубликуйте черновик.
Страницы можно создавать также с помощью других приложений, а не только с помощью «Сайта», например: «Блог», «Фото», Shop-Script, «Поддержка», «Хаб». Для публикации страницы с помощью этих приложений необходимо в 1-м шаге проверить наличие строки с правилом для нужного приложения, которое вы хотите использовать вместо «Сайта» для публикации страницы.

Способ 2: приложение «Хаб»

Более функциональный вариант создания раздела вопросов и ответов - это интерактивный раздел сайта, в котором посетители сайта могут задавать вопросы, а другие посетители (а также вы) могут отвечать на них. Вы сможете создать полноценный центр поддержки со статьями, вопросами, ответами, комментариями и возможностью оценивать статьи и комментарии друг друга. Все эти возможности предоставляет приложение «Хаб »:

  1. Установите приложение «Хаб» с помощью «Инсталлера».
  2. Убедитесь, что в разделе «Структура» приложения «Сайт» присутствует строка с правилом для «Хаба». Если такого правила нет, добавьте его.
  3. В бекенде «Хаба» создавайте новые темы-статьи с помощью кнопки Новая тема .
  4. В настройках хаба включите возможность добавления комментариев к статьям.
  5. В настройках хаба включите возможность добавления вопросов и обсуждений посетителями сайта, а также возможность оценивать ответы и комментарии друг друга.

Способ 3: приложение «Поддержка»

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

  1. Установите приложение «Поддержка» с помощью «Инсталлера».
  2. Убедитесь, что в разделе «Структура» приложения «Сайт» присутствует строка с правилом для «Поддержки». Если такого правила нет, добавьте его.
  3. В бекенде приложения в разделе «ЧАВО » создайте статьи с ответами на часто задаваемые вопросы. Если статей много, распределите их по категориям. В свойствах статей включите флажок доступности на сайте.


Понравилась статья? Поделиться с друзьями: