Имя: Пароль:
1C
1С v8
Конвертация данных 2.1. СубконтоДТ. Заменить субконто при выгрузке
0 voronin_anton
 
12.05.15
14:25
Добрый день.
Выгружаю КорретировкуЗаписейРегистров. В случае если значение субконто документ прошлого года, хочу его меня на документ "ДокументРасчетовСКонтрагентом".

Пишу вот такую штуку в ПКС ПередВыгрузкой:


СтруктураСубконтоДт = Новый Соответствие;

Для Каждого Субконто из ОбъектКоллекции.СубконтоДт Цикл
    Если ТипЗнч(Субконто.Значение) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
    Тогда
        Если Субконто.Значение.Дата <= Параметры.ДатаПереносаОстатков Тогда
    
            ДокументПриемник = Неопределено;
    
            ДокументИсточник = Субконто.Значение;
    
            Выполнить(Алгоритмы.СформироватьДокументРасчетовСКонтрагентом);       

            СтруктураСубконтоДт.Вставить(Субконто.Ключ,ДокументПриемник);
        Иначе
            СтруктураСубконтоДт.Вставить(Субконто.Ключ,Субконто.Значение);
        КонецЕсли;
    Иначе
        СтруктураСубконтоДт.Вставить(Субконто.Ключ,Субконто.Значение);
    КонецЕсли;
КонецЦикла;

Значение = СтруктураСубконтоДт;

В Алгоритмы.СформироватьДокументРасчетовСКонтрагентом просто создается соответствие. Как сообщить обмену, что значение конкретного субконто надо конвертировать по определенному правилу
?
1 Azverin
 
12.05.15
14:43
Если правильно понял тебя, то код замены и выбор правила нужно писать в ПВД_КоррестировкаЗаписейРегистра_ПослеВыгрузкиОбъекта:

Если Субконто.Значение.Дата <= Параметры.ДатаПереносаОстатков Тогда
    ВыгрузитьПоПравилу(Субконто, , , , "ДокументРасчетовСКонтрагентом");
КонецЕсли;
2 Azverin
 
12.05.15
14:46
(1) не, ПослеВыгрузкиОбъекта здесь не подойдёт(
3 voronin_anton
 
12.05.15
14:48
(2) ага, не подойдет. Мне надо чтобы он вместо конвертации документа по правилу "РеализацияТоваровУслуг", конвертировал соответствие по правилу "ДокументРасчетовСКонтрагентом"
4 Azverin
 
12.05.15
15:01
(3) посмотри типовые или поищи в инете КД+Субконто+ВыгрузитьПоПравилу
5 voronin_anton
 
12.05.15
15:56
(4) я уже обыскался, третье сутки ищу
6 Гёдза
 
12.05.15
16:07
там же
ИмяПКО = "";
7 PCcomCat
 
12.05.15
16:36
Может я делаю через "не как у людей", но всё же:

1. Создаю ПКо, где Источник не указан, приемник - ДокументРасчетовСКонтрагентами.
2. У этого ПКО создаю ПКС Комментарий, Дата, Номер, ПометкаУдаления без источника, а при выгрузке ПКС прописываю, например, для Номер: Значение = ВходящиеДанные.Номер;
3. У Правила конвертации в "Перед конвертацией объекта" пишу:
        Отказ = истина;

        СтруктураОбъекта.Вставить("Дата",Источник.Дата);
    СтруктураОбъекта.Вставить("Номер",НомерДок); // тут мой собранный номер
    СтруктураОбъекта.Вставить("ДатаВходящегоДокумента",Источник.Дата);
    СтруктураОбъекта.Вставить("НомерВходящегоДокумента",Источник.Номер);
    СтруктураОбъекта.Вставить("Комментарий",СокрЛП(Источник.Комментарий) + " // " + СокрЛП(Источник.Ссылка));
    
    ВходящиеДанные = СтруктураОбъекта;
    
        ИмяПКО = "ДокументРасчетовСКонтрагентом_ЛюбойДокумент";
    ПКО = НайтиПравило(Источник, "ДокументРасчетовСКонтрагентом_ЛюбойДокумент");

В общем, как-то так.
8 voronin_anton
 
12.05.15
16:53
(7) Ты проблему не понял.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.