7.7 Подмена ID документа в УРИБ

Тема в разделе "Обмен данными в "1С:Предприятие 7.7"", создана пользователем adamvr, 22 мар 2010.

  1. TopicStarter Overlay
    adamvr
    Offline

    adamvr

    Регистрация:
    22 мар 2010
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Конфа на базе торговли.
    Нужно через подмену ID документа по коду ИБ из одной базы (пусть из Центральной базы) документ перемещался в Периферийную, которой соответствует подмененный ID.
    Пробовал ручками менять в 1SJourn и в DH**** - документ мигрирует, но есть великая опасность нарушения уникальности ID (Допустим в ЖОРНАЛ есть записи MCIB и MFIL, заменяем CIB на FIL и получаем две записи MFIL). Так же галюны возникают с регистрами.

    Есть какие идеи?
    Еще немного о ситуации.
    Периферийная база живёт своей жизнью, там свои остатки и они должны быть реальными. Когда-то в Центральной базе были сделаны исправления (+Док.СписаниеТМЦ или +Док.ОприходованиеТМЦ), которые не попали в периферийную. Если иным способом переносить документ (удалять в ЦБ и создавать в периферийной) - это влечет восстановление последовательностей и перепроведение огромного числа документов.

    Как получить ID документа я нашел, вот как назначить новый ID или как задать иное место создания документа?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Получить/установить ID можно использовав ЗначениеВСтрокуВнутр
  3. TopicStarter Overlay
    adamvr
    Offline

    adamvr

    Регистрация:
    22 мар 2010
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    ТекущийДокумент() = ЗначениеВСтрокуВнутр(Стр)

    где Стр - строка с исправленным ID???
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Можно при помощи ЗначениеВСтокуВнутр "разобрать" текущий элемент, подменить и заново "собрать"
  5. TopicStarter Overlay
    adamvr
    Offline

    adamvr

    Регистрация:
    22 мар 2010
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Получаем сразу в синтаксис-проверке:

    Док.ТекущийДокумент() <<?>>= ЗначениеИзСтрокиВнутр(СтрИД_);
    {(8)}: Неопознанный оператор

    Дам даже весь код

    Док.ВыбратьДокументы();
    Пока Док.ПолучитьДокумент()=1 Цикл
    СтрИД = ЗначениеВСтрокуВнутр(Док.ТекущийДокумент());
    СтрИД_ = СтрЗаменить(СтрИД,"FIL","CIB");
    Док.ТекущийДокумент() = ЗначениеИзСтрокиВнутр(СтрИД_);
    Док.Записать();
    КонецЦикла;
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    ЗначениеВСтрокуВнутр(<Объект>)
    Назначение:
    Преобразование значения объекта агрегатного типа в строковое системное представление.
    Возвращает: представление значения объекта в строковом системном виде.

    ЗначениеИзСтрокиВнутр(<СистСтрока>)
    Назначение:
    Преобразование значения объекта агрегатного типа из строкового системного представления во внутреннее.
    Возвращает: объект агрегатного типа данных.
  7. TopicStarter Overlay
    adamvr
    Offline

    adamvr

    Регистрация:
    22 мар 2010
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    возникла проблема в записи измененного документа.
    Док - объект через Создать Объект
    ДО момента присвоения Док = ЗначениеИзСтрокиВнутр(Стр) Док был спозиционирован, после - для базы документ не существует и записать она его не может. Что в целом не даёт подменить ID документа.
    К тому же возникает иная проблема дублирования ID документа в Журнале документов. В целом проблема ВЫНОСА документа из ЦИБ в Периферию остаётся не решенной.

    Какие еще будут соображения?

    P.S. прежде чем советовать с умным видом попробуйте это поделать сами.

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