Имя: Пароль:
1C
1C 7.7
v7: Вопрос по созданию СФ
0 never_sleep
 
25.09.14
20:08
Прошу помощи у более опытных коллег.
Программно создал документ реализацию (на основе выгрузки от поставщика). Необходимо так же сваять счет-фактуру к этой реализации.
Я конечно понимаю, что можно так же как и с реализацией поступить: создать документ типа "СчетФактураВыданный" и заполнить все нужные поля явно.  Но нет ли способа сделать это более лаконично. Передать контекст каким-нибудь образом, чтобы все автоматом на основании реализации проставилось?
З.Ы. Да, гуглил. Нет, ничего путного не нашел.
1 ДенисЧ
 
25.09.14
20:18
Плохо гуглил.
Насколько я помню, у метода ОткрытьФорму() есть ещё один секретный параметр...
Читай внимательней.
Не найдёшь - я тряхну стариной и архивами и таки заставлю тебя купить у меня СП,
2 vicof
 
25.09.14
20:39
(1) смотри, чтоб старина не отвалилась
(2) заполнить значения свойств ну или уже есть процедура, по-моему в модуле учетндс.
3 vicof
 
25.09.14
20:40
А блин, это семерка, тады ой
4 kobzon2
 
25.09.14
20:46
Вродь в документе реализация есть кнопочка счетфактура с процедурой глОткрытьСчетФактуру(Контекст)
5 Aprobator
 
25.09.14
21:08
Наверняка есть типовое создание из документа, посмотреть эту процедуру - раз плюнуть, было бы желание.
6 Рэйв
 
25.09.14
21:10
(0)Посмотри в счет фактуре процедуру заполнения на основании.Она стандартная и экспортная.Должна быть.
Тебе впринципе надотпросто ее найти и передать параметром документ основание.ссылка
7 never_sleep
 
26.09.14
08:17
(1) Насколько я понял из описания "ОткрытьФорму()", оно открывает форму для создания документа. Мне визуальная форма не нужна. Хотелось бы, чтобы пользователь ничего не видел, кроме очередной синей строчки на сером фоне, свидетельствующей, о том, что очередная СФ провелась. И да, Денис, огромное спасибо за то, что в каждой моей теме отвечаете. Вы во многом мне помогли!
(6) Попробовал. Но вываливается ошибка.
вот такой кусок кода у меня в обработки выгрузки от контрагента:

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

Вываливает следующую ошибку

СФ.ВводНаОсновании(ДокРеализация);
Поле агрегатного объекта не обнаружено (ВводНаОсновании)

Я так понимаю, из-за того, что я должен вызывать этот метод в модуле формы. Из отчета моего, его не видно.
8 Злопчинский
 
26.09.14
11:01
(7) хрен вам а не шоколадку.
.
если без извратов, то попробовать так
.
конт="";
ОткрытьФорму("Документ.СчетФактура",конт,ДокРеализация.ТекущийДокумент());
Конт.Записть();
Конт.Форма.Закрыть(0);
.
при этом на экране мелькнет счф.
.
если мелькание не нужно, тогда только либо программным кодом создавать счф, либо править код счф - чтобы при открытии счф на основании выполнялась автозапись и автовыход из документа со статусом возврата(0)
9 never_sleep
 
26.09.14
11:01
Короче заполнил шапку ручками, табличную часть трогать не стал. Прописал строку

СФ.ДокОснование = ДокПоступление.ТекущийДокумент();

Но сначала прописал это до того как документ записывался и проводился. Получил кучу траблов. Прописал это уже следующим образом и все красиво встало.

ДокПоступление.Записать();
ДокПоступление.Провести();
ДокРеализация.Записать();
ДокРеализация.Провести();
СФ.ДокОснование = ДокПоступление.ТекущийДокумент();
СФ.Записать();
СФ.Провести();

Хотя наверное и шапочку можно было не заполнять и все бы заработало. Надо проверить по-хорошему.
10 never_sleep
 
26.09.14
11:06
(8) Взял на вооружение, спасибо!
Программист всегда исправляет последнюю ошибку.