8.х ОБМЕН Перенос документа Возврат Розница 1.0 - БП 1.6

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем panehon, 15 окт 2013.

  1. TopicStarter Overlay
    panehon
    Offline

    panehon

    Регистрация:
    4 окт 2013
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток, форумчане, нужна помощь.

    Стандартная обработака переноса данных не переносит себестоимость из документа "ВозвратТовараОтПокупателя", собственно для этого и создал небольшое правило обмена в КД:

    В секции запрос указал

    ВЫБРАТЬ
    Возврат.Цена
    ИЗ
    РегистрСведений.СебестоимостьНоменклатуры КАК Возврат
    ГДЕ
    Возврат.Номенклатура = &Номенклатура

    В секции при выгрузке для поля Себестоимость источника табличной части Товары указал:

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

    Текст ошибки:

    Ошибка получения значения свойства подчиненного объекта (по имени свойства приемника)
    ПКО = ВозвратТоваровОтПокупателя (Документ: Возврат товаров от покупателя)
    ПКС = 21 ( --> Себестоимость)
    Объект = Возврат товаров от покупателя РТ000000050 от 03.05.2013 9:20:12 (Возврат товаров от покупателя)
    СвойствоПриемника = Себестоимость (Число)
    ОписаниеОшибки = Поле объекта не обнаружено (Себестоимость)
    ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8211)
    КодСообщения = 17

    Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1618)}: Ошибка получения значения свойства подчиненного объекта (по имени свойства приемника)
    ПКО = ВозвратТоваровОтПокупателя (Документ: Возврат товаров от покупателя)
    ПКС = 21 ( --> Себестоимость)
    Объект = Возврат товаров от покупателя РТ000000050 от 03.05.2013 9:20:12 (Возврат товаров от покупателя)
    СвойствоПриемника = Себестоимость (Число)
    ОписаниеОшибки = Поле объекта не обнаружено (Себестоимость)
    ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8211)
    КодСообщения = 17
    Вроде простой перенос, а не пойму где ошибка.

    Пара скринов форм во вложении

    Вложения:

    • rt.JPG
      rt.JPG
      Размер файла:
      90,4 КБ
      Просмотров:
      13
    • 67u.JPG
      67u.JPG
      Размер файла:
      127,2 КБ
      Просмотров:
      13
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    вместо
    Код:
    Себестоимость = Выборка.Выгрузить;
    нужно
    Код:
    Значение = Выборка.Цена;
    ну и если возвратов много и с большим количеством позиций - то лучше кэшировать себестоимость, быстрее думать будет
  3. TopicStarter Overlay
    panehon
    Offline

    panehon

    Регистрация:
    4 окт 2013
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    код ошибки аналогичный.

    скажите, как запустить отладчик в КД?

    Указываю режим отладки обработки при выгрузке, там выбираю "подставлять код алгоритмов по месту вызова", копирую код для выгрузки во внешнюю обработку, ставлю точку останова для процедуры вызова при выгрузке добавленного кода, сохраняю, эту обработку указываю в "имя файла внешней обработки...", обновляю правила обмена, запускаю выгрузку, но точка останова не срабатывает ((
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    не совсем внимательно прочитал первый раз ошибку

    значение нужно выставлять в обработчике ПередВыгрузкой

    по отладке - загрузили правила, указали файл внешней обработки и запустили выгрузку - обновлять правила не надо
  5. TopicStarter Overlay
    panehon
    Offline

    panehon

    Регистрация:
    4 окт 2013
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Поменял на ПередВыгрузкой

    Теперь выдает ошибку на вызов запроса:


    Ошибка в обработчике события ПередВыгрузкой (свойства)
    ПКО = ВозвратТоваровОтПокупателя (Документ: Возврат товаров от покупателя)
    ПКС = 21 ( --> Себестоимость)
    Объект = Возврат товаров от покупателя РТ000000050 от 03.05.2013 9:20:12 (Возврат товаров от покупателя)
    СвойствоПриемника = Себестоимость (Число)
    Обработчик = ПередВыгрузкойСвойства
    ОписаниеОшибки = Поле объекта не обнаружено (Себестоимость)
    ПозицияМодуля = (1)
    КодСообщения = 55

    Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1618)}: Ошибка в обработчике события ПередВыгрузкой (свойства)
    ПКО = ВозвратТоваровОтПокупателя (Документ: Возврат товаров от покупателя)
    ПКС = 21 ( --> Себестоимость)
    Объект = Возврат товаров от покупателя РТ000000050 от 03.05.2013 9:20:12 (Возврат товаров от покупателя)
    СвойствоПриемника = Себестоимость (Число)
    Обработчик = ПередВыгрузкойСвойства
    ОписаниеОшибки = Поле объекта не обнаружено (Себестоимость)
    ПозицияМодуля = (1)
    КодСообщения = 55

    Скрин запроса

    Обновлял правила, потому что не делалась выгрузка без обновления (кнопка "Пересчитать правла обмена около выбора файла для обмена")

    Вложения:

    • fggh.JPG
      fggh.JPG
      Размер файла:
      77,5 КБ
      Просмотров:
      7
  6. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    а почему запрос в алгоритмах живет, а не в запросах?
  7. TopicStarter Overlay
    panehon
    Offline

    panehon

    Регистрация:
    4 окт 2013
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Поместил запрос в нужный раздел (не обратил сразу внимание)

    Теперь но не видит ссылку на справочник Номенклатура:


    Ошибка в обработчике события ПередВыгрузкой (свойства)
    ПКО = ВозвратТоваровОтПокупателя (Документ: Возврат товаров от покупателя)
    ПКС = 21 ( --> Себестоимость)
    Объект = Возврат товаров от покупателя РТ000000050 от 03.05.2013 9:20:12 (Возврат товаров от покупателя)
    СвойствоПриемника = Себестоимость (Число)
    Обработчик = ПередВыгрузкойСвойства
    ОписаниеОшибки = Поле объекта не обнаружено (Номенклатура)
    ПозицияМодуля = ВнешняяОбработка.ВнешняяОбработка10.МодульОбъекта(83)
    КодСообщения = 55

    Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1618)}: Ошибка в обработчике события ПередВыгрузкой (свойства)
    ПКО = ВозвратТоваровОтПокупателя (Документ: Возврат товаров от покупателя)
    ПКС = 21 ( --> Себестоимость)
    Объект = Возврат товаров от покупателя РТ000000050 от 03.05.2013 9:20:12 (Возврат товаров от покупателя)
    СвойствоПриемника = Себестоимость (Число)
    Обработчик = ПередВыгрузкойСвойства
    ОписаниеОшибки = Поле объекта не обнаружено (Номенклатура)
    ПозицияМодуля = ВнешняяОбработка.ВнешняяОбработка10.МодульОбъекта(83)
    КодСообщения = 55
    стр 83: Запросы.Себестоимость.УстановитьПараметр("Номенклатура", Источник.Товары.Номенклатура);
    Товары - это ТЧ

    Если определение параметра писать в ПередВыгрузкой,то у справочник и будет неопределен?

    Видно, что отладка идет по внешней обработке, однако точка останова не срабатыват. Возможно из - за того, что запушено не в режиме отладки?
  8. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    ну и не Источник.Товар.Номенклатура, а ОбъектКоллекции.Номенклатура
    текущая выгружаемая строка табличной части находится в переменной ОбъектКолллекции
  9. TopicStarter Overlay
    panehon
    Offline

    panehon

    Регистрация:
    4 окт 2013
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Исправил на ОбъектКоллекции.Номенклатура.
    Изменил название запроса на "РасчетСебестоимости", чтоб не было путаницы при отладке с названием поля
    Выполняю отладку.

    Выдает

    Ошибка получения значения свойства подчиненного объекта (по имени свойства приемника)
    ПКО = ВозвратТоваровОтПокупателя (Документ: Возврат товаров от покупателя)
    ПКС = 21 ( --> Себестоимость)
    Объект = Возврат товаров от покупателя РТ000000050 от 03.05.2013 9:20:12 (Возврат товаров от покупателя)
    СвойствоПриемника = Себестоимость (Число)
    ОписаниеОшибки = Поле объекта не обнаружено (Себестоимость)
    ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8211)
    КодСообщения = 17

    Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1618)}: Ошибка получения значения свойства подчиненного объекта (по имени свойства приемника)
    ПКО = ВозвратТоваровОтПокупателя (Документ: Возврат товаров от покупателя)
    ПКС = 21 ( --> Себестоимость)
    Объект = Возврат товаров от покупателя РТ000000050 от 03.05.2013 9:20:12 (Возврат товаров от покупателя)
    СвойствоПриемника = Себестоимость (Число)
    ОписаниеОшибки = Поле объекта не обнаружено (Себестоимость)
    ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8211)
    КодСообщения = 17

    Причем на сей раз "Поле объекта не обнаружено (Себестоимость)" это не связано с запросом, а уже связано с полем в приемнике, и ошибка уже в стандартной внешней обрабоке, т.е. созданная внешняя обработка сработала корректно.

    Что тут еще может быть? Прикрепил обновленный текст

    Вложения:

    • bn.JPG
      bn.JPG
      Размер файла:
      107 КБ
      Просмотров:
      7
    • ef.JPG
      ef.JPG
      Размер файла:
      85,2 КБ
      Просмотров:
      8
  10. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Код:
    Если Выборка.Следующий() Тогда
    Значение = Выборка.Цена
    Иначе
    Значение = 0;
    КонецЕсли;
    
  11. TopicStarter Overlay
    panehon
    Offline

    panehon

    Регистрация:
    4 окт 2013
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Огромное спасибо, нужный результат достигнут!

    Но все же как полноценно работать с отладчиком в КД или довольствоваться строчкой, в которой ошибка?
  12. TopicStarter Overlay
    panehon
    Offline

    panehon

    Регистрация:
    4 окт 2013
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Может кому пригодится последовательность действий для отладки правил обмена данными:



    1. Запускаешь конфигуратор.
    2. Запускаешь 1Спредприятия в режиме отладки.
    3. Запускаешь обработку "Универсальный обмен в формате ХМЛ".
    4. В ней указываешь режим отладки, формируешь текст модуля для отладки. Копируешь этот текст.
    5. В конфигураторе создаешь новую обработку, открываешь модуль обработки, копируешь туда текст, сформированный автоматически обработкой обмена.
    6. Сохраняешь обработку, ставишь нужные точки останова.
    7. В обработке универсальный обмен в соответствующем окошке выбираешь путь к этой обработке, которую сохранил.
    8. Запускаешь выгрузку.

    и радуешься ))

Поделиться этой страницей