7.7 Проведение документа

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

  1. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Предопределённая процедура
    Код:
    Процедура ОбработкаПроведения()
    НеПроводитьДокумент();
    Возврат;
    КонецПроцедуры
    При этом 1с открывает модальное окно "Документ не проведён" и ждёт от пользователя нажатия кнопки Ок.
    Можно ли как-то сделать, чтобы это окно не выскакивало? У меня сеанс запущен под роботом и получается что сеанс подвисает, пока человек не нажмёт кнопку Ок
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    Процедура ОбработкаПроведения()
    Если ЭтоРаботаетРобот=0 Тогда
    //вызываем процедуру движения по регистрам
    КонецЕсли;
    
    КонецПроцедуры
  3. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Чуть неверно сформулировал проблему. При проведении документа происходит анализ на возможность проведения. И если провести документ нельзя то документ проводить нельзя. И тогда в процедуре ОбработкаПроведения() я выполняю код
    Код:
    НеПроводитьДокумент();Возврат;
    И после этого вываливается модальное окно "Документ не проведён"
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Его (код ваш) не нужно выполнять вообще. Где у вас производится анализ?
  5. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    В самой процедуре ОбработкаПроведения()
    В принципе решение простое - текст анализа запускаю до вызова процедуры
    Код:
    Провести()
    И если условие не проходит, то и не выполняю процедуру
    Код:
    Провести()
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ну так и выполняйте ваш анализ. Если нужно проводить - проводите. Если не нужно - не делайте ничего. Я же показал вам пример. И не будет никаких модальных окон. Если документ д.б. не проведенным юзайте СтатусВозврата
  7. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Всё верно. Я уже разобрался. Просто код анализа пришлось дублировать в двух местах: в самой процедуре ОбработкаПроведения() и в одном из мест кода перед вызовом процедуры Провести(). А вот юзать СтатусВозврата(0) как-раз таки и нельзя, насколько я понял именно из-за него и выскакивает модальное окно "Документ не проведён"
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Процедуру проверки актуально перенести в ГМ и вызывать где нужно... Вдруг нужно будет что-то поменять... Если не делать СтатусВозврата документ получит статус проведенного хоть и без движение. А это ни есть хорошо.....
  9. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Итак ГМ сильно раздут, не хочется из-за таких мелочей ещё больше его раздувать. В этом вижу большой минус платформы.

    Поэтому и не допускаю запуска процедуры проведения документа делая анализ до запуска
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Что значит "раздут"? Думаете есть строк кода меньше будет быстрее работать?
  11. GlukAl
    Offline

    GlukAl Опытный в 1С

    Регистрация:
    4 окт 2012
    Сообщения:
    187
    Симпатии:
    7
    Баллы:
    29

    Посмотрите как у Вас сделана в других документах (наверняка есть проверка на заполненность реквизитов какого-нибудь документа) примерно в таком виде
    Код:
    Процедура ОбработкаПроведения()
    Перем неПроводить;
    Если ПустоеЗначение(<Реквизит документа>) Тогда
    неПроводить=1;
    КонецЕсли;
    
    Если непроводить=1 Тогда
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    
    
    // 
    
    КонецПроцедуры
    Все используют в качестве отмены команду
    Код:
    СтатусВозврата(0);Возврат;
    так что не бойтесь
  12. GlukAl
    Offline

    GlukAl Опытный в 1С

    Регистрация:
    4 окт 2012
    Сообщения:
    187
    Симпатии:
    7
    Баллы:
    29
    а вопрос может выскакивать и по другим причинам
    например если в кнопке написать вопросительный знак (#Записать Провести? Закрыть)
    или может спрашивать с каким временем проводить (задним/текущим/после ТА)
  13. Бухгалтерский угодник
    Offline

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

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

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