8.х Ввод на основании

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

  1. TopicStarter Overlay
    AugustBlack
    Offline

    AugustBlack Опытный в 1С

    Регистрация:
    9 янв 2011
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Как сделать чтобы при вводе на основании не открывалось окно с новым документом(а только нужный мне по запросу). Я из формы приказа на основании создаю уведомление, в процедуре ввода на основании проверяю есть ли уведомления связанные с этим приказом. Он находит и открывает мне найденное уведомление и еще новое создает вводить на основании... я отключил стандартную обработку но все равно=(

    Код:
    Процедура ОбработкаЗаполнения(Основание)
    СтандартнаяОбработка = Ложь;    
    //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
    
    // Данный фрагмент построен конструктором.
    
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Если ТипЗнч(Основание) = Тип("ДокументСсылка.Приказ") Тогда
    
    Ув = Ложь;
    Запрос = Новый Запрос("ВЫБРАТЬ
    |    Уведомление.Номер,
    |    Уведомление.Дата,
    |    Уведомление.Ссылка
    |ИЗ
    |    Документ.Уведомление КАК Уведомление
    |ГДЕ
    |    Уведомление.ПриказОснование = &Пр");  
    Запрос.УстановитьПараметр("Пр", Основание.Ссылка);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
    Если Выборка.Количество() <> 0 Тогда Ув = Истина; КонецЕсли; КонецЦикла;
    Если Ув = Истина Тогда
    Режим = РежимДиалогаВопрос.ОК;
    СтрНом = Строка(Выборка.Номер);
    ЕстьЕсть = "Уведомление есть: " + СтрНом;
    Ответ = Вопрос(ЕстьЕсть, Режим, 0,,"Внимание!");
    ФормаУведомления = Документы.Уведомление.НайтиПоНомеру(Выборка.Номер,ТекущаяДата());
    ФормаУведомления.ПолучитьФорму("ФормаДокумента").Открыть();
    Иначе 
    СтандартнаяОбработка = ИСТИНА;
    // Заполнение шапки
    
    Номер = Основание.Номер;
    Объект = Основание.Объект;
    Предмет = Основание.Предмет;
    Специалист = Основание.Специалист;
    ПриказОснование = Основание.Ссылка;
    ЮридЛицо = Основание.ЮридЛицо;
    КонецЕсли;
    КонецЕсли;    
    //}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
    
    КонецПроцедуры
    
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    В процедуре "ОбработкаЗаполнения" нет параметра "СтандартнаяОбработка". Поэтому так не получится:
    Код:
    СтандартнаяОбработка = Ложь;
    
    При вводе на основании всегда создается новый документ и открывается его форма. Не уверен, что на это можно как-то повлиять. Я как-то не пробовал. Сейчас не скажу точно...
    Может, Вам для Ваших целей создать кнопку на форме? И в обработке нажатия на нее будуте писать все, что угодно.
  3. TopicStarter Overlay
    AugustBlack
    Offline

    AugustBlack Опытный в 1С

    Регистрация:
    9 янв 2011
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    уу спс разобрал в уведомление добавил:
    Код:
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    Если ПриказОснование.Пустая() Тогда 
    Отказ = Истина;
    КонецЕсли;
    КонецПроцедуры
    
    теперь открывает только уведомление на основании приказа, если его нету создает как обычно основание=)
  4. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Ммм...а уведомления у Вас ВСЕГДА (БЕЗ ИСКЛЮЧНИЙ) вводятся на основании приказов? Или его можно просто ввести???
    Я к чему клоню...Не получится ли так, что у Вас в базе есть документы уведомлений, которые введены независимо (т.е. НЕ на основании приказов)? Тогда, если Вы захотите открыть такой документ, он у Вас не откроется. Т.к. в основании ничего нет!

    Разве, что поставить условие на "ЭтоНовый()"...

    Код:
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
    Если ЭтоНовый() Тогда
    Если ПриказОснование.Пустая() Тогда 		
    Отказ = Истина;		
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    
  5. TopicStarter Overlay
    AugustBlack
    Offline

    AugustBlack Опытный в 1С

    Регистрация:
    9 янв 2011
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    в идеале всегда на основании, спасибо за совет=)

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