Имя: Пароль:
1C
1С v8
v8: Конвертация данных 2.1: Как выгрузить подчиненный документ?
,
0 breakthrough
 
19.10.12
08:48
Здравствуйте. Выгружаю расходные накладные из 7-ки ТиС в КА 8.2. С этим все ок. Нужно, также, выгрузить счета-фактуры с документом-основанием.
Подскажите, пожалуйста, варианты как это можно реализовать. У меня идей нет, поэтому пишу сюда.
1 vicof
 
19.10.12
08:50
После выгрузки в файл для ПКО твоего документа ВыгрузитьПоПравилу() и выгружай СФ
2 dk
 
19.10.12
08:51
выбратьподчиненные + выгрузитьпоправилу
3 breakthrough
 
19.10.12
08:54
(1), (2) А в ВыгрузитьПоПравилу() передавать правило для конвертации счетов-фактур, верно?
4 vicof
 
19.10.12
08:55
(3) в точку
5 vicof
 
19.10.12
08:56
и источник или исходящие данные
6 breakthrough
 
19.10.12
08:58
(2) А все таки придется делать выборку по подчиненным и по типу документа "счет-фактура" или нет?
7 vicof
 
19.10.12
09:00
(6) ну а сам-то как думаешь?
8 breakthrough
 
19.10.12
09:01
(5) Не понял.
9 vicof
 
19.10.12
09:02
ВыгрузитьПоПравилу(Источник,Приемник,ИмяПКО,УзелССылки,ТолькоПолучитьУзелСсылки, ПКО,ЭтоПравилоСГлобальнойВыгрузкойОбъектов,ВыборкаДляВыгрузкиДанных);

Как правило, данная функция используется в обработчиках с параметрами Источник(произвольный источник данных, подлежащий конвертации. Это может быть ссылка на выгружаемый объект, а может быть произвольный набор данных: структура, список значений, строка тз. Обязательно совпадение структуры свойств источники и тех свойств ПКО, которые должны быть получены из источника), ВходящиеДанные(произвольные вспомогательные данные, передаваемые правилу конвертации объектов. Как правило, структур или список значений, соответсвующий структуре свойств ПКО, с установленным флажком "ПолучитьИзВходящихДанных"), ИмяПКО(имя правила конвертации, согласно которому выполняется выгрузка).

ВыгрузитьПОПравилу(Источник,,ВходящиеДанные,,ИмяПКО);
10 Aleksey
 
19.10.12
09:04
Так тебе документ-основание нужно выгружать или подчиненый документ?
11 breakthrough
 
19.10.12
09:05
(9) Понял.
(10) Подчиненный документ, но обязательно с заполненным реквизитом документ-основание.
(1) В каком обработчике ПКО "РасходнаяНакладаня" нужно делать выгрузку по правилу? "После выгрузки"?
12 breakthrough
 
19.10.12
09:06
(10) Т.е. нужно выгрузить связку РН+СФ (исходящие).
13 Aleksey
 
19.10.12
09:08
Если ты боишься зацикливания, то его не будет, КД всё разрулит и будет хорошо
14 breakthrough
 
19.10.12
09:11
(9) Я не понимаю как конкретно передать ссылку на документ-основание. Через "источник"?  Зачем тогда входящие данные? Или я неправильно понимаю.
15 Seducer
 
19.10.12
09:21
Взято из правил УТ=>БП.  В КА, наверное, что-то типа этого.
В ПВД "РеализацияТоваровУслуг" в обработчике "После выгрузки" такой код:

СчетФактура = УчетНДС.НайтиПодчиненныйДокумент(Объект.Ссылка, "СчетФактураВыданный");    
Если НЕ СчетФактура = Неопределено Тогда
   ВыгрузитьПоПравилу(СчетФактура, , , , "СчетФактураВыданный");
КонецЕсли;
16 breakthrough
 
19.10.12
09:30
(15) Вот спасибо!)
17 breakthrough
 
22.10.12
13:04
Сделал выборку подчиненного документа следующим образом:
   СчетФактура = СоздатьОбъект("Документ");
   ЕстьПодч =    СчетФактура.ВыбратьПодчиненныеДокументы(,,Объект);
   Если ЕстьПодч =1 Тогда
       Пока СчетФактура.ПолучитьДокумент()=1 Цикл
           Если СчетФактура.Выбран()=0 Тогда
               Продолжить;
           КонецЕсли;
           Если (СчетФактура.Вид()="Счет_фактура") Тогда
           Иначе
               Продолжить;
           КонецЕсли;
           Если (СчетФактура.ПометкаУдаления()=1) ИЛИ (СчетФактура.Проведен()=0) Тогда
               Продолжить;
           КонецЕсли;
               ВыгрузитьПоПравилу(СчетФактура, , , , "СчетФактураВыданный");    
               Прервать;
       КонецЦикла;
   
   КонецЕсли;

При выгрузке из 7-ки ловлю ошибку: Ошибка исполнения обработчика:  ПВД_ПослеВыгрузкиОбъекта_РасходнаяНакладная
 - Неверное имя атрибута
18 breakthrough
 
22.10.12
13:05
Где ошибка понять не могу..
19 dk
 
22.10.12
13:07
ВыгрузитьПоПравилу(СчетФактура.ТекущийДокумент(), , , , "СчетФактураВыданный");
для начала
20 breakthrough
 
22.10.12
13:08
(19) Да уж, невнимательность...Спасибо.
21 breakthrough
 
22.10.12
13:09
(19) да и алгоритм кривой) только сейчас заметил.
22 breakthrough
 
22.10.12
13:11
А эта ошибка из-за чего все-таки?:
Ошибка исполнения обработчика:  ПВД_ПослеВыгрузкиОбъекта_РасходнаяНакладная
 - Неверное имя атрибута
23 breakthrough
 
22.10.12
13:15
СчетФактура = СоздатьОбъект("Документ");
   ЕстьПодч =    СчетФактура.ВыбратьПодчиненныеДокументы(,,Объект);
   Если ЕстьПодч =1 Тогда
       Пока СчетФактура.ПолучитьДокумент()=1 Цикл
           Если СчетФактура.Выбран()=0 Тогда
               Продолжить;
           КонецЕсли;
           Если Не(СчетФактура.Вид()="Счет_фактура") Тогда
               Продолжить;
           КонецЕсли;
           Если (СчетФактура.ПометкаУдаления()=1) ИЛИ (СчетФактура.Проведен()=0) Тогда
               Продолжить;
           КонецЕсли;
           ВыгрузитьПоПравилу(СчетФактура.ТекущийДокумент(), , , , "СчетФактураВыданный");    
           Прервать;
       КонецЦикла;
   
   КонецЕсли;
24 breakthrough
 
22.10.12
13:16
Люди, подскажите!
25 dk
 
23.10.12
07:47
шо как маленький-то )
навтыкай везде сообщить и определи на какой строке вылетает
26 Рэйв
 
23.10.12
07:50
(0) Да сделай очередь СФ после накладных оснований и выгружай.
Сначала загрузятся накладные, потом к ним СФ
Главное для реквизита ДокументОснование поставь ПКО накладных и оно само найдет и свяжет
27 breakthrough
 
23.10.12
07:52
СчетФактура = СоздатьОбъект("Документ");
   ЕстьПодч =    СчетФактура.ВыбратьПодчиненныеДокументы(,,Объект);
   ВходящиеДанные = СоздатьОбъект("СписокЗначений");
   ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
   ТаблицаДокумента.НоваяКолонка("ДокументОснование");
   Если ЕстьПодч =1 Тогда
       Пока СчетФактура.ПолучитьДокумент()=1 Цикл
           Если СчетФактура.Выбран()=0 Тогда
               Продолжить;
           КонецЕсли;
           Если Не(СчетФактура.Вид()="Счет_фактура") Тогда
               Продолжить;
           КонецЕсли;
           Если (СчетФактура.ПометкаУдаления()=1) ИЛИ (СчетФактура.Проведен()=0) Тогда
               Продолжить;
           КонецЕсли;
           ТаблицаДокумента.НоваяСтрока();
           ТаблицаДокумента.ДокументОснование = СчетФактура.ТекущийДокумент();

           ВходящиеДанные.Установить("ДокументыОснования",ТаблицаДокумента);
                   ВходящиеДанные.Установить("Дата",СчетФактура.ДатаДок);
               ВходящиеДанные.Установить("Номер",СчетФактура.НомерДок);
                ВходящиеДанные.Установить("Организация",СчетФактура.Фирма);
                ВходящиеДанные.Установить("ВалютаДокумента",СчетФактура.Валюта);
                ВходящиеДанные.Установить("Контрагент",СчетФактура.Клиент);
                ВходящиеДанные.Установить("ДокументОснование",Счетфактура.ТекущийДокумент());

                 ВыгрузитьПоПравилу(,,ВходящиеДанные , , "СчетФактураВыданный");    

           Прервать;
       КонецЦикла;
   КонецЕсли;
28 breakthrough
 
23.10.12
07:53
Так вроде бы все ок, но документ-основание все равно не заполняется.
29 breakthrough
 
23.10.12
07:54
(26) У счетов-фактур документы основания - это табличная часть. Плюс еще реквизит есть.
30 Рэйв
 
23.10.12
08:06
(29)Да ради бога.  Для всех реквизитов поставишь ПКО накладных и все будет в аэуре
31 breakthrough
 
23.10.12
12:02
(30) Спасибо. Помогло)
32 breakthrough
 
23.10.12
12:03
(30) Но блин почему-то создает теперь новые РН. С другим номером, как у СФ. Не пойму почему!
33 breakthrough
 
23.10.12
12:04
Получается, что по ПВД для РН идет выгрузка сначала РН, затем "после выгрузки" подцепляется  ВыгрузитьПоПравилу для СФ и выгружаются они, а в СФ снова идет загрузка по правилу ПКО РН для реквизита "документ-основание". Зацикливание.
34 breakthrough
 
23.10.12
12:12
(30) Видимо потому, что в ПКО для РН стоит вот такой способ нумерации:
НовНомер= Источник.НомерДок;
НовНомер = СтрЗаменить(НовНомер,"РНр-","РНС");
Значение = ПривестиНомерКДлине(НовНомер,11);  
...и в качестве источника к нему приходит номер счет-фактуры.
Как этого избежать?
35 breakthrough
 
23.10.12
12:57
(30) Народ, ну помогите! теперь создаются 2 расходных накладных. Видимо из-за зацикливания. Что делать?
36 breakthrough
 
23.10.12
13:29
Проблему решил!)) Кому интересно спрашивайте - расскажу как. Всем спасибо за участие.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn