|
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
|
Проблему решил!)) Кому интересно спрашивайте - расскажу как. Всем спасибо за участие.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |