Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как программно ввсести на основании документ
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
vbi
Вот, пытаюсь реализовать в веб-клиенте:

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

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


Буду вызывать процедуру "ВвестиЧекККМ_Опт".
Вроде получаю ссылку нового документа, ну могу передать ее назад в клиентскую процедуру, а дальше как открыть форму, если есть ссылка на документ?
kivals
Неверный сам подход: если созданный объект не нужно записывать (перед открытием формы), то нужно просто открыть форму, указав что вводится объект на основании:
    ПараметрыФормы = Новый Структура("Основание", Основание);
    ОткрытьФорму("Документ.ЧекККМ_Опт.ФормаОбъекта", ПараметрыФормы);
vbi
Спасибо! ща попробую! Я нашел другую реализацию, более сложную:

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

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


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


Цитата(Vofka @ 11.10.11, 13:38) необходимо зарегистрироваться для просмотра ссылки
В 8.1 и в 8.2 (толстый клиент) в процедуру ПриПолученииДанных тоже пару раз заходит, этого тоже до сих пор никто объяснить не может dry.gif , поэтому, возможно, стОит смириться...



Цитата(kivals @ 11.10.11, 15:35) необходимо зарегистрироваться для просмотра ссылки
Неверный сам подход: если созданный объект не нужно записывать (перед открытием формы), то нужно просто открыть форму, указав что вводится объект на основании:
ПараметрыФормы = Новый Структура("Основание", Основание);
ОткрытьФорму("Документ.ЧекККМ_Опт.ФормаОбъекта", ПараметрыФормы);

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