Кто в КД волокёт ?

  1. 7 г. назад

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

    	Выборка = Справочники.ЕдиницыИзмерения.Выбрать(,Источник);
    	Пока Выборка.Следующий() Цикл
    		ВыгрузитьПоПравилу(Выборка.Ссылка,,,,"ЕдиницыИзмерения");
    	КонецЦикла;

    То сами единицы измерения выгрузятся корректно, а вот в Номенклатуре не проставляются ЕдиницаДляОтчетов.
    В типовых правилах, типа УТ-УТ ничего интересного, там видать поиск по уиду и всё находится. Тут болт.
    Кто сталкивался ?
    Могу кинуть правила и демо-базы источника и приёмника.

    ЗЫ: если повторно грузить, то всё заполняется как надо, но, это же моветон.

    Ответы: (4) (31)
  2. Пользователь создаёт номенклатуру, записывает её, затем создаёт единицу измерения, выбирает её в качестве единицы для отчётов и повторно записывает номенклатуру. 2 записи номенклатуры, и это не моветон.
    Сделай 2 ПВД. 1-й на просто запись номенлатуры по полям поиска. 2-й - полный. Укажи порядок.

  3. Может в обработчике после загрузки врукопашную искать и проставлять единицу? Только приоритет у единиц выше поставить, чтобы к тому моменту они были

    Ответы: (3)
  4. (2) Реквизит Владелец - номенклатура.

  5. (0) Попробуй поиграть с порядком обработки правил. Поставь обработку номенклатуры раньше единиц измерения.

    Ответы: (5) (8)
  6. 11.04.2017 13:29:55 отредактировано Ride

    (4) Реквизит Единица для отчетов - справочник Единицы измерения
    Смысла не будет
    Если бы подчиненный справочник не был реквизитом владельца, можно было бы играться с установкой ссылки нового. Но это тоже гемор
    Так что в любом случае будет 2 записи номенклатуры, и не в одном правиле
    Куда вставить первую запись - считаю, в отдельное ПВД. Потому что в ПКО только одно событие ПослеЗагрузки, где объект можно записать
    upd: Неправильно выразился
    Сделать 2 ПКО. Первый ПКО содержит поля поиска и всё. В ПВД 2 раза выгрузить по этим ПКО

    Ответы: (6) (7) (10)
  7. (5) Идея 2 раза выгружать одно ПВД мне не нравится. Экономнее передать поля поиска единицы для отчетов параметрами в ПВД Номенклатура. В обработчике ПослеЗагрузки обработать параметры, найти по ним единицу и Объект.ЕдиницаДляОтчетов=НайденнаяЕдиница;

    Ответы: (9) (11)
  8. (5) 2 раза выгрузить чего ? Номенклатуру ?
    Дык. в общем случае, всё по ссылкам будет грузится, с таб. частей документов

    Ответы: (10)
  9. (4) пробовал, бесполезно.
    Почитал на мисте, че-то все советы не помогают.
    Ща, допилю демки и правила, кину на посмотреть

    Ответы: (9)
  10. (8) Нету под рукой своей КД посмотреть. Попробуй сделать как в (6)

  11. Ёпрст (5) 2 раза выгрузить чего ? Номенклатуру ?
    Дык. в общем случае, всё по ссылкам будет грузится, с таб. частей документов

    Чо там грузицо бут? Делаешь одно ПКО с тремя реквизитами - наименование, родитель (тот же ПКО) и ещё чё там у тебя.. Считай, победил. Порядок же указываешь

  12. ТеньД Экономнее передать поля поиска единицы для отчетов параметрами в ПВД Номенклатура.

    Может, я чёто не так понимаю. Одно из полей поиска ведь владелец. Чтобы записать единицу измерения, нужно иметь записанную номенклатуру. А если ограничиться одной записью номенклатуры, то как записать единицу измерения для отчётов?

    Ответы: (13) (16)
  13. 11.04.2017 13:45:28 отредактировано Ride

    Если делать всё в рамках одного правила, то..
    В параметры ПКО попали поля поиска единицы для отчётов
    Записываем объект Объект.Записать() ПослеЗагрузки
    Затем уже ищем / создаём единицу измерения (произвольным алгоритмом).. Но потом опять запись будет

    Ответы: (14)
  14. (11) Я не знаю что там сейчас изменилось, даже 1С нет под рукой ... но раньше надо было сначала записать номенклатуру, да.

  15. +(12) Ну или как-то извратиться через установку ссылки нового. Но профит сомнительный.

  16. Ща погодите, выложу демку с правилами.

  17. (11) В обработчике ПослеЗагрузки номенклатуры у тебя владелец заведомо известен. В этот момент номенклатура уже записана в базу. Осталось найти по полям поиска в параметрах единицу, заполнить реквизит номенклатуры и перезаписать ее снова, вручную в коде обработчика или автоматически. Можно для оптимизации предварительно проверить заполнение поля ЕдиницаДляОтчетов, чтобы лишний раз в базу не писать.

    Ответы: (17) (18)
  18. (16) в ПослеЗагрузки объекта же еще нет в базе, если он новый.

    Ответы: (19)
  19. (16) Ну это-то понятно. Но, имхо, проще отдельное ПКО раз всё равно 2 записи будут (для пустой номенклатуры). В этом ПКО установить флажок создания только новых.
    Лан, проблемы в принципе нет. Решение за ТС.

  20. (17) Объект.Записать() если ссылка пустая

    Ответы: (21)
  21. Погодите, ща допишу демку.

  22. (19) мне это ничего не даст

  23. напишите обработку, которую запустите после загрузки она пробежится и единицы измерения пропишет.

    Ответы: (25)
  24. Чувак вбросил что-то похожее
    http://www.forum.mista.ru/topic.php?id=795056

  25. https://cloud.mail.ru/public/M69U/BkPD3QU2d
    Вот.
    2 базы и правила для КД

    Ответы: (32) (34)
  26. Hans напишите обработку, которую запустите после загрузки она пробежится и единицы измерения пропишет.

    Будет постоянный обмен, не разовый.
    Для разового, я б вообще на кд забил :)

  27. И ?.. Кто может посмотреть ?
    Че-то стомился бороться с кд

    Ответы: (28)
  28. 11.04.2017 16:58:32 отредактировано Ride

    ПравилаОбменаДанными Испр.zip

    Так, ради интереса поправил малёха. Не проверял.

    Ответы: (29) (30)
  29. (26) Погодишь до вечера? Дойду до своего компа и гляну.

    Ответы: (29)
  30. (27) посмотрю щас
    (28) конечно

  31. (27) идея понятна, тока пока не работает :(

    Ответы: (35)
  32. (0) не понял, в чём проблема, просто нужно указать ПКО для реквизита ЕдиницаДляОтчетов, должно всё работать

    на худой конец, у тебя не уникальная задача, КД переносит подчинённые справочники без проблем - единицы, договоры, и т.п.

    Ответы: (32)
  33. 11.04.2017 17:29:25 отредактировано Ёпрст

    (31) дык, всё в (24) . Попробуй.
    :)

    ЗЫ: проблема не в подчиненных, проблема в поиске по реквизитам, а не по гуиду.

    Ответы: (33)
  34. Ёпрст проблема не в подчиненных, проблема в поиске по реквизитам

    нет такой проблемы, сам писал с поиском по реквизитам, в т.ч. по владельцу - работает нормально

    Ответы: (34)
  35. (33) Ну, если тебе не лень, то 2 конфы и правила в (24).
    Нужно, чтобы у Номенклатуры переносились все подчиненные ЕдиницыИзмерения и реквизиты ОсновныхЕдиниц.

    Ответы: (39)
  36. Ёпрст идея понятна, тока пока не работает :(

    ПравилаОбменаДанными Испр.zip

    Ответы: (36) (44)
  37. 11.04.2017 18:06:27 отредактировано Ride

    + (35) в ПКО Номенклатура тоже надо поставить флажок ПолучитьИзВходящихДанных для реквизита-параметра. Как в ПКО НоменклатураПерваяВыгрузка. А то лишняя работа для сервера

  38. Вау, сам ВР прорезался. Пес с КД, нельзя ли немного навести порядок на форуме? Некоторые тварищи распоясались не по-детски. ИМХО когда-то фиксина навечно забанили за меньшие гадости чем себе позволяет Шаман.

    Ответы: (38) (40)
  39. ТеньД фиксина навечно забанили за меньшие гадости

    Фикси к СЮ приставал с неприличными предложениями.

    Ответы: (42)
  40. (34) если делаю поля поиска ЭтоГруппа и Код - все единицы переносятся нормально.
    что ещё раз доказывает, что поиск по уидам тут ни при чём

  41. (37)

  42. поиск кривой в правилах

    Ответы: (45)
  43. (38) После Теслы неприличными приставаниями никого не удивишь. Неприятно немного, но не более. Желать смерти и увечий форумчанам и их родне грех намного худший.

  44. Откопал у себя в закромах такой код в ПослеЗагрузки

    Для Каждого СтрТовар Из Объект.Товары Цикл
    	СтрТовар.ЕдиницаИзмерения=Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(ПараметрыОбъекта["ТоварыТабличнаяЧасть"][СтрТовар.НомерСтроки-1].ЕдиницаИзмеренияНаименование,,,СтрТовар.Номенклатура);
    КонецЦикла;
    Объект.ОбменДанными.Загрузка=Истина;
    Объект.Записать();
    Ответы: (44)
  45. Ride ПравилаОбменаДанными Испр.zip

    работает, но я переписал, как у тебя, выгружается всегда весь справочник, что не есть гуд.
    А так, спсб.
    ПравилаОбменаДанными.zip

    (43) Не очень кошерно по наименованию что-то искать.

    +Такой шляпы, в конфе еще хватает: основнойДоговор, ОсновнойСчет и т.д..

  46. andrewks поиск кривой в правилах

    Ну блин, покажи, как надо :)

  47. Пилять, всё в топку, andrewks оказался прав, всё работает и без танцев с бубном. И второе ПВД не нужно.
    Просто я сам слошил - в ПКО Номенклатура в ПослеЗагрузки устанавливал ссылкуНового объекту, если он не найден, чтоб её в регистр сведений соответсвияУИД запихать. А надо было всего лишь там Записать() сделать и привет.

или зарегистрируйтесь чтобы ответить!