Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 17:33

Перезапись движений документа другим документом

Автор jonik_joker, 12 мар 2016, 14:12

0 Пользователей и 1 гость просматривают эту тему.

vitasw


jonik_joker

Да. Уже сам проверил - регистратор изменить нельзя.

LexaK

э-э-э, народ может я чего не понял, что вы подразумеваете под понятием
ЦитироватьРегистратор изменить нельзя!

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

вот такой код, по смене регистратора у меня отлично отрабатывает!
получается универсальный код для любого регистра движения.

    //Изменение регистратора

    //получаем ссылку нового регистратора
    лкОперация = Документы.ОперацияБух.НайтиПоНомеру("ЦТ00-000052",ТекущаяДата());
    //сообщить(лкОперация);

    //получаем ссылку старого регистратора
    лкПоступление = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру("ЦТ00-00000000500",ТекущаяДата());
    //сообщить(лкПоступление);

    лкРег = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    лкРег.Отбор.Регистратор.Значение = лкПоступление;
    лкРег.Прочитать();
    лкТЗ = лкРег.Выгрузить();
   
    //меняем регистратор
    Для каждого лкСтр Из лкТЗ Цикл
        лкСтр.Регистратор = лкОперация;
    КонецЦикла;

    //чистим проводки у старого регистратора
    лкРег.Очистить();
    лкРег.Записать();

    //записываем проводки с новым регистратором
    лкРег.Загрузить(лкТЗ);
    лкРег.Отбор.Регистратор.Значение = лкОперация;
    лкРег.Записать();



отрываю документ операция и вижу там проводки
если помогло нажмите: Спасибо!

vitasw

Цитата: LexaK от 15 мар 2016, 10:09э-э-э, народ может я чего не понял, что вы подразумеваете под понятием
Цитировать

    Регистратор изменить нельзя!


То что вы привели в коде называется копирование движений.
jonik_joker, же предложил тупо заменить регистратор в том смысле, что:
лкРег = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    лкРег.Отбор.Регистратор.Значение = лкПоступление;
    лкРег.Прочитать();
Для Каждого ТекДвижение Из лкРег Цикл
    ТекДвижение.Регистратор=НоваыйРегистратор;!!!
КонецЦикла

Естественно платформа не потерпит такого издевательства.

jonik_joker

Цитата: LexaK от 15 мар 2016, 10:09
э-э-э, народ может я чего не понял, что вы подразумеваете под понятием
ЦитироватьРегистратор изменить нельзя!

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

вот такой код, по смене регистратора у меня отлично отрабатывает!
получается универсальный код для любого регистра движения.

    //Изменение регистратора

    //получаем ссылку нового регистратора
    лкОперация = Документы.ОперацияБух.НайтиПоНомеру("ЦТ00-000052",ТекущаяДата());
    //сообщить(лкОперация);

    //получаем ссылку старого регистратора
    лкПоступление = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру("ЦТ00-00000000500",ТекущаяДата());
    //сообщить(лкПоступление);

    лкРег = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    лкРег.Отбор.Регистратор.Значение = лкПоступление;
    лкРег.Прочитать();
    лкТЗ = лкРег.Выгрузить();
   
    //меняем регистратор
    Для каждого лкСтр Из лкТЗ Цикл
        лкСтр.Регистратор = лкОперация;
    КонецЦикла;

    //чистим проводки у старого регистратора
    лкРег.Очистить();
    лкРег.Записать();

    //записываем проводки с новым регистратором
    лкРег.Загрузить(лкТЗ);
    лкРег.Отбор.Регистратор.Значение = лкОперация;
    лкРег.Записать();



отрываю документ операция и вижу там проводки


Огромное Спасибо! LexaK, красавчик, все работает)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск