Создавая публикации, столкнулся с тем, что неплохо бы было добавить кнопки на форму создаваемой обработки/отчета, нажав которые можно проголосовать за публикацию, посмотреть описание по ней или узнать данные автора. Тем более, что замечал у некоторых публикаций подобные кнопки, но совсем у незначительного количества. Сам столкнулся с тем, что скачал какую-нибудь обработку/отчет, проверил ее - понравилась, а чтобы проголосовать за нее или посмотреть описание, нужно заходить на сайт, снова искать публикацию... А так, все будет под рукой для пользователя и без затрат времени для разработчика.
В обработке показан пример двух механизмов оценки размещаемой на Инфостарте публикации, один из которых автор может использовать при разработке.
МЕХАНИЗМ ФОРМИРОВАНИЯ ПОДМЕНЮ ИНФОРМАЦИИ И ОЦЕНКИ ПУБЛИКАЦИИ
Этот механизм позволяет программно создавать подменю с кнопками оценки публикации и информации о публикации и авторе.
ШАГ 1.
Объявление переменных в разделе определения переменных:
// содержит номер публикации на Infostart
Перем НомерПубликации;
// содержит номер профайла автора на Infostart
Перем НомерПрофайлаАвтора;
ШАГ 2.
Заполнение переменных данными публикации в разделе основной программы:
// объявление пользовательских значений
НомерПубликации = "114938";
НомерПрофайлаАвтора = "121472";
Необходимо обязательно заменить параметры номера публикации и номера профайла автора публикации, показанные в обработке-примере. Информация необходима для перехода на страницы соответсвенно публикации и автора публикации.
Например, эта публикация имеет адрес //infostart.ru/public/114938/, соответсвенно в переменную "НомерПубликации" нужно установить номер "114938"; страница автора //infostart.ru/profile/121472/, поэтому у переменной "НомерПрофайлаАвтора" будет значение "121472". Номер публикации появляется после сохранения публикации как "Черновик".
ШАГ 3.
В процедуре "ПриОткрытии" формы создаваемой обработки/отчета вызвать процедуру генерации подменю:
// формирование подменю
Процедура ПриОткрытии()
ГенерацияКнопокГолосования();
КонецПроцедуры
Процедура сформирует подменю с кнопками оценки публикации, перехода на страницы публикации и автора публикации.
У процедуры имеются параметры:
Сверху
(необязательный)
Тип: Булево.
Определяет расположение подменю с информацией о публикации в верхней или нижней панели формы. Значение по умолчанию: Истина.
Список используемых панелей:
- "ДействияФормы" - верхняя панель;
- "КоманднаяПанель1" - верхняя панель;
- "ОсновныеДействияФормы" - нижняя панель;
Они хранятся в таблице значений, куда пользователь может добавить название своей панели, если оно отличается от представленных.
Если признак установлен в "Истина", тогда процедура попытается создать подменю на одной из верхних панелей, иначе создаст на нижней панели. В случае отсутствия панелей на форме, подменю создано не будет.
ВыводитьКартинки
(необязательный)
Тип: Булево.
Определяет необходимость вывода картинок кнопок. Значение по умолчанию: Истина. Причем для версий платформы 8.1 и 8.2 картинки разные.
УдалятьКнопкиПослеГолосования
(необязательный)
Тип: Булево.
Определяет признак вывода кнопок голосования за публикацию после голосования, при повторном открытии. Значение по умолчанию: Истина.
Т.е. если пользователь проголосовал за публикацию, то при следующем открытии формы кнопки голосования создаваться не будут.
Подменю сформируется только в том случае, если будет заполнена одна из переменных "НомерПубликации" или "НомерПрофайлаАвтора".
ШАГ 4.
Добавить основную процедуру генерации подменю и связанные с ней процедуры и функции в модуль обработки:
// основная процедура генерации подменю
Процедура ГенерацияКнопокГолосования(Сверху = Истина, ВыводитьКартинки = Истина, УдалятьКнопкиПослеГолосования = Истина)
// возвращает текущую версию платформы
Функция ПолучитьВерсиюПлатформы()
// проставление плюса за публикацию
Процедура ПроголосоватьЗа()
// проставление минуса за публикацию
Процедура ПроголосоватьПротив()
// оценка публикации на сайте
Процедура Проголосовать(За)
// переход на страницу автора
Процедура ОбАвторе()
// переход на страницу публикации
Процедура ОПубликации()
ШАГ 5.
В результате при открытии формы будет создано подменю с информацией о публикации (рис. 2):
МЕХАНИЗМ ОЦЕНКИ ПУБЛИКАЦИИ ПЕРЕД ЗАКРЫТИЕМ С ВОЗМОЖНОСТЬЮ НАПОМИНАНИЯ
Этот механизм позволяет оценить публикации пользователю при закрытии формы.
ШАГ 1 и ШАГ 2. Аналогичны с предыдущим механизмом.
ШАГ 3.
В обработчике формы "ПередЗакрытием" нужно вызвать процедуру:
// механизм вызова опроса о публикации
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ПроголосоватьЗаПубликацию();
КонецПроцедуры
ШАГ 4.
В модуль обработки скопировать саму процедуру опроса:
Процедура ПроголосоватьЗаПубликацию()
В процедуре определяется, имеется ли в используемой конфигурации справочник "ВнешниеОбработки". Данный справочник имеется практически во всех типовых конфигурациях. Если он существует, то создается новый элемент справочника с пустым полем "ВидОбработки", поэтому пользователь открывая через "Сервис -> Дополнительные внешние отчеты и обработки -> ..." его не увидит, только через "Операции -> Справочники -> Внешние обработки". Если же справочник отсутствует, данные сохраняются через "СохранитьЗначение()".
ШАГ 5.
В результате перед закрытием формы пользователю будет выведено диалоговое окно с предложением оценить публикацию (рис. 3). Нажав "Да", если публикация понравилась, пользователь ставит "плюс"; "Нет" - публикация не понравилась и пользователь ставит "минус";
"Отмена" - будет выведен вопрос с текстом "Напомнить позже?" (рис. 4):
Если пользователь нажмет "Нет, не напоминать" или проголосует, то при следующем закрытии обработка уже не будет предлагать пользователю оценить публикацию; если же будет нажата кнопка "Напомнить", то через несколько открытий пользователю вновь будет выведено диалоговое окно с предложением оценки публикации.
Так же, как и в первом механизме, необходимо заполнить переменные "НомерПубликации" и "НомерПрофайлаАвтора" данными создаваемой публикации. Если переменные будет пустыми, механизм не будет работать.