Имя: Пароль:
1C
1С v8
Ввод только одного документа на основании
0 Bodrug
 
25.07.19
12:02
Всем доброго времени суток!
Есть 2 документа: Док1, Док2. Док2 вводится на основании Док1. Нужно реализовать следующее: можно создать только один Док2 на основании Док1. Если уже существует такой документ, нужно открыть его форму и заполнить данными заполнения Док1.
Никак не пойму, как это сделать.
1 Кац
 
25.07.19
12:03
проверять кол-во созданных доков в обработке заполнения
или посмотреть ка сделана связка РТиУ и СФ
2 Гипервизор
 
25.07.19
12:04
В один документ добавить реквизит - ссылку на другой документ.
3 Bodrug
 
25.07.19
12:06
(1) (2)  с частью проверки на существование Док2 проблем нет - я это сделал в ОбработкеЗаполнения. Вот дальше непонятно как действовать.
4 Bodrug
 
25.07.19
12:09
Как сделать открытие сущетсвующего Док2, вместо открытия нового?
5 Cyberhawk
 
25.07.19
12:17
(3) В обработке заполнения заполняешь служебный реквизит документа. В форме уже делаешь манипуляции с подменой объекта.
6 Cyberhawk
 
25.07.19
12:17
+(5) Или в форме закрываешь текущую и открываешь новую нужную
7 Гипервизор
 
25.07.19
12:21
Проверяйте ПередОткрытием.
8 DrWatson
 
25.07.19
12:31
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Если Объект.Ссылка.Пустая() И ЗначениеЗаполнено(Параметры.Основание) Тогда
    
        СуществующийДок = НайтиДокументНаОсновании(Параметры.Основание);
        
        Если ЗначениеЗаполнено(СуществующийДок) Тогда
        
            ЗначениеВРеквизитФормы(СуществующийДок.ПолучитьОбъект(), "Объект");
        
        КонецЕсли;
    
    КонецЕсли;
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция НайтиДокументНаОсновании(ДокОснование)

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |    Документ2.Ссылка КАК Ссылка
        |ИЗ
        |    Документ.Документ2 КАК Документ2
        |ГДЕ
        |    Документ2.ДокументОснование = &ДокОснование";
    
    Запрос.УстановитьПараметр("ДокОснование", ДокОснование);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Если РезультатЗапроса.Пустой() Тогда
    
        Возврат Неопределено;
    
    КонецЕсли;
    
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующий();
    
    Возврат Выборка.Ссылка;

КонецФункции
9 Bodrug
 
25.07.19
12:40
(8) Спасибо большое! Все работает!