Имя: Пароль:
1C
1С v8
Открыть форму существующего документа с перезаполнением.
0 unknown181538
 
12.08.13
13:46
ЗначенияЗаполнения = Новый Структура;
            ЗначенияЗаполнения.Вставить("АдресТаблицыСклады",АдресТаблицыСклады);
            ЗначенияЗаполнения.Вставить("АдресТаблицыЯчейки",АдресТаблицыЯчейки);
            ЗначенияЗаполнения.Вставить("ДокументОснование",Объект.Ссылка);
            ЗначенияЗаполнения.Вставить("Склад",Объект.СкладПолучатель);
            ПараметрыФормы = Новый Структура("ЗначенияЗаполнения",ЗначенияЗаполнения);
            Если ЗначениеЗаполнено(ДокументОприходования)Тогда
                ПараметрыФормы.Вставить("Ключ",ДокументОприходования);
            КонецЕсли;
            ОткрытьФормуМодально("Документ.ОприходованиеИзлишковТоваров.ФормаОбъекта",ПараметрыФормы);


Если "Ключ" не передаю, то открывается новый документ, и запускается ОбработкаЗаполнения.
Если передаю, то открывается существующий документ.
Можно ли сделать, чтобы открывался существующий документ, но перезаполненный?
1 Defender aka LINN
 
12.08.13
13:48
(0) В код формы вломись
2 Euguln
 
12.08.13
13:50
Получи форму, заполни, открой.
3 unknown181538
 
12.08.13
13:54
(2) Попробую... но мне кажется, что трабл какой-то может возникнуть, т.к. заполнять надо на сервере. Кажется, я когда-то пытался такое сделать.
4 unknown181538
 
12.08.13
14:18
(2) Не катит. Форму удается получить только на клиенте, а передаеть ее на сервер не удается.
(1) Если бы получилось передать структуру для заполнения на форме, а там вызвать Обработку заполнения, было бы нормально... будем пробовать...
5 hhhh
 
12.08.13
14:33
(4) ну это, ПриСозданииНаСервере разве не вызывается у вас метод?
6 kiruha
 
12.08.13
14:35
(3)
По Вашему форма существует только на клиенте ??
7 unknown181538
 
12.08.13
14:39
Получилось передать адрес структуры заполнения.
(6) не только. А где вы мне предлагаете ее получать, и как? И удастся ли ее передать с клиента на сервер?
8 kiruha
 
12.08.13
14:42
Получить форму
Вызвать экспортный(!) метод обработки заполнения
9 kiruha
 
12.08.13
14:44
И я уже голову сломал над выражениями " И удастся ли ее передать с клиента на сервер"
Она и на клиенте и на сервере. Всегда
10 kiruha
 
12.08.13
14:56
А понял, зачем то хочешь с серверной процедуры на клиентскую форму передавать ?
Почему не все на клиенте делать ?
11 unknown181538
 
12.08.13
15:36
А на клиенте получится сделать
Форма.Объект.Склад =
хотя бы?
Тем более, что данные для заполнения у меня в таблице значений, которую придется переделывать в массив структур.
(8) сделать в форме получателя метод вызывающий обработку заполнения? Ну вариант, но не лучше, чем в ПриСозданииНаСервере
12 kiruha
 
12.08.13
21:19
(11)
Стандартный 1С способ заполнения
Передавать "простые" типы - без проблем. Иногда надо преобразовывать
13 m-serg74
 
12.08.13
21:23
(12) может пригодится

&НаКлиенте
Процедура СоздатьДокумент(Команда)
     Форма = ПолучитьФорму("Документ.Реализация.ФормаОбъекта");
     ДанныеФормы = Форма.Объект;
     ЗаполнитьДокументНаСервере(ДанныеФормы);
     КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
     Форма.Открыть();
КонецПроцедуры

&НаСервере
Функция ЗаполнитьДокументНаСервере(ДанныеФормы);
     Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.Реализация"));
     Для каждого Стр Из ТЗ Цикл
         СтрДок = Док.Товары.Добавить();
         СтрДок.Количество = Стр.Количество;
         СтрДок.Номенклатура = Стр.Номенклатура;
     КонецЦикла;
     ЗначениеВДанныеФормы(Док,ДанныеФормы);
КонецФункции
14 m-serg74
 
12.08.13
21:24
(13) не мое кто то умный где то выкладывал:-)
15 m-serg74
 
12.08.13
21:29
промахнулся (13) для (11)
16 unknown181538
 
13.08.13
18:00
(13) Вот это хорошая штука.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан