Имя: Пароль:
1C
 
Как открыть (создать) новый документ из документа
0 GoldMax1
 
08.05.05
22:24
Требуется из документа "Счет" открыть новый документ "Расходная накладная" и записать в него все известные поля из Счета.

При этом новый документ должен появиться на экране с заполненными полями, но в базу он не сохраняется. Сохранение нового документа возможно по нажатию кнопки сохранить пользователем.

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

НоваяРасходнаяНакладная.ДатаДок = ДатаДок;
НоваяРасходнаяНакладная.Покупатель = Покупатель;
НоваяРасходнаяНакладная.Валюта = Валюта;
НоваяРасходнаяНакладная.КурсВалюты = КурсВалюты;
НоваяРасходнаяНакладная.МестоХранения = МестоХранения;
НоваяРасходнаяНакладная.Проект = Проект;
НоваяРасходнаяНакладная.Наценка = Наценка;
НоваяРасходнаяНакладная.Примечание = Примечание;
НоваяРасходнаяНакладная.ИтогСуммыБазовой = ИтогСуммыБазовой;
НоваяРасходнаяНакладная.ИтогСуммыВалютной = ИтогСуммыВалютной;
НоваяРасходнаяНакладная.Основание1 = ТекущийДокумент();
НоваяРасходнаяНакладная.СуммаСчета = Итог("СуммаРасходная");

МояТаблица = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть (МояТаблица,"НомерСтроки,БарКод,Наименование,ЕдИзм,ЦенаАктуальная,Количество,ЦенаБазовая,ЦенаРасходная,СуммаБазовая,СуммаРасходная");
НоваяРасходнаяНакладная.ЗагрузитьТабличнуюЧасть(МояТаблица);

НоваяРасходнаяНакладная.Записать();
ОткрытьФорму(НоваяРасходнаяНакладная.ТекущийДокумент());
Предупреждение ("Урааа! Свершилось чудо! Расходная накладная № " + СокрЛП(НоваяРасходнаяНакладная.НомерДок) + " от " + СокрЛП(НоваяРасходнаяНакладная.ДатаДок) + " успешно создана");
1 Почти Экслер
 
08.05.05
22:28
ОткрытьФорму() в неё передать кучу параметров... без сохранения ТЧ вроде не заполнить в ней - фича такая...
2 goodfella
 
08.05.05
22:36
(0) А вот то, что вы здесь написали, что показывает?
3 Почти Экслер
 
08.05.05
22:41
(2) Ему же записывать не надо...
4 goodfella
 
08.05.05
22:49
(3) Точно, не дочитал, тогда вот, из СП:
ОткрытьФорму(<?>,,)
Синтаксис:
ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>)
Назначение:
Открывает визуальную форму ввода нового документа (в т.ч. в режиме ввода на основании).
Возвращает: 1 - если действие выполнено, 0 - иначе.
Параметры:
<ОписательОбъекта> - строка-описатель документа вида:
 'Документ.ХХХХХ', где ХХХХХХ - вид документа;
<КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен);
<ДокументОснование> - документ-основание для открытия формы ввода нового документа в режиме ввода на основании (необязателен).
Замечание:
Пока форма открыта, тип значения параметра <КонтекстФормы> равен 100, когда закрыта - 0.
5 Почти Экслер
 
08.05.05
22:52
(4) 1 тоже не дочитал? ;) про фичу...
6 GoldMax1
 
08.05.05
23:07
Проблема в том что форма открывается и сохраняется, а мне нельзя ее сохранять. Обязательно на сохранение надо спросить разрешение у оператора.

Пробовал другими способами. Форма открывется, не сохраняется, а табличная часть пустая, хотя я ее заполнял
7 Почти Экслер
 
08.05.05
23:10
(6) Ты прочитал 1?
8 goodfella
 
08.05.05
23:13
(6) А оператор может менять "Расходную накладную"?
9 427
 
08.05.05
23:14
(7) Оно слепое...
10 427
 
08.05.05
23:15
(8) у меня - может... Но отпустить больше счета нельзя - даже при частичных отгрузках...
11 1С Дурочкааа
 
08.05.05
23:16
А что, если не изобретать велосипед, открыть любую типовую конфигурацию и посмотреть как это делается хоть из документа, хоть из журнала?
12 427
 
08.05.05
23:17
(11) это же открывать надо...
13 GoldMax1
 
08.05.05
23:20
А если нет стандартной конфигурации? Дайте пожалуйста пример из стандартной конфигураци
14 1С Дурочкааа
 
08.05.05
23:34
(13) Регистрационную анкету покажи, и будет тебе типовая конфигурация.
15 goodfella
 
08.05.05
23:34
(13) В документе "Расходная накладная" должна быть процедура ВводНаОсновании, где должно быть описано, как из основания брать данные, а при проведении заявки ставь вызов: ОткрытьФорму("Документ.РасходнаяНакладная",,ТекущийДокумент())
16 Почти Экслер
 
08.05.05
23:37
(14) Это просто Пять ;)
17 427
 
08.05.05
23:46
(15) Не обязательно так... Можно и по другому... Но сути дела это не меняет
18 GoldMax1
 
08.05.05
23:57
При использовании ОткрытьФорму("Документ.РасходнаяНакладная",,ТекущийДокумент()) не заполняется табличная часть. В чем причина?
19 427
 
09.05.05
00:00
а в процедуре ВводНаОсновании предусмотрено заполнение таб части?
20 GoldMax1
 
09.05.05
00:02
Как именно нужно заполнять табличную часть при использовании процедуры вводНаОсновании?
21 Warlock
 
09.05.05
00:02
(20)А как ты другие реквизиты заполняешь?!
22 GoldMax1
 
09.05.05
00:04
Т.е. в "Расходной накладной" нужно написать цикл обхода строк "Счета" при создании их него новой накладной?

А почему этот цикл нельзя разместить в процедре "Счета"?
23 GoldMax1
 
09.05.05
00:06
Реквизиты шапки заполняю из процедуры счета при создании накладной. А табличная часть по неизвестной причине не заполняется
24 Warlock
 
09.05.05
00:09
(23)Заполняй все в РН. ТЧ таким способом не заполнить, тебе это еще в (1) сказали...
25 Warlock
 
09.05.05
00:10
+24 как вариант можешь сформировать СЗ со всеми параметрами и передавать его вторым параметром в ОткрытьФорму()
26 GoldMax1
 
09.05.05
00:12
Большое спасибо. В таком случае хотелось бы увидеть образец процедуры ВводНаОснованиии для заполнения расходной накладной
27 Почти Экслер
 
09.05.05
00:19
(26) Золотой Вы наш Максим, возьмите любую типовую в самом деле...
28 GoldMax1
 
09.05.05
00:24
Ну нет у меня типовой. Поэтому если есть возможность, то пришлите пожалуйста образец
29 427
 
09.05.05
00:24
образец

Контрагент = Контрагент
Докоснование.ВыьратьСтроки...
Пока ДокОснование.ПолучитьСтроку = 1 цикл
Товар = ДокОснование.Товар...
Цена = ДокОснование.Цена
...
конец...
Закон Брукера: Даже маленькая практика стоит большой теории.