Имя: Пароль:
1C
 
УФ. Заполнение и вывод документа из внешней обработки.
0 Никулин Леонид
 
30.04.15
16:07
Здравствуйте!

Необходимо создать, заполнить и вывести на форму документ (Поступление) в БП3.0 Все это происходит во внешнем отчете. Предвижу пожелания доброжелателей и добавлю, что такова задача. Формировать отчет и из данных создавать документы. Проблема в том, что перед открытием запускаются процедуры заполнения документа и я попадаю модуль объекта, где ЭтотОбъект (ДокументОбъект) оказывается пустой((
1 Никулин Леонид
 
30.04.15
16:09
&НаКлиенте
Процедура СформироватьПоступление(Команда)
        
    Форма = ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.ФормаОбъекта");
    ДанныеФормы = Форма.Объект;
  
    ЗаполнитьДокументНаСервере(ДанныеФормы);

    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    Форма.Открыть();
            
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьДокументНаСервере(ДанныеФормы)
    
    ОбработкаОбъект = РеквизитФормыВЗначение("Отчет");
    
    ДокументОбъект = ОбработкаОбъект.ФормированиеДокумента();
    // Здесь ДокументОбъект заполнен. Все ок
    
    ЗначениеВДанныеФормы(ДокументОбъект,ДанныеФормы);
    
КонецПроцедуры
2 Никулин Леонид
 
30.04.15
16:16
up.
3 Никулин Леонид
 
30.04.15
16:18
или если кто знает где можно в БП3.0 подсмотеть при нажатии на кнопочку (не из контекста самого документа) формирование документа
4 sapphire
 
30.04.15
16:20
(0)
Сначала создаете документ, потом заполняете, потом уже открываете.
5 Никулин Леонид
 
30.04.15
16:22
(4) спс!
6 VikingKosmo
 
30.04.15
16:26
За
Форма = ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.ФормаОбъекта") и тому подобное в УФ принято отрубывать руки
7 Никулин Леонид
 
04.05.15
17:44
Не выходит сделать. Ветка актуальна. Возможно кто-нибудь из талантливых будет проходить мимо? Заходим, комментируем))
8 Любопытная
 
04.05.15
17:46
(7) А что конкретно не выходит?
9 Никулин Леонид
 
04.05.15
17:47
Вот последняя редакция

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

&НаСервере
Функция Заполнить(ДанныеФормы)
    ДанныеОбъекта = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ПоступлениеТоваровУслуг"));
    ДанныеОбъекта.Склад = Справочники.Склады.НайтиПоКоду("00000001");
    ЗначениеВДанныеФормы(ДанныеОбъекта, ДанныеФормы);
    Возврат ДанныеФормы;
КонецФункции
10 Любопытная
 
04.05.15
17:50
(9) Что-то вы не то делаете. Надо создать документ, заполнить его, а потом уже его открывать
11 Никулин Леонид
 
04.05.15
17:50
Открывается форма документа, но Склад не заполнен((. Если посмотреть на него отладчиком, то все ок. Но после моей обработки запускаются события при открытии. И в ОбработкеЗаполнения Склад у ЭтотОбъект уже пустой
12 Никулин Леонид
 
04.05.15
17:51
Крайне желательно не вносить в конфигурацию изменения.
13 Любопытная
 
04.05.15
17:53
Ну не вносите
14 Никулин Леонид
 
04.05.15
17:53
А как? Через Документы.ПоступлениеТоваровУслуг.СоздатьДокумент()
?
15 Никулин Леонид
 
04.05.15
17:56
Ща напишу что получилось...
16 Никулин Леонид
 
04.05.15
18:02
&НаКлиенте
Процедура СоздатьДокумент(Команда)
    
    ОткрытьЗначение(СоздатьДокументНаСервере().Ссылка);
            
КонецПроцедуры

&НаСервере
Функция СоздатьДокументНаСервере();
    ДокументОбъект = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    ДокументОбъект.Склад = Справочники.Склады.НайтиПоКоду("00000001");
    
    Возврат ДокументОбъект;    
КонецФункции
17 Никулин Леонид
 
04.05.15
18:03
Так не работает. Подправьте, умные люди. Ну или подскажите куда подумать
18 Никулин Леонид
 
04.05.15
18:14
Так тоже фигня получается. Склад пустой. Да, кстати не сказал, что это БП3.0.38.54 интерфейс Такси


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

&НаСервере
Функция СоздатьДокументНаСервере(ДанныеФормы);
    ДокументОбъект = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    ДокументОбъект.Склад = Справочники.Склады.НайтиПоКоду("00000001");
    
    ЗначениеВДанныеФормы(ДокументОбъект,ДанныеФормы);
    
    Возврат ДанныеФормы;    
КонецФункции
19 GROOVY
 
04.05.15
18:18
Передавай склад как параметр заполнения в открываемую форму.
20 Никулин Леонид
 
04.05.15
18:24
GROOVY я об этом думал. Возможно что-то упустил. У документа ПоступлениеТоваровУслуг есть ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка), но она не Экспортная. Я до параметра ДанныеЗаполнения из внешней обработки не могу достучаться. Возможно это нужно делать как-то иначе?
Черканите строчечку кода.
21 Никулин Леонид
 
04.05.15
18:31
up.
22 Никулин Леонид
 
04.05.15
18:53
up.up.
23 GROOVY
 
04.05.15
19:01
В метод ОткрытьФорму/ПолучитьФорму нужно передать коллекцию параметров, если не ошибаюсь вторым параметром.
24 Никулин Леонид
 
04.05.15
19:06
(23)спс! Да, ПолучитьФорму. Я нашел. Пробую. Пока безрезультатно))
25 ИсчадиеADO
 
04.05.15
19:10
(24) у мну твоим кодом все получилось из (18). В БП 3.0 единственное ты не ту форму берешь
26 ИсчадиеADO
 
04.05.15
19:11
т.е. в док-те Поступление товаров услуг, форма документа - это форма выбора вида операции тупо. там объекта нет
27 ИсчадиеADO
 
04.05.15
19:12
(19) а если ему ТЧ заполнить нужно, он тоже параметрами передавать будет?
28 ИсчадиеADO
 
04.05.15
19:16
(27) +на складе кстати не стоит флага "заполнять из данных заполнения"
29 Никулин Леонид
 
04.05.15
19:18
(25) минуту...
34 Никулин Леонид
 
04.05.15
19:23
Вам смешно, а меня разрывает. Если я скажу сколько я потратил времени на
Форма = ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары");

Вам станет еще смешнее.
36 ИсчадиеADO
 
04.05.15
19:25
(34) получилось?
38 Никулин Леонид
 
04.05.15
19:27
Ув. участники ветки благодарю всех за участие. В особенности  GROOVY и ИсчадиеADO за конструктивные комментарии. Да. Это было фееричное решение! Код заблестал красотой и изяществом
39 ИсчадиеADO
 
04.05.15
19:28
(38) странно что сам не заметил, у тебя ошибку должно было выдать, когда ты к Форма.Объект обращался... Ну пожалуйста
AdBlock убивает бесплатный контент. 1Сергей