Имя: Пароль:
1C
1C 7.7
v7: Как открыть форму созданного документа
, ,
0 sivsoft
 
14.03.12
14:55
Доброго времени суток!
Надо открыть форму документа, который создается программно и заполнить его из другого документа.

НалогНакл = СоздатьОбъект("Документ.НалоговаяНакладная");
НалогНакл.Новый();
//...
//Далее заполняю

И гм... как открыть форму с заполненным содержимым?
1 al_zzz
 
14.03.12
15:01
А ты лучше заполни его сначала из другого документа, а потом открой. :-)
ОткрытьФорму(НалогНакл);
2 Ёпрст
 
14.03.12
15:15
(0)

...
НалогНакл.Записать();
ОткрытьФорму(НалогНакл.ТекущийДокумент());
3 sivsoft
 
14.03.12
15:41
Согласен так можно, но мне нужно чтобы документ не проводился/не записывался.

Идея в том что будут создаваться документы(просто для печати) проведение их не нужно, а чтобы не делать в Экселе, логичней взять инфу из 1С
4 ДенисЧ
 
14.03.12
15:46
конт = "";
ОткрытьФорму("Документ.НалоговаяНакладная", конт);
Конт.Тряляля = трулюлю;
Конт.Форма.Обновить();
5 zak555
 
14.03.12
15:47
записать + отменить транзакцию =)
6 sivsoft
 
14.03.12
15:53
Получилось без записи по методе (4). Спасибо. :)

А как можно еще сделать, чтобы форма при закрытии не ругалась типа "сохранить документ?"?
7 zak555
 
14.03.12
15:55
(6) СтрокаДействийФормы ?
8 sivsoft
 
14.03.12
16:08
1. Немного не понял как это реализовать с помощью СтрокаДействийФормы?
2. Как к кнопке обратиться в форме. Так:
ОткрытьФорму("Документ.НалоговаяНакладная", ФормКонт);
ФормКонт.кОК.Видимость(0);
не получается :(
9 sivsoft
 
14.03.12
16:37
Помогите плиз
10 DimRom
 
14.03.12
16:55
Видимость/Доступность кнопки обрабатывай в модуле Формы самого документа, а не там откуда открываешь
11 DimRom
 
14.03.12
16:56
ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>)
<КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен);

вот по этому контексту в ПриОткрытии и закрывай
12 Ёпрст
 
14.03.12
18:06
(6) разве что принудительно попробовать сбросить модифицированность формы
13 sivsoft
 
15.03.12
00:10
Но это все как я понимаю смогу сделать только меняя стандартный код налоговой и других доков. А этого очень не хочется. Нужна самодостаточность. Так можно сделать?
14 Ёпрст
 
15.03.12
09:18
(13) можно
15 ЧеловекДуши
 
15.03.12
09:23
(13)Используй формекс (для заполнения не записанного документа), или делай этот же фокус, но только с записанным документом (без всяких ВК).
16 sivsoft
 
20.03.12
11:18
Не получается заполнить таблицу в этом документе. Остальное заполняется. Делаю так(табличная часть пустая остается):
ПрихНаклВсе.ВыбратьСтроки();
Пока ПрихНаклВсе.ПолучитьСтроку() = 1 Цикл
   ФормКонт.НоваяСтрока();
   ФормКонт.ТМЦ = ПрихНаклВсе.ТМЦ;
   ФормКонт.Кво = ПрихНаклВсе.Кво;
   ФормКонт.Ед = ПрихНаклВсе.Ед;
   ФормКонт.Коэффициент = ПрихНаклВсе.Коэффициент;
   ФормКонт.ЦенаБезНДС = ПрихНаклВсе.ЦенаБезНДС;
   ФормКонт.ЦенаСНДС = ПрихНаклВсе.ЦенаСНДС;
   ФормКонт.СуммаБезНДС = ПрихНаклВсе.СуммаБезНДС;
   ФормКонт.НДС = ПрихНаклВсе.НДС;
   ФормКонт.СуммаСНДС = ПрихНаклВсе.СуммаСНДС;
   Если Константа.ОсновнаяЦена = Перечисление.ВидыЦенВДокументах.ЦенаСНДС Тогда
       ФормКонт.СуммаБезСкидки = ФормКонт.СуммаСНДС;
   Иначе
       ФормКонт.СуммаБезСкидки = ФормКонт.СуммаБезНДС;
   КонецЕсли;
КонецЦикла;
ФормКонт.Форма.Обновить();
17 Джинн
 
20.03.12
11:23
(16) И не получится. Загрузи FormEx. После чего все будет работать.
18 zak555
 
20.03.12
12:00
(16) без ВК - смотри в (5)
19 aka AMIGO
 
20.03.12
12:11
в документе, из которого создаешь новый документ (который тебе нужен "без записи"):
ТЗЗ = создатьОбъект("ТаблицаЗначений"); //заготовка под ТЧ подчиненного документа
...
Процедура СоздатьДокументРеализация()
//... заполнение ТЗЗ
   Парам = СоздатьОбъект("СписокЗначений");
   Парам.Установить("Команда","ИзЗаказаЗЧ");
   Парам.Установить("ТЗЗ", ТЗЗ);
   ОткрытьФорму("Документ.РеализацияРозница", Парам);
конецПроцедуры

В Документе "РеализацияРозница"
Процедура ПриОткрытии()    
   
   Парам = Форма.Параметр;
   Если ТипЗначенияСтр(Парам)="СписокЗначений" Тогда
       ИначеЕсли Парам.Получить("Команда") = "ИзЗаказаЗЧ" Тогда
           ТЗЗ = СоздатьОбъект("ТаблицаЗначений");
           ТЗЗ = Парам.Получить("ТЗЗ");
           Если ПустоеЗначение(ТЗЗ)=1 Тогда
               СтатусВозврата(0);Возврат;
           КонецЕсли;
           //Документ создается на основании Документа "ЗаказЗапасныхЧастей"
//далее - заполнение шапки и ТЧ
//всё.. док создан, не записан.

точно то-же можно повторить в обработке
20 sivsoft
 
20.03.12
14:52
В общем понятно - надо записывать.
1. А как отменить транзакцию?
2. Следы не остаются в базе после отмены?
21 Ёпрст
 
20.03.12
14:56
(20) Транзакция тебе не поможет, а кто этот бред советует - сам так не делал никогда.

Штатно, можно либо передачей параметра в открываемую форму (тогда придется править ПриОткрытии (или ВВодНового) у документа, либо, если не править модуль формы - через обработку ожидания.

Не штатно - загрузитьформекс и всё: будет доступен контекст открытой формы для создания новых строк через этот контекст.
22 Ёпрст
 
20.03.12
14:58
+21
т.е Тебе нужно всего лишь написать:

ЗагрузитьВнешнююКомпоненту("formex.dll");
Конт="";
ОткрытьФорму("Документ.НужныйВид",Конт);
Конт.РеквизитШапки = ...;
Конт.НоваяСтрока();
Конт.РеквизитТабличнойЧасти = ......;
23 sivsoft
 
20.03.12
15:08
Так не хотелось компоненты дополнительные... ну да ладно.
А загрузить formex в глобальном модуле прописываю при старте?
24 Ёпрст
 
20.03.12
15:11
(23) желательно да.
Если религия не позволяет их использовать - передавай параметр в открываемую форму, там лови и делай что хочешь..
Как в (19) примерно.
Тока тебе придётся конфу править для этого.
25 sivsoft
 
20.03.12
15:15
еще - а где formex.dll должна лежать в каталоге базы или в каталоге программы?
26 Mikeware
 
20.03.12
15:18
(25) главное, чтоб загружен был  :-)
27 aka AMIGO
 
20.03.12
15:20
(23) я у тебя в ветке забанен? привел пример в (19) без всяких вк, чем не устраивает?
хотя.. мож и передумал.. даёшь ВК! :)
28 sivsoft
 
20.03.12
15:48
(27) дык - это ж править надо конфу - очень не хочу трогать - там и так исправлений выше крыши.
29 sivsoft
 
29.03.12
12:39
В общем с formex получилось. Но тут вышла еще одна проблема :(.
Документы формируются на основе приходной накладной. И все бы ничего, но необходимо в налоговой и расходной менять конрагента на нашу фирму, а фирму на контрагента того - типа мы выписываем от другой фирме нам документы.
И вот тут застопорился. 1С не дает мне выставлять вместо Фирмы контрагента, а вместо конрагента нашу фирму.
Как можно решить проблему?
30 viktor_vv
 
29.03.12
12:47
И правильно не дает, это ж разные справочники.
В контрагента добавляешь реквизит Фирма, в фирму добавляешь реквизит Контрагент соотвествующих типов значений. Заполняешь их и при формировании подставляй оттуда.
Закон Брукера: Даже маленькая практика стоит большой теории.