[РЕШЕНО] При проведении пропадают и появляются движения

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

  1. TopicStarter Overlay
    ElfDRK
    Offline

    ElfDRK

    Регистрация:
    12 дек 2014
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Добрый день, голову сломал вместе с мозгом об такой вопрос.
    нужно при записи набора записей сделать движения в другом регистре полностью аналогичным с источником, делается так: копируется любой регистр (набор регистраторов как в исходном регистре), далее создается подписка на первичный регистр "ПриЗаписи" в обработчике следующий тест:

    Код:
    НаборЗаписей = РегистрыНакопления.<КопияРегистраНакопления>.Созда тьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Источник .Отбор.Регистратор.Значение);
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    Для Каждого ЭлДвижение Из Источник Цикл
    ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), ЭлДвижение);
    КонецЦикла;
    
    при первом проведении документа все замечательно состав исходного регистра записывается, но при повторном проведении набор записей пустой, при следующем опять есть записи .... и так по кругу. Уважаемые, есть какие соображения?

    Если имеет значение: Платформа 8.3.6.2299, конфигурация 1С:ERP Управление предприятием 2.0 (2.0.7.56), копирую регистр и создаю подписку на: РегистрыНакопления.ДвижениеТоваров

    Помогите пож-та!)
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    НУ так очищать то зачем?
    читайте СП что написано про Записать у Набора записей

    РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
    Записать (Write)
    Синтаксис:

    Записать(<Замещать>)
    Параметры:

    <Замещать> (необязательный)

    Тип: Булево.
    Определяет режим замещения существующей записи в соответствии с текущими установками отбора.
    Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям
    Значение по умолчанию:
    Истина

    Описание:

    Записывает набор записей в базу данных. В зависимости от переданного параметра, может быть выполнено добавление записей или их замещение.

    Доступность:

    Сервер, толстый клиент, внешнее соединение.
    Примечание:

    Для регистров сведений, подчиненных регистратору, при вызове с параметром <Замещать> равным Ложь после записи в информационную базу набор записей очищается (удаляются записи из набора).
    Пример:

    НаборКурсов.Записать();
  3. TopicStarter Overlay
    ElfDRK
    Offline

    ElfDRK

    Регистрация:
    12 дек 2014
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Да на самом деле это не меняет ситуации, изначально было без этого.
    Последнее что пробовал это прочитать движения. В модуле обработчика если читаем движения по регистру, записанные движения есть, как только выходим из обработчика, движения исчезают.
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Вот так что дает

    Код:
    НаборЗаписей = РегистрыНакопления.<КопияРегистраНакопления>.Созда тьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Источник .Отбор.Регистратор.Значение);
    НаборЗаписей.Прочитать();
    Для Каждого ЭлДвижение Из Источник Цикл
    ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), ЭлДвижение);
    КонецЦикла;
    НаборЗаписей.Записать(Истина);
    
  5. TopicStarter Overlay
    ElfDRK
    Offline

    ElfDRK

    Регистрация:
    12 дек 2014
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Тот-же результат:

    при первом проведении:
    [​IMG]

    при повторном проведении

    [​IMG]

    ещё раз проводим документ, движения снова появляются .... ((
    --- Объединение сообщений, 15 сен 2015 ---
    Движения есть, супер, но то пропадают, то появляются при повторных проведениях документа ...
    --- Объединение сообщений, 15 сен 2015 ---
    А, не сейчас лучше, сейчас хоть движения просматриваются при выходе из обработчика, попробую по отладчику посмотреть в какой момент пропадают.
    Последнее редактирование: 15 сен 2015
  6. TopicStarter Overlay
    ElfDRK
    Offline

    ElfDRK

    Регистрация:
    12 дек 2014
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    При повторном проведении появляется дополнительная строчка в наборе записей, при выходе из обработчика движения пропадают.

    [​IMG]
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    У меня есть предположение, почему.
    А если так

    Код:
    НаборЗаписей = РегистрыНакопления.<КопияРегистраНакопления>.Созда тьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Источник .Отбор.Регистратор.Значение);
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    Для Каждого ЭлДвижение Из Источник Цикл
    ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), ЭлДвижение);
    КонецЦикла;
    НаборЗаписей.Записать(Ложь);
  8. TopicStarter Overlay
    ElfDRK
    Offline

    ElfDRK

    Регистрация:
    12 дек 2014
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1

    Извиняюсь, а чем это отличается от первоначального варианта?
    --- Объединение сообщений, 15 сен 2015 ---
    А, я понял строка
    НаборЗаписей.Записать(Ложь);
    была, просто я её в коде не указал, я пробовал так, все равно отрабатывает аналогично. Мне кажется это особенность платформы 3.6
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Отличается тем что во втором варианте очищаем,
    Очистить(), а затем добавляем НаборЗаписей.Записать(Ложь);
    Просто выше на картинке у вас 2 записи т.к стара и добавлена новая, но при НаборЗаписей.Записать(Истина); старая должна заместиться, но по ключам эти запииси одинаковые и они обе замещаются
  10. TopicStarter Overlay
    ElfDRK
    Offline

    ElfDRK

    Регистрация:
    12 дек 2014
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Может cfник куда выгрузить ....
    --- Объединение сообщений, 15 сен 2015 ---
    Использовал обычную демку на erp ...
  11. TopicStarter Overlay
    ElfDRK
    Offline

    ElfDRK

    Регистрация:
    12 дек 2014
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Все, всем спасибо это поведение было вызвано файловой инфн. базой, при прогоне на клиент-серверной все работает корректно ...

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