Имя: Пароль:
1C
1С v8
Как программно открыть управляемую форму документа?
0 Alyonchik1
 
16.12.16
17:05
помогите, пожалуйста, Как программно открыть управляемую форму документа с процедуры "ОбработкаЗаполнения"
Процеруды не работают((
ОткрытьФорму();
ОткрытьЗначение();
и через ПолучитьФорму("")
тоже не получилось, так как ОбработкаЗаполнения выполняется на сервере
ОткрытьФорму() - доступность Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент)
ОткрытьЗначение() - доступность Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент)
ПолучитьФорму() - доступность Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент)

с сервера форму открыть никак не могу((
1 Cool_Profi
 
16.12.16
17:06
И не сможешь. Меняй постановку задачи
2 Господин ПЖ
 
16.12.16
17:06
нет на сервере формы
3 Alyonchik1
 
16.12.16
17:06
Надо при создании на основании (заказ на перемещение) создать - документ(заказ покупателю) и создать и заполнить другой документ (заказ поставщику)
И что бы открылись 2 заполенные документа заказ покупателю и заказ поставщику
4 Господин ПЖ
 
16.12.16
17:10
ну так заполняй. а откроешь потом
5 Господин ПЖ
 
16.12.16
17:11
или у вас как в лучших домах европы вся бизнес-логика на форме "лежит"? тогда увы
6 Alyonchik1
 
16.12.16
17:13
Ну хорошо, как потом открыть? Что-то не получается
7 Мимохожий Однако
 
16.12.16
17:16
Например
&НаКлиенте
Процедура ОткрытиеДокумента()
    
...

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

КонецПроцедуры

&НаСервере
Функция ПолучитьСсылкуНаОбъект()
    Возврат Объект.СсылкаНаОбъект;
КонецФункции
8 Alyonchik1
 
16.12.16
17:20
Да там еще расширение используется((
то есть передавать процедуру с модуля объекта и на форму ее там открывать?
9 h-sp
 
16.12.16
17:23
(8) зачем передавать процедуру?
10 Alyonchik1
 
16.12.16
17:25
так как? что-то понять не могу
11 h-sp
 
16.12.16
17:28
(10) ну ты ведь на клиенте находишься:  "при создании на основании (заказ на перемещение) "

у тебя открывается этот заказ на перемещение. На клиенте. В этот же момент открывай и оба других заказа.
12 Alyonchik1
 
16.12.16
17:28
(9) Я же создаю новый документ на основании заказ на перемещение создаю - документ заказ покупателю и программно - заказ поставщику. Так как открыть этот заказ поставщику?
13 Alyonchik1
 
16.12.16
17:28
(11) На сервере нахожусь
14 Мимохожий Однако
 
16.12.16
17:29
Чтобы не гадать  кидай сюда свой код, не стесняйся. Все свои ))
15 h-sp
 
16.12.16
17:29
когда открывается на основании, ты на клиенте.
16 Alyonchik1
 
16.12.16
17:30
(11) я нахожусь в модуле объекта ОбработкаЗаполнения() - это сервер
17 Alyonchik1
 
16.12.16
17:31
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    
    Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
        
        ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);
        Если ДанныеЗаполнения.Свойство("ОбработкаФормированиеЗаказов") Тогда
            ДанныеШапкиДокумента = ДанныеЗаполнения.Реквизиты;
            ДанныеТабличнойЧасти = ДанныеЗаполнения.Товары;
            ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеШапкиДокумента);
            КэшированныеЗначения = ОбработкаТабличнойЧастиТоварыКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
            ЗаполнитьТабличнуюЧастьИзОбработкиФормированиеЗаказов(ДанныеТабличнойЧасти, КэшированныеЗначения);
        КонецЕсли;
    ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
        ОбщегоНазначенияРТ.ПроверитьВозможностьВводаНаОсновании(ДанныеЗаполнения);
        
        Если ДанныеЗаполнения.Статус = Перечисления.СтатусыЗаказовПокупателей.НеСогласован Тогда
            ТекстОшибки = НСтр("ru='Заказ не согласован.
            |Заполнение документа не выполнено.'");
            
            ВызватьИсключение ТекстОшибки;
        ИначеЕсли ДанныеЗаполнения.Статус = Перечисления.СтатусыЗаказовПокупателей.Закрыт Тогда
            ТекстОшибки = НСтр("ru='Заказ закрыт.
            |Заполнение документа не выполнено.'");
            
            ВызватьИсключение ТекстОшибки;
            
        КонецЕсли;
        
        Организация       = ДанныеЗаполнения.Организация;
        ЗаказПокупателя   = ДанныеЗаполнения.Ссылка;
        МагазинПолучатель = ДанныеЗаполнения.Магазин;
        
        РозничныеПродажиСервер.ЗаполнитьТабличнуюЧастьПоОстаткамЗаказаБезРезерва(ЭтотОбъект, "Товары", ЗаказПокупателя);
        
        ИнициализироватьДокумент();
        ОбщегоНазначенияРТ.ПроверитьИспользованиеОрганизации(,,Организация);
        
        // начало 16.12.16 Ниракс Василенко А.
            Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказПокупателяТовары.Ссылка,
        |    ЗаказПокупателяТовары.НомерСтроки,
        |    ЗаказПокупателяТовары.Номенклатура,
        |    ЗаказПокупателяТовары.Характеристика,
        |    ЗаказПокупателяТовары.Количество,
        |    ЗаказПокупателяТовары.Упаковка,
        |    ЗаказПокупателяТовары.КоличествоУпаковок,
        |    ЗаказПокупателяТовары.Цена,
        |    ЗаказПокупателяТовары.Продавец,
        |    ЗаказПокупателяТовары.ПроцентАвтоматическойСкидки,
        |    ЗаказПокупателяТовары.ПроцентРучнойСкидки,
        |    ЗаказПокупателяТовары.Сумма,
        |    ЗаказПокупателяТовары.СтавкаНДС,
        |    ЗаказПокупателяТовары.СуммаНДС,
        |    ЗаказПокупателяТовары.СуммаАвтоматическойСкидки,
        |    ЗаказПокупателяТовары.СуммаРучнойСкидки,
        |    ЗаказПокупателяТовары.КлючСвязи,
        |    ЗаказПокупателяТовары.КодСтроки,
        |    ЗаказПокупателяТовары.Резервировать,
        |    ЗаказПокупателяТовары.Отменено,
        |    ЗаказПокупателяТовары.ПричинаОтмены,
        |    ЗаказПокупателяТовары.ПродажаПодарка,
        |    ЗаказПокупателяТовары.Ниракс_СкладСборки
        |ИЗ
        |    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
        |ГДЕ
        |    ЗаказПокупателяТовары.Ссылка = &Ссылка
        |    И ЗаказПокупателяТовары.Резервировать = ЛОЖЬ";
        
        Запрос.УстановитьПараметр("Ссылка", ЗаказПокупателя.Ссылка);
        
        Результат = Запрос.Выполнить();
        
        Если НЕ Результат.Пустой() Тогда
            Выгрузка = Результат.Выгрузить();
            НовыйЗаказПоставщику = Документы.ЗаказПоставщику.СоздатьДокумент();
            НовыйЗаказПоставщику.Организация           = ДанныеЗаполнения.Организация;
            НовыйЗаказПоставщику.ЗаказПокупателя       = ДанныеЗаполнения.Ссылка;
            НовыйЗаказПоставщику.Магазин             = ДанныеЗаполнения.Магазин;
            НовыйЗаказПоставщику.Контрагент            = Справочники.Контрагенты.НайтиПоНаименованию("Тоговый дом");
            НовыйЗаказПоставщику.Ответственный       = Пользователи.ТекущийПользователь();
            НовыйЗаказПоставщику.Статус              = Перечисления.СтатусыВнутреннихЗаказов.КВыполнению;
            НовыйЗаказПоставщику.ДатаПоступления     = ТекущаяДатаСеанса();
            
            НовыйЗаказПоставщику.Товары.Загрузить(Выгрузка);
            //НовыйЗаказПоставщику.ПолучитьФорму("ФормаДокумента").Открыть();
            //ОткрытьФорму("Документ.ЗаказПоставщику.Форма.ФормаДокумента",НовыйЗаказПоставщику);
            //ОткрытьЗначение(НовыйЗаказПоставщику);
            //ОткрытьДокумент(НовыйЗаказПоставщику);
        КонецЕсли;
18 Alyonchik1
 
16.12.16
17:34
что-то много кода скопировала) на этом  сайте новичок пока)
19 Мимохожий Однако
 
16.12.16
17:36
Конфигурация ЗУП3.0 ))
20 Alyonchik1
 
16.12.16
17:40
(19) Нет - розница 3
21 Мимохожий Однако
 
16.12.16
17:53
Предполагаю, что у тебя на форме есть кнопка и команда по вызову заполнения. Верни в процедуру команды ссылки созданных документов и открой как в примере. Например, в структуру данные заполнения добавь два ключа "СсылкаНаЗаказПокупателя", "СсылкаНаЗаказПоставщику". Как-то так
22 Alyonchik1
 
16.12.16
17:57
(21) Что то найти не могу такого возврата (Верни в процедуру команды ссылки созданных документов и открой как в примере.)

ИнициализироватьДокумент(); - это основные значения подставляет
        ОбщегоНазначенияРТ.ПроверитьИспользованиеОрганизации(,,Организация);- это тоже не то((
23 Мимохожий Однако
 
16.12.16
18:00
Ты здесь показала процедуру, а как ты в неё попадаешь? Включи режим отладки, поставь точку останова, найди по стёку вызовов.
24 Fragster
 
гуру
16.12.16
18:05
в синтакс помощнике открой УправляемаяФорма расширение документов параметры формы
25 Alyonchik1
 
16.12.16
18:05
(23) http://v8.1c.ru/metod/faq2/answer.jsp?id=652&printversion=1
Вот что такое ОбработкаЗаполнения()

и как она открывается и попадаю я сразу туда после нажатия создать на основании
26 Fragster
 
гуру
16.12.16
18:05
нужно указать параметр Основание
27 Fragster
 
гуру
16.12.16
18:05
в процедуре открытьформу
28 Alyonchik1
 
16.12.16
18:06
(27) не могу читай в начале темы пояснения почему. Вот вопрос как открыть
29 Fragster
 
гуру
16.12.16
18:11
(28) открывай форму с клиента, а не с сервера
30 Garykom
 
гуру
16.12.16
18:11
Диалог в тему (с другом), авторская орфография и пунктуация соблюдены:

Д>а еще они везде передаютв  функции и модули саму форму
Д>и из параметров берут датлицу и работают с ней
Д>для заполнения например

Я>а вот за это убивать надо
Я>за передачу формы как параметр

Д> я переделываю понемногу
Д> делаю таб часть
Д> вместо паратмер формы
Д> чтобы работали их долбанные алгоритмя
Д> делаю пременную в молу формы экспорт по имени параметра
Д> и присваю ему сслку на ТЧ
Д> так хоть переписывать ненадо 100% кода ихнего
31 Мимохожий Однако
 
16.12.16
18:24
Еще раз...Режим отладки включать умеешь?
32 Alyonchik1
 
16.12.16
19:31
(31) конечно)
33 Alyonchik1
 
16.12.16
19:40
(30) что-то не поняла как это относится к теме))
34 mehfk
 
16.12.16
19:45
Шла вторая половина второго десятилетия XXI века. Тупые одинэсники все еще принимали усилия к показыванию формы на сервере...
35 Garykom
 
гуру
16.12.16
19:54
(33) примерно так Методы ПолучитьФорму() УФ &НаСервере

Ну не надо передавать ссылку на форму как параметр в своиъ процедурах/функциях!

Передавать нуна более простые объекты (массивы, ТЧ и т.д.) или ссылки на объекты в бд.
36 Alyonchik1
 
16.12.16
20:10
(29) Понимаю, что надо открывать с клиента! Но как? я нахожусь на сервере в модуле объекта. Как лучше открыть? куда передавать на форму?
37 Garykom
 
гуру
16.12.16
20:11
(36) Вернуться на клиента и "переписать нафуй все тут"