8.х блокирование отгрузки

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

  1. TopicStarter Overlay
    serega25
    Offline

    serega25

    Регистрация:
    28 дек 2010
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте уважаемые специалисты !

    Помогите решить проблему.
    Я добавил в справочник "Контрагенты" дополнительное поле "Лицензия". Добавил код в документ "Заказ покупателя".

    Процедура КонтрагентПриИзменении(Элемент)

    //Поле "Лицензия" не заполнено
    Если НЕ ЗначениеЗаполнено(Контрагент.Лицензия) Тогда
    Предупреждение("Контрагент без лицензии!", 20);
    КонецЕсли;
    КонецПроцедуры // КонтрагентПриИзменении()


    Как в случае выполнения указанного в коде условия, блокировать отгрузку товара данному контрагенту?
    Заранее большое спасибо !
  2. Isberg
    Offline

    Isberg Опытный в 1С

    Регистрация:
    4 май 2010
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    Как вариант перед записью реализации или перед проведением, первый вариант лучше тем, что если нет лицензии то и записывать реализацию не надо.

    P/S Если серверная база и вы ее перепроводите обработкими или выругружаете, дописывайте - "# Если Клиент Тогда", иначе проблемы с предупреждением будут.
  3. TopicStarter Overlay
    serega25
    Offline

    serega25

    Регистрация:
    28 дек 2010
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Спасибо !

    А какой код использовать для блокировки ?
  4. 1Cman
    Offline

    1Cman Опытный в 1С

    Регистрация:
    25 июл 2009
    Сообщения:
    308
    Симпатии:
    0
    Баллы:
    26
    Можно Возврат.
  5. TopicStarter Overlay
    serega25
    Offline

    serega25

    Регистрация:
    28 дек 2010
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Я правильно понял, что в исходный код нужно вставить оператор Возврат ?

    Процедура КонтрагентПриИзменении(Элемент)

    //Поле "Лицензия" не заполнено
    Если НЕ ЗначениеЗаполнено(Контрагент.Лицензия) Тогда
    Предупреждение("Контрагент без лицензии!", 20);
    Возврат;
    КонецЕсли;
    КонецПроцедуры // КонтрагентПриИзменении()

    Не получается :angry:
    Я ранее применял оператор Close, но это тоже не выход.
    Может возможно другой строкой кода заблокировать отгрузку товара.
  6. 1Cman
    Offline

    1Cman Опытный в 1С

    Регистрация:
    25 июл 2009
    Сообщения:
    308
    Симпатии:
    0
    Баллы:
    26
    Возврат нужно вставлять в то место, которое вы хотите прервать. Если вам нужно прервать запись, тогда Возврат нужно вставлять в модуль записи документа и т.п.
    В вашем примере вы прерываете только процедуру КонтрагентПриИзменении()
  7. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    а вообще лучше сделать подписку на событие и проверять на заполнение там
  8. Isberg
    Offline

    Isberg Опытный в 1С

    Регистрация:
    4 май 2010
    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    26
    Код:
    //Поле "Лицензия" не заполнено
    Если НЕ ЗначениеЗаполнено(Контрагент.Лицензия) Тогда
    Предупреждение("Контрагент без лицензии!", 20); 
    Отказ = Истина
    Возврат;
    КонецЕсли;
    
    
    Делайте перед записью, зачем мучаться.
    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

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