Имя: Пароль:
1C
1С v8
Выгрузка документов поступления из УТ11 в БП 2.0
0 _stay true_
 
27.01.14
11:06
Добрый день, товарищи! Проблема такая: нужно, чтобы при переносе из УТ11 документов поступления, в этом документе в БП счет-фактура перегружалась "в галочку", т.е. проограммно установить признаки "ПредъявленСчетФактура" и "Отразить вычет НДС в Книге покупок" в ИСТИНУ и программно заполнить дату и номер входящего счета-фактуры. Идея следующая: в ПКО документа в обработчике "ПередВыгрузкой" запросом получить дату и номер входящего счета фактуры и передать эти данные в обработчик "ПослеЗагрузки".

В правила обмена УТ-БП(выгрузил из УТ) в обработчик ПЕРЕДВЫГРУЗКОЙ ПКО ПТУ_ЗакупкаТоваровУслуг добавил такой простенький код:

Запрос2 = Новый Запрос(
"ВЫБРАТЬ
|    СчетФактураПолученныйДокументыОснования.ДокументОснование.Ссылка,
|    СчетФактураПолученныйДокументыОснования.Ссылка.Номер,
|    СчетФактураПолученныйДокументыОснования.Ссылка.ДатаСоставления
|ИЗ
|    Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученныйДокументыОснования
|ГДЕ
|    СчетФактураПолученныйДокументыОснования.ДокументОснование.Ссылка = &Ссылка");
//Такой запрос работает, проверял отдельно на внешней обработке
    Запрос2.УстановитьПараметр("Ссылка", Источник.Ссылка);
    Результат2 = Запрос2.Выполнить();

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

В обработчик этого же ПКО "ПослеЗагрузки" добавляю такой код:

Объект.ПредъявленСчетФактура = ИСТИНА;
Объект.КодВидаОперации = "01";
Объект.НомерВходящегоСчетаФактуры = Параметры.НомерСФ;
Объект.ДатаВходящегоСчетаФактуры = Параметры.ДатаСФ;
Объект.НДСПредъявленКВычету = ИСТИНА;    

        
Подгружаю правила в УТ. Выгрузка данных из УТ проходит без проблем.
Переходим в БП, выполняем обмен, вылетает вот такая ошибка:

При загрузке сообщения обмена возникли ошибки: Ошибка при загрузке данных: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3748)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО                 =  ПТУ_ЗакупкаТоваровУслуг
    ТипОбъекта             =  Поступление товаров и услуг
    Объект                 =  Поступление товаров и услуг ВМУТ-000001 от 10.01.2014 0:00:00
    Обработчик             =  ПослеЗагрузкиОбъекта
    ОписаниеОшибки         =  Поле объекта не обнаружено (НомерСФ)
    ПозицияМодуля          =  (50)
    КСообщенияОбОшибках    =  21


Как я понял, ругается на Параметры.НомерСФ и соответственно Параметры.ДатаСФ.

Подскажите, в чем может заключаться проблема и как с этим бороться?
1 vicof
 
27.01.14
11:18
А сразу на стороне источника номер и дату СФ нельзя определять и подставлять их в реквизиты преименика?
2 _stay true_
 
27.01.14
11:30
(1) Это я и пытаюсь сделать. Что посоветуете?
3 _stay true_
 
27.01.14
11:37
(1) Разве можно тупо запихнуть в реквизиты данные из выборки?
4 vicof
 
27.01.14
11:40
В свойстве ДатаСФ, сопоставленному с таким же свойством в приемнике, пишешь:
Значение = ТвояНайденнаяДата;
ТО же самое с номером
5 _stay true_
 
27.01.14
11:46
(4)Если честно, не совсем понял вас. Запрос выполнять в обработчике свойства ДатаСФ?
6 vicof
 
27.01.14
11:57
(5) Можно. Но сильно долго будет. Лучше свою выборку формировать в ПВД одним запросом, а затем из этой выборки заполнять свойства ПКО.
7 _stay true_
 
27.01.14
12:21
(6)Вариант не подошел. Правила уже допиленные - конфу обновили, изменились имена реквизитов, эти свойства просто отключены оказались. Нам доступно только программное изменение реквизитов "в лоб". Можно как-то "в лоб" это сделать"? Просто вытянуть из источника дату и номер и засунуть уже в "после загрузки" эти дату и номер в реквизиты?
8 _stay true_
 
27.01.14
13:04
Всё получилось, спасибо за подсказки. Замутил новые свойства в ПКО без указания источника, но с указанием приемника, там в обработчик "ПередВыгрузкой" впихнул свой код

Запрос2 = Новый Запрос(
"ВЫБРАТЬ
|    СчетФактураПолученныйДокументыОснования.ДокументОснование.Ссылка,
|    СчетФактураПолученныйДокументыОснования.Ссылка.Номер,
|    СчетФактураПолученныйДокументыОснования.Ссылка.ДатаСоставления
|ИЗ
|    Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученныйДокументыОснования
|ГДЕ
|    СчетФактураПолученныйДокументыОснования.ДокументОснование.Ссылка = &Ссылка");
//Такой запрос работает, проверял отдельно на внешней обработке

    Запрос2.УстановитьПараметр("Ссылка", Источник.Ссылка);
    Результат2 = Запрос2.Выполнить();

    ВыборкаДетальныеЗаписи = Результат2.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    
    Значение = ВыборкаДетальныеЗаписи.Номер;
                    
КонецЦикла;



Вроде быстро отработало. Всем огромное спасибо за помощь.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс