Имя: Пароль:
1C
 
БП 3.0 ОткрытьФормуДокумента, как ?
,
0 Trotter
 
30.10.18
11:29
Здравствуйте!
Подскажите пожалуйста, что - то в первый раз довелось с этим столкнутся.
После вывода печатной формы вызываю:
&НаКлиенте
РежимДиалогаВопрос.ДаНет;
СоздатьДокумент(ДокОснование);

&НаСервере
Создаю документ, не записываю его, хочу открыть, как это реализовать ?

Правильно ли я понимаю, что &НаСервере это не реализовать ?
1 palsergeich
 
30.10.18
11:31
(0) Правильно понимаете
2 Остап Сулейманович
 
30.10.18
11:31
(0) РежимДиалогаВопрос.ДаНет; - это сильный ход.
3 Trotter
 
30.10.18
11:32
(1) А как правильно реализовать, ДокПер.ПолучитьФорму().Открыть(); тут так не получится...
4 Остап Сулейманович
 
30.10.18
11:38
(3)
П = Новый Структура;
П.Вставить(...); Тут формируем данные для нового документа
ОткрытьФОрму("Документ.<ИмяДокумента>.ФормаОбъекта", П);

В ПрисозданииНаСервере прочитать параметры и заполнить форму.
5 Eiffil123
 
30.10.18
11:40
Как вариант, в текущей форме добавить реквизит формы с типом ДокументОбъект. На сервере сделать ЗначениеВРеквизитФормы("ДокументОбъект", Док);


А на клиенте попробовать его в параметры открываемой формы передать (не уверен, что взлетит, но попробовать можно).
6 Trotter
 
30.10.18
11:48
(4) Пример заполнения структуры можно ? Не пойму, что туда писать.
7 Остап Сулейманович
 
30.10.18
11:56
(6) Пример типа ввода на основании

Вызов :
НаКлиенте
П = Новый Структура;
П.Вставить("Основание", ДокументОснованиеСсылка);
//Вместо "Подчиненный" должен быть конкретный вид документа
ОткрытьФорму("Документ.Подчиненный.ФормаОбъекта", П);

В вызываемой форме в обработчике ПриСозданииНаСервере

//Проверка - создаем новый или открываем существующий
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
  //Проверим - передали ли нам данные для автозаполнения
  Если Параметры.Свойство("Основание") Тогда
    //В обработка заполнения - код по присвоению значений новому документу
    Объект.ОбработкаЗаполнения(Параметры.Основание);
  КонецЕсли;
КонецЕсли;
8 Eiffil123
 
30.10.18
12:04
(7) тут немного другая задача. Автор программно создает документобъект на сервере, заполняет его. И далее нужно открыть форму этого заполненного документа.
9 Остап Сулейманович
 
30.10.18
12:07
(8) Задача ровно та же. Только выполнена так, как должно быть.
Тоже заполнение на сервере и только после этого открытие формы.
10 Eiffil123
 
30.10.18
12:09
(9) А если нет документа-основания, что передавать в параметры заполнения?
11 Остап Сулейманович
 
30.10.18
12:28
(10) Но что-то же есть? Можно например так :
П = Новый Структура;
Д = Новый Структура;
Д.Вставить("Дата", ТекущаяДата() + 10*24*3600);
Д.Вставить("Контрагент", Контрагент.Ссылка);
Д.Вставить("Команда", "Позвонить");

П.Вставить("ДанныеЗаполнения", Д);
...
12 Eiffil123
 
30.10.18
12:30
(11) а заполненную табличную часть?
13 V01tk2010
 
30.10.18
12:36
ДанныеФормыВЗначение(<Объект>, <Тип>)
ЗначениеВДанныеФормы(<Значение>, <Объект>)
14 Остап Сулейманович
 
30.10.18
12:39
(12) Заполненную где?
15 Остап Сулейманович
 
30.10.18
12:41
+ (14) Можно передать ссылку на существующий документ, можно передать адрес ХранилищаЗначения куда сложены ТблицаЗначений, СпискЗначений...
16 Eiffil123
 
30.10.18
12:45
(14) на сервере. Например, нужна обработка, которая программно сформирует документ "Перемещение товаров" (с одного склада на другой), притом чтобы документ не записывался сразу, а был показан пользователю. Он в случае необходимости поправит документ и запишет его сам (а может и не запишет).
17 Eiffil123
 
30.10.18
12:47
(15) с адресом хранилища - да, можно.
А можно еще в обработке сделать реквизит типа "ДокументОбъект" и с ним работать.
18 Остап Сулейманович
 
30.10.18
12:48
(16) Классика :
1. Заполняем ТаблицуЗначений НаСервере
2. Помещаем во временное хранилище, адрес хранилища возвращаем на клиента
3. На клиенте открываем форму нового документа и передаем ей адрес хранилища
4. В Присоздании по переданному адресу заполняем табличную часть.
Закон Брукера: Даже маленькая практика стоит большой теории.