7.7 Вывод сообщения при старте системы в определенную дату

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем amoRNizam, 18 фев 2016.

  1. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. 1С 7.7. Торговля+Склад Редакция 9.2.
    Нужно реализовать такую задачу: При старте системы чтобы выполнялась проверка: если в документе "реализация", в поле "ДатаОплаты" дата совпадает с текущей датой, тогда выводилось бы сообщение, что мол такой то контрагент должен сегодня оплатить. Контрагент чтобы брался тоже из формы из поля "Контрагент". Нужен вывод в модальном окне, где при нажатии на кнопку можно было бы перейти к контрагенту, ДатаОплаты которого равна текущей. Подскажите мне пожалуйста хотя бы просто как сделать, чтобы просто выводилось сообщение в окне. Я попробовал в глобальном модуле в процедуре при старте системы написать, что (если ТекущаяДата=Документы.Реализация.Объект.ДатаОплаты тогда Сообщить("") и т.д) но у меня пишет что переменная "Документы" не определена. Я думаю, что я не правильно всё сделал, я только начал курсы по конфигурированию проходить, пока не хватает знаний реализовать такое.

    Вложения:

    • 2.png
      2.png
      Размер файла:
      35,5 КБ
      Просмотров:
      5
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вам нужно в отдельной процедуре создать запрос. А потом уже эту процедуру вызывать в ПриНачалеРаботыСистемы
  3. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    а как нужно прописать в моем случае, чтобы значения брались из поля документа "ДатаОплаты" ? чтобы сослаться на поле документа[/QUOTE]
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Процедура выведет в окно сообщений все документу за текущий день у которых дата оплаты меньше текущей даты
    Код:
    Процедура Сформировать()
       
        Дат=ТекущаяДата();
        //Создание объекта типа Запрос
        Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(Сформировать)
        |Период с Дат по Дат;
        |ДатаОплаты = Документ.Реализация.ДатаОплаты;
        |Группировка Документ;
        |Условие(ДатаОплаты < Дат);
        |"//}}ЗАПРОС
        ;
        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
            Возврат;
        КонецЕсли;
    
        Пока Запрос.Группировка(1) = 1 Цикл
            Сообщить(Запрос.Документ);
        КонецЦикла;
    
    КонецПроцедуры
    
    
  5. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Простите за моё незнание или глупость, я вставил этот код убрав "Процедура Сформировать()" и "КонецПроцедуры" в глобальном модуле в процедуру ПриНачалеРаботыСистемы. Так нужно?
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Нет... Это отдельная процедура, которая должна вызываться из процедуры ПриНачелеРаботыСистемы. см. пост №2
    Можно конечно вставить код и в саму процедуру, но это будит не красиво.
  7. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    я вставил код в процедуру ПриНачелеРаботыСистемы, но при старте пользовательского режима не выводятся сообщения. Хотя отрабатывает наверное, на пару секунд часы появляются.
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    значит за текущий день у вас нет просроченных отгрузок
  9. LordMaverick
    Offline

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.440
    Симпатии:
    374
    Баллы:
    104
    если должно выводить только при наличии просроченных, то на первые запуски для проверки и тестировании можно вставить вывод сообщения что нет таких документов если нет просроченных, а потом убрать это строчку кода вывода сообщения.
  10. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Я создал новую реализацию на сегодня , но не выводится. и в условии менял знак "<" на "=", но всё равно не выводит ничего. я что то не так может быть сделал?
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А реализация проведена? Запрос отбирает только проведенные документы
  12. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    А вы зачем так сделали:) ? Тут походу время еще учитывается :)
  13. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Не проведена. период не открыт с прошлого года еще. сейчас всё сделаю и доложу.
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Проведете - появится. Если нужно обрабатывать в т.к. не проведенные документы - нужно видоизменить запрос
  15. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Работает! Ура) Спасибо большое! Теперь буду думать как сделать, чтобы переход к документу по нажатию был.

    Вложения:

    • 3.png
      3.png
      Размер файла:
      21,2 КБ
      Просмотров:
      5
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не за что... Самое простое метод ВыбратьСтроку объекта ТаблицаЗначений
  17. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Пока еще не изучал это, в интернете посмотрел информацию и пока не разобрался как это делается.
  18. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    примерно так
    Код:
    Процедура Сформировать()
     
        Дат=ТекущаяДата();
        //Создание объекта типа Запрос
        Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(Сформировать)
        |Период с Дат по Дат;
        |ДатаОплаты = Документ.Реализация.ДатаОплаты;
        |Группировка Документ;
        |Условие(ДатаОплаты < Дат);
        |"//}}ЗАПРОС
        ;
        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
            Возврат;
        КонецЕсли;
    
    ТЗ=СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТЗ);
    
    Если ТЗ.КоличествоСтрок()>0 Тогда
    ТЗ.ВыбратьСтроку();
    КонецЕсли;
    
    КонецПроцедуры
    amoRNizam нравится это.
  19. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Я сделал так:
    Код:
                 Дат=ТекущаяДата();
        //Создание объекта типа Запрос
        Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(Сформировать)
        |Период с Дат по Дат;
        |ДатаОплаты = Документ.РеализацияРозница.ДатаОплаты;
        |Группировка Документ;
        |Условие(ДатаОплаты = Дат);
        |Контрагент = Документ.РеализацияРозница.Контрагент;
        |"//}}ЗАПРОС
        ;
        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
            Возврат;
        КонецЕсли;
    
        Пока Запрос.Группировка(1) = 1 Цикл
            Сообщить("Сегодня истекает срок оплаты для контрагента <"+Запрос.Контрагент+"> по документу <"+Запрос.Документ+">");
        КонецЦикла;
    4.png
    Я добавил код который вы скинули. В итоге открывается ТЗ при старте системы, отображаются документы(как и должно быть), но при двойном щелчке по ним документ не открывается и закрывается окно ТЗ.
    Еще вопрос, скажите пожалуйста, можно ли добавить текст пояснения и вывести контрагента в таблице значений, как я в сообщении сделал, на скриншоте видно. Ато выводит таким образом: 5.png только название документа и дата.
  20. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вы же сами просили чтобы было не закрывающееся (модальное) окно...
    Контрагента выводить можно. Прочитайте про метод ДобавитьКолонку, а то весь от чет за вас сделают)))

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