8.х 1с обработка,запрос,вывод сообщения.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем dervob, 20 авг 2015.

  1. TopicStarter Overlay
    dervob
    Offline

    dervob

    Регистрация:
    20 авг 2015
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток.Нужна помощь специалистов.Имеется справочник, где хранятся инструкции. И регистр сведений, в котором хранится информация о просмотренных пользователем инструкциях.Нужна обработка, которая при входе пользователя в систему определяет есть ли у него не просмотренные инструкции и если есть, сообщала ему об этом. я составил запрос, исключающий инструкции, которых нет в регистре.
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Инструкции.Ссылка
    |ИЗ
    | Справочник.Инструкции КАК Инструкции
    |ГДЕ
    | НЕ Инструкции.Ссылка В
    | (ВЫБРАТЬ
    | ИнструкцииСрезПоследних.Инструкция
    | ИЗ
    | РегистрСведений.Инструкции.СрезПоследних КАК ИнструкцииСрезПоследних
    | ГДЕ
    | ИнструкцииСрезПоследних.ИмяПользователя = &ИмяПользователя)";

    Запрос.УстановитьПараметр("ИмяПользователя", ПараметрыСеанса.ТекущийПользователь );

    Как мне сделать далее, что б пользователь при наличии не просмотренных инструкций получил сообщение об этом?.(и еще при отладке выдает ошибку - {МодульУправляемогоПриложения(124,17)}: Тип не определен (Запрос). В чем проблема?)
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Прописать в модуле приложения после запуска.
    dervob нравится это.
  3. TopicStarter Overlay
    dervob
    Offline

    dervob

    Регистрация:
    20 авг 2015
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Т.е. А как?
    код запроса выполняется на сервере. сообщение выводится на клиенте.
    После запроса добавил -
    Сообщить (ПараметрыСеанса.ТекущийПользователь);
    РезультатЗапроса = Запрос.Выполнить();
    потом на клиенте - "сообщения на сервере")
    но ничего не получается.
    в конфигурировании опыта мало, не могу это реализовать.
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    При запуске системы, срабатывает обработчик модуля сеанса ПослеНачалаРаботыСистемы(), вроде так. Вот вам нужно определить текущего пользователя в сеансе, выполнить код запроса с отбором данных для этого пользователя, и вывести необходимое сообщение.
    Писать как делать это кодом - честно скажу, лень. Алгоритм я вам подсказал, осталось дело за малым :)
    dervob нравится это.
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Боюсь, уровня вашей квалификации не достаточно для решения данной задачи.
    Ничего личного, но необходимо понимание происходящих процессов, пока этого понимания у вас нет.
    В рамках форума передать понимание не возможно.
  6. TopicStarter Overlay
    dervob
    Offline

    dervob

    Регистрация:
    20 авг 2015
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    буду пытаться
    --- Объединение сообщений, 21 авг 2015 ---
    Похоже, что так.
  7. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    Реализовывал инструкции так, при создании регистр заполнялся уже пользователями, а потом открывалось у для пользователя список тех у которых не стоит время прочтения.. При подтверждение что прочитал ставилось время когда... Читали все после того как на обум подтвердили и накосячили.
  8. flax
    Offline

    flax Новичок в 1С

    Регистрация:
    21 авг 2015
    Сообщения:
    9
    Симпатии:
    2
    Баллы:
    4
    Модуль управляемого приложения в котором Вы описываете запрос исполняется на клиенте, а клиент не знает что такое запрос. Выполните вызов общего серверного модуля (сказжем опишите функцию) , с установленной галочкой вызов сервера, там выполните ваш запрос, упакуйте (Верните значение типа массив Результат.Выгрузить().ВыгрузитьКолонку("Ссылка") и спокойно обрабатывайте его в модуле управляемого приложения выводите сообщения и т.д.
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Вы точно уверены, что работает только на клиенте ???
  10. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    Работает на тонком клиенте, веб-клиент и толстый клиент управляемого приложения.
    alexburn нравится это.
  11. flax
    Offline

    flax Новичок в 1С

    Регистрация:
    21 авг 2015
    Сообщения:
    9
    Симпатии:
    2
    Баллы:
    4
    В модуле управляемого приложения отслеживается именно интерактивный запуск системы.
    События модуля управляемого приложения срабатывают при запуске тонкого клиента, Веб-клиента и Толстого клиента управляемого приложения
    alexburn нравится это.
  12. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Спасибо за инфу, вылетело из головы :). Ну и как бы планировалось работать через общие модули, так проще
  13. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Для чего Вы обращаетесь к двум таблицам?
    Код:
    ВЫБРАТЬ
    | ИнструкцииСрезПоследних.Инструкция
    | ИЗ
    | РегистрСведений.Инструкции.СрезПоследних(,ИмяПользователя = &ИмяПользователя) КАК ИнструкцииСрезПоследних
    Хватит этого
    --- Объединение сообщений, 21 авг 2015 ---
    ИмяПользователя указывайте в параметрах виртуальной таблицы
  14. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Нельзя закладываться на то, что у пользователя сеанс будет закрываться каждый день.
    Поэтому пользовательский сеанс может висеть и 4 дня и 10 дней и больше, т.е при начале работы системы пользователь увидит инструкции, а о тех инструкциях, что он должен будет прочесть потом - он узнает уже после того, как накосячит =)
    Предлагаю обработчиком ожидания смотреть регистр с инструкциями, как например реализована система напоминаний в типовых решениях.
  15. TopicStarter Overlay
    dervob
    Offline

    dervob

    Регистрация:
    20 авг 2015
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Немного продвинулся в решении этой задачи)))
    Но все равно есть проблемы.
    В общем модуле создал функцию:
    Код:
    Функция ЕстьИнструкции() Экспорт
    // Проверка просмотренных инструкций
     
        Запрос = Новый Запрос;
        Запрос.Текст =    
        "ВЫБРАТЬ
        |    Инструкции.Ссылка
        |ИЗ
        |    Справочник.Инструкции КАК Инструкции
        |ГДЕ
        |    НЕ Инструкции.Ссылка В
        |                (ВЫБРАТЬ
        |                    ИнструкцииСрезПоследних.Инструкция
        |                ИЗ
        |                    РегистрСведений.Инструкции.СрезПоследних КАК ИнструкцииСрезПоследних
        |                ГДЕ
        |                    ИнструкцииСрезПоследних.ИмяПользователя = &ИмяПользователя)";
     
        Запрос.УстановитьПараметр("ИмяПользователя", ПараметрыСеанса.ТекущийПользователь );
     
     
        Сообщить (ПараметрыСеанса.ТекущийПользователь);
        РезультатЗапроса = Запрос.Выполнить();
     
        Если НЕ Запрос.Выполнить().Пустой() Тогда
    Сообщить("У вас есть не просмотренные инструкции!");
    Иначе
    Сообщить ("Не просмотренных инструкций нет");
    КонецЕсли;
    КонецФункции
    Вызываю ее в модуле управляемого приложения в процедуре ПриНачалеРаботыСистемы.

    При запуске системы в пользовательском режиме, выводится сообщение с именем текущего пользователя. И сообщение о том просмотрены инструкции или нет. НО : если в условии стоит НЕ НЕ Запрос.Выполнить().Пустой() Тогда, то независимо от того есть не просмотренные инструкции или нет, всегда выводится сообщение о том, что "Есть не просмотренные ". И если условие стоит без отрицания, то соответственно всегда второе сообщение.

    Как наладить код, что сообщения выводились правильно и была ссылка на не просмотренные инструкции?
    Что мне сделать?

Поделиться этой страницей