Имя: Пароль:
1C
1С v8
Программное создание документа "Поступление товаров и услуг"
,
0 din107
 
25.12.13
23:21
Доброе времени суток!!!

Необходимо при считывании данных из файла Формировать документ "Поступление товаров и услуг", а также счет-фактуру полученную к нему в конфигурации "1С: Бухгалтерия 3.0".

Считывание данных из файла и Формирование документа "Поступление товаров и услуг"  происходит на Сервере. В документе есть реквизиты формы "НомерСчетаФактурыПолученного" и "ДатаСчетаФактурыПолученного". Вопрос: как заполнить данные реквизиты формы?
1 vicof
 
26.12.13
00:19
Присвоить им значения
2 catena
 
26.12.13
07:09
(25)Точно-точно реквизиты формы? Вы в курсе, что реквизиты формы живут только пока живет форма?
3 Лодырь
 
26.12.13
07:11
(2) тсссс.
4 Wobland
 
26.12.13
07:16
(2) реквизиты формы живут, пока мы помним о них. Ленин покинул нас в 24м году, но он живёт в наших сердцах
5 skunk
 
26.12.13
07:16
(2)вчера корпоратив был или вангуешь так умело?
6 Wobland
 
26.12.13
07:22
а вообще, реквизиты формы заполнятся сами из данных документа
7 MiniMuk
 
26.12.13
07:33
НомерСчетаФактурыПолученного = СчитатьНомерСчетФактуры(ИмяЗагружаемогоФайла);
ДатаСчетаФактурыПолученного = СконвертироватьДату(СчитатьДату(ИмяЗагружаемогоФайла));
8 din107
 
26.12.13
07:51
А как можно обратиться к реквизитам формы, если она не открыта?
9 Wobland
 
26.12.13
07:53
(8) предлагаю так: "Уважаемые реквизиты формы! Я вас очень люблю и уважаю, но, к сожалению, в этой задаче вы мне не нужны. Извините за беспокойство, я обязательно поработаю с вами в следующий раз"
10 din107
 
26.12.13
07:54
Создание документа "Поступление товаров и услуг" происходит следующим образом:

Объект = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
Дальше идет заполнение реквизитов объекта.
...

Форма при этом не открывается.
11 Wobland
 
26.12.13
07:55
(10) одобряю
12 din107
 
26.12.13
07:58
(11) Так как всё-таки заполнить эти реквизиты: "НомерСчетаФактурыПолученного" и "ДатаСчетаФактурыПолученного" или это невозможно сделать?
13 catena
 
26.12.13
08:05
(8)Доктор, меня игнорируют :(
14 Wobland
 
26.12.13
08:09
(12) >Дальше идет заполнение реквизитов объекта.
заполняются же, не?
15 Strogg
 
26.12.13
08:12
(12) Создавай счет-фактуру полученный и в качестве документа-основания указывай вновьсозданный документ ПТиУ. Сдается мне. чтото, о чем ты говоришь, достигается при открытии формы одинэсовскими методами. И тебе туда лезть не надо.
16 Wobland
 
26.12.13
08:13
(13) следующий!
17 Wobland
 
26.12.13
08:14
(15) насколько помню, где-то можно и документ делать и пару строк (номер+дата) в зависимости от желания
18 Strogg
 
26.12.13
08:29
(17)- точно. Ну так это вообще лехкатня :)
19 Sabbath
 
26.12.13
08:44
(12) задайся вопросом, как они заполняются по типовому
20 Sasha_1CK
 
26.12.13
11:18
Для каждого СтрокаДок Из Объект.ТаблицаДокументов Цикл
        Если Не СтрокаДок.Флажок  Тогда
            Продолжить;
        КонецЕсли;
        ЕстьТара = Ложь;
        Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
        Док.ВидОперации                = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары;
        Док.ДатаВходящегоДокумента          = СтрокаДок.ДатаВходящегоДокумента;
        Док.НомерВходящегоДокумента        = СтрокаДок.НомерВходящегоДокумента;
        Док.Организация                = ...;    
        Док.Контрагент                = ...;    
        Док.ДоговорКонтрагента                = ...;
        Док.СчетУчетаРасчетовСКонтрагентом     = ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками;
        Док.СчетУчетаРасчетовПоАвансам         = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамВыданным;
        Док.СуммаВключаетНДС            = Истина;
        Док.СпособЗачетаАвансов            = Перечисления.СпособыЗачетаАвансов.НеЗачитывать;
        Док.Комментарий                = СокрЛП(СтрокаДок.Документ) + " " + " Загружен  " +  СокрЛП(ТекущаяДата());  
        Док.Ответственный            = Пользователи.ТекущийПользователь();
        Док.КратностьВзаиморасчетов        = 1;
        Док.КурсВзаиморасчетов            = 1;
        Док.Склад                = СтрокаДок.Склад;
        Док.ТипЦен                = ...;
        Док.Товары.Очистить();
        Для каждого СтрокаТовар Из Объект.ТаблицаТоваров Цикл
            Если СокрЛП(СтрокаТовар.Документ)<>СокрЛП(СтрокаДок.Документ) Тогда
                Продолжить;;
            КонецЕсли;
            НоваяСтрока             = Док.Товары.Добавить();
            НоваяСтрока.Номенклатура    = СтрокаТовар.Номенклатура;
            НоваяСтрока.Количество        = СтрокаТовар.Количество;
            НоваяСтрока.СтавкаНДС        = СтрокаТовар.СтавкаНДС;
            НоваяСтрока.Цена        = СтрокаТовар.Всего / ?(СтрокаТовар.Количество =0 ,1,СтрокаТовар.Количество);
            НоваяСтрока.Сумма        = СтрокаТовар.Всего;
            НоваяСтрока.СуммаНДС        = СтрокаТовар.Ндс;
            НоваяСтрока.СчетУчета        = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
            НоваяСтрока.СчетУчетаНДС    = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымМПЗ;
        
        КонецЦикла;
        Док.Записать(РежимЗаписиДокумента.Проведение);
        СчетФактура = УчетНДСПереопределяемый.НайтиПодчиненныйСчетФактуруПолученный(Док.Ссылка,Неопределено, Ложь);
        Если СчетФактура = Неопределено Тогда
            СчетФактура = Документы.СчетФактураПолученный.СоздатьДокументНаОсновании(Док.Ссылка, СтрокаДок.НомерВходящегоДокументаСФ, СтрокаДок.ДатаВходящегоДокументаСФ);
        Иначе    
            ОбъектСчетФактура = СчетФактура.Ссылка.ПолучитьОбъект();
            ОбъектСчетФактура.Записать(РежимЗаписиДокумента.Проведение);
        КонецЕсли;
        
    КонецЦикла;
21 Sasha_1CK
 
26.12.13
11:20
Собственно ключевой кусок кода
СчетФактура =Документы.СчетФактураПолученный.СоздатьДокументНаОсновании(Док.Ссылка, СтрокаДок.НомерВходящегоДокументаСФ, СтрокаДок.ДатаВходящегоДокументаСФ)
22 din107
 
26.12.13
12:48
(21) Всё доперло!!! Большое спасибо!!!
Основная теорема систематики: Новые системы плодят новые проблемы.