Версия для печати темы (https://pro1c.org.ua/index.php?s=a18dfd94061769eaea1aa1f6b78f92e0&showtopic=5023)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Как программно ввсести на основании документ

Автор: vbi 11.10.11, 13:49

Вот, пытаюсь реализовать в веб-клиенте:

&НаКлиенте
Процедура ВвестиЧекККМ_Опт(Команда)
     СсылкаНовогоЧека = СоздатьЧекККМНаСервере(Основание);
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция СоздатьЧекККМНаСервере(Основание)
    ЧекККМ = Документы.ЧекККМ_Опт.СоздатьДокумент();
    ЧекККМ.Заполнить(Основание);
    СсылкаНового = ЧекККМ.ПолучитьСсылкуНового();
    Возврат СсылкаНового;
КонецФункции


Буду вызывать процедуру "ВвестиЧекККМ_Опт".
Вроде получаю ссылку нового документа, ну могу передать ее назад в клиентскую процедуру, а дальше как открыть форму, если есть ссылка на документ?

Автор: kivals 11.10.11, 14:35

Неверный сам подход: если созданный объект не нужно записывать (перед открытием формы), то нужно просто открыть форму, указав что вводится объект на основании:

    ПараметрыФормы = Новый Структура("Основание", Основание);
    ОткрытьФорму("Документ.ЧекККМ_Опт.ФормаОбъекта", ПараметрыФормы);

Автор: vbi 11.10.11, 15:55

Спасибо! ща попробую! Я нашел другую реализацию, более сложную:

&НаКлиенте
Процедура ВвестиЧекККМ_Опт(Команда)
    АдресДокумента = СоздатьЧекККМНаСервере(Элементы.Список.ТекущиеДанные.Ссылка);
    ПараметрыОткрываемойФормы=Новый Структура;
    ПараметрыОткрываемойФормы.Вставить("АдресГотовогоОбъекта",АдресДокумента);
    ОткрытьФорму("Документ.ЧекККМ_Опт.Форма.ФормаДокументаУпр",ПараметрыОткрываемойФормы);
КонецПроцедуры

&НаСервереБезКонтекста
Функция СоздатьЧекККМНаСервере(Основание)
    ЧекККМ = Документы.ЧекККМ_Опт.СоздатьДокумент();
    ЧекККМ.Дата=ТекущаяДата();
    ЧекККМ.Заполнить(Основание);
    АдресДокумента=ПоместитьВоВременноеХранилище(ЧекККМ,Новый УникальныйИдентификатор);
    Возврат АдресДокумента;
КонецФункции


Ну и в самом чеке ККМ в упр. форме:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Параметры.Свойство("АдресГотовогоОбъекта") Тогда
        НовыйДокумент=ПолучитьИзВременногоХранилища(Параметры.АдресГотовогоОбъекта);
        ЗначениеВРеквизитФормы(НовыйДокумент,"Объект");
    КонецЕсли;
КонецПроцедуры


Цитата(Vofka @ 11.10.11, 13:38) http://pro1c.org.ua/index.php?act=findpost&pid=34085
Неверный сам подход: если созданный объект не нужно записывать (перед открытием формы), то нужно просто открыть форму, указав что вводится объект на основании:
ПараметрыФормы = Новый Структура("Основание", Основание);
ОткрытьФорму("Документ.ЧекККМ_Опт.ФормаОбъекта", ПараметрыФормы);

Спасибо, работает! Работают оба варианта, но я выберу тот что проще! smile.gif

Автор: kivals 11.10.11, 16:25

И Вам спасибо за подсказанное решение: у меня есть задача, где два реквизита формы имеют тип Объект и была проблема с созданием новой формы без записи объекто. ИМХО этот вариант должен подойти...

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua