8.х Программная регистрация изменений в плане обмена

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Svb, 20 сен 2016.

  1. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Добрый день.
    Платформа 8.2
    Есть подписка на событие "ПередЗаписью" регистра сведений. Одно из измерений этого регистра имеет тип Спр.Номенклатура.
    По этому событию для некоторого узла обмена программно регистрируется изменение справочника Номенклатура.
    Теперь, как многие знают уже, я пишу в этот регистр наборами записей. В этот набор попадают как измененные записи, так и не измененные. Дальше, мне надо регистрировать изменения номенклатуры, присутствующую только в измененных записях регистра.
    Как мне в обработчике события "ПередЗаписью", проанализировать каждую запись и понять была ли она изменена? Как вообще правильно поступать в такой ситуации?
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.577
    Симпатии:
    717
    Баллы:
    204
    Написать свое правило регистрации объектов, авторегистрацию выключить.
    Измененные объекты ты должен определить и зарегистрировать их для каждого узла плана обмена.
  3. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Авторегистрация и так в данном случае не работает, т.к. изменение происходит записи регистр сведений, а изменение регистрируется справочника Номенклатура.
    Я и пытаюсь сделать свой алгоритм регистрации, не шибко порушив, что реализовано уже.
    Я для эксперимента интерактивно меняю значение меняю ресурса в записи в р.с. руками, у меня два раза вызывается событие перед записью. Один раз для изменяемой записи, второй раз для новой записи. Я так понимаю это медленный способ.
    Лучше запросом выделить изменяемые записи и уже прогоняя результат регистрировать изменения.
    Но не понимаю как отключить подписку на событие временно.
    --- Объединение сообщений, 20 сен 2016 ---
    Использовать ОбменДанными.Загрузка?
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.577
    Симпатии:
    717
    Баллы:
    204
    Я не совсем понимаю, почему регистрируется именно Номенклатура, как изменненный объект, а не НаборЗаписей РС, который хранит измененные данные по номенклатуре.

    По всей видимости, подписку на событие придется отключить совсем, регистрировать изменения нужно в том же месте, где происходит запись в РС.
  5. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Да, не совсем логично. Но реализовано именно так, предыдущими программистами.
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.577
    Симпатии:
    717
    Баллы:
    204
    Так ты поменял логику работы кардинально, меняй уже до конца.
  7. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Это только вершина айсберга. ))
  8. TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Вова чудес не бывает. Если ты что то перезаписал то ты это зарегистрировал...
    Вариант у тебя два правильный это сделать нормально, не правильный это пробовать какими то способами определять что у тебя номенклатура не изменилась и снимать её с регистрации.

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