Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

При проведении документа удаляет записи в регистре накопления

При проведении документа удаляет записи в регистре накопления
Я
   ze-dev
 
18.12.20 - 21:23
Господа специалисты, добрый вечер!
Подскажите, пожалуйста, такая ситуация:

Есть документ "ЭтотСамыйДокумент", который ИЗНАЧАЛЬНО (по задумке нас, разработчиков) не проводит и не проводил напрямую от СЕБЯ НИКАКИЕ движения в регистр накопления "НаименованиеМоегоРегистра".

Этот регистр накопления прописан в этом ЭтомСамомДокументе, как регистр его движения.
Реальные же движения в этом регистре делаются обработкой конфигурации "НеИмеетЗначения" с регистратором "ЭтотСамыйДокумент.Ссылка".

Поэтому в функции "ОбработкаПроведения" "ЭтогоСамогоДокумента" прописан такой код:
1) ДвижениеВремени = Движения.НаименованиеМоегоРегистра;
2) ДвижениеВремени.Отбор.Регистратор.Установить(ТекущегоДокументаСсылка);  //  это ссылка "ЭтотСамыйДокумент.Ссылка", там в коде просто ЭтотОбъект.Ссылка (или просто Ссылка ставил, это одно  и то же)
3) ДвижениеВремени.Прочитать();
4) ДвижениеВремени.Записать(Истина);

Теперь далее:
∟ строчка 3: 3) ДвижениеВремени.Прочитать();
    ∟ читает и собирает все движения по этому регистратору "ЭтотСамыйДокумент.Ссылка" из регистра накопления "НаименованиеМоегоРегистра"
      Отладчиком смотрел - были записи из регистра (их может быть больше одной, и по 4 есть, это в порядке вещей)
∟ строчка 4: 4) ДвижениеВремени.Записать(Истина); [Истина - запись с замещением]
    ∟ стирает эти записи в регистре (по этому регистратору "ТекущегоДокументаСсылка" их больше нет. )

Парни, как так?!

(Сегодня около 16-30 по МСК у нас было обновление платформы. А вдруг это ..? Да не, бред какой-то ..)
   ze-dev
 
1 - 18.12.20 - 21:28
Хочу добавить сразу (пропустил изначально этот момент):

∟ Конфигурация самопереписанная, снятая с поддержки нами уже полдюжины лет ).
∟ Обычные формы, 8.3.
∟ Платформа обновилась 18.12.20 примерно в 16-30 по МСК.
∟ ну и началось..
   vde69
 
2 - 18.12.20 - 22:14
у меня вообще нет модуля проведения ни в одном документе. Все идет через подписки "при записи", так как по некоторым регистрам нужно движение не проведенных документов
   vde69
 
3 - 18.12.20 - 22:17
вообще как вариант - был не установлен режим совместимости и после обновления платформы поменялось что-то...

Вы хоть перед сменой платформы тестируете хоть чего?
   ze-dev
 
4 - 18.12.20 - 22:39
(3) Конечно этот механизм тестировался и работал с июля 19г.

Где, у чего, и для чего не был установлен механизм совместимости?
Чего с чем?
   Ненавижу 1С
 
5 - 18.12.20 - 22:46
Это обновление платформы. Поменялось поведение
   Cyberhawk
 
6 - 18.12.20 - 22:46
Покажи свойства документа в метаданных
   Ненавижу 1С
 
7 - 18.12.20 - 22:48
Какая платформа стояла? Какая стала?
Меняли в конфигурации режим совместимости?
   ze-dev
 
8 - 18.12.20 - 22:49
Там было безусловное выполнение этого кода с июля 19г.

Возможно предположить, что он не работал.

Но - я тогда проверял - все записи регистра (по этому док-ту) оставались после проведения док-та.
(Еще раз - там безусловное перезапись, т.е. не было никаких Если перед кодом)


Т.Е. в этом регистре могли быть записи по этому регистратору "Этот.Док.Ссылка", а могли и не быть вовсе.
Я сам тестировал на док-ах, по которым были движения.
Все работало. До сегодняшнего вечера.

Чтобы кто-то из коллег случайно удалил кусок кода - так последнее изменение док-та в начале декабря.
   Ненавижу 1С
 
9 - 18.12.20 - 22:49
ДвижениеВремени = Движения.НаименованиеМоегоРегистра;
ДвижениеВремени.Отбор.Регистратор.Установить(ТекущегоДокументаСсылка); 

Так делать полный бред
   Ненавижу 1С
 
10 - 18.12.20 - 22:50
(8) хватит истерить и начинай отвечать на вопросы
   ze-dev
 
11 - 18.12.20 - 22:51
(7) Еще не знаю, какая стояла, и какая стала.
Про режим совместимости тоже еще не в курсе.

Смогу выяснить наверно только утром в сб., 19.12
   Ненавижу 1С
 
12 - 18.12.20 - 22:52
(11) вы так всегда обновляете? Не зная что на что?
   ze-dev
 
13 - 18.12.20 - 22:53
(9) Почему? Что не так? Только пж без эмоций, я сам взведен сегодня.
Что  можно исправить ?
   Ненавижу 1С
 
14 - 18.12.20 - 22:54
(13) потому что это и так набор записей с этим отбором
   ze-dev
 
15 - 18.12.20 - 22:58
(12) Не могу точно сказать, как именно обновляем, это не я ).  (считается, что мой уровень еще недостаточен, чтобы я в этом мог участвовать)
Обычно мне говорят рук-ль отдела и др. товарищи, что , вот пришло обновление платформы, и стало.

Кстати , с обновлением приехала нединамика в картинках, и всех пользователей пришлось завершить.
   Ненавижу 1С
 
16 - 18.12.20 - 23:00
Уберите вообще обработку проведения. Или закомментируйте ее

Поставьте у документа в свойствах удаление движений - не удалять автоматически
   ze-dev
 
17 - 18.12.20 - 23:01
(14) Ну правльно же:
      ∟ мы отобрали с регистратором, и они есть в  ДвижениеВремени.Прочитать(); (говорю ж , отладчиком прошел)
      ∟ теперь записываем обратно ДвижениеВремени.Записать(ИСТИНА) - ВСё! нет их больше в регистре. Ну как так
   Ненавижу 1С
 
18 - 18.12.20 - 23:03
Или даже: Удалять автоматически при отмене проведения
   ze-dev
 
19 - 18.12.20 - 23:06
(16) [удаление движений - не удалять автоматически]: Нельзя -  в нем с десяток движений в другие регистры, которые делаются непосредственно именно этим док-том, и их механизм прописан вручную, он нестандартен. В отмене проведения - также все прописано вручную.[Поставьте у документа в свойствах удаление движений - не удалять автоматически] - этого точно нельзя сделать
   Ненавижу 1С
 
20 - 18.12.20 - 23:06
Какой режим сейчас стоит?
   ze-dev
 
21 - 18.12.20 - 23:08
(20) Не знаю честно. Где посмотреть?
   Ненавижу 1С
 
22 - 18.12.20 - 23:12
   ze-dev
 
23 - 18.12.20 - 23:15
(16) Единственно близко подходящим я вижу пока только это: [Поставьте у документа в свойствах удаление движений - не удалять автоматически]. Это из наиболее очевидного. Но тестить буду уже завтра. Спасибо за участие! Заходи завтра )).
   ze-dev
 
24 - 18.12.20 - 23:21
(22) Да, этот режим удаления движений и стоит (Не удалять автоматически)

Я имел в виду [Меняли в конфигурации режим совметсимотми?] - это же должно быть что-то другое ?
   Ненавижу 1С
 
25 - 18.12.20 - 23:36
Вариант убрать прямой метод:
Набор.записать(истина);

Поставить косвенно:
Набор.записывать=истина;
   RomanYS
 
26 - 18.12.20 - 23:38
(0) посмотри значение ДвижениеВремени.Записывать
после выполнения четвертой строки.
   ze-dev
 
27 - 20.12.20 - 13:17
Парни, спасибо за участие!

Прошел отладчиком пошагово всю процедуру ОбработкаПроведения() и нашел проблему:
позже была введена функция дкОбработкаПроведения(),
которая очищала вообще все движения документа, 
а уже после нее документ снова их делал.

Это работает для тех регистров, которые двигает непосредственно сам документ.
Движения же моего регистра двигаются внешней обработкой с Регистратором "ЭтотСамыйДокумент.Ссылка".
Поэтому он благополучно их очищал, но не восстанавливал.

Решил следующим образом:
Создал 2 блока кода: 1й - бэкап записей регистра, 2й - просто переливаю бэкап в ДвижениеВремени уже после очищения движений регистров.
Все корректно работает.

    // Должен идити ДО дкОбработкаПроведения() - там ВСЕ Движения очищаются, если Не ЭтоНовый() 

    ДвижениеВремени_BACKUP  = РегистрыНакопления.НаименованиеМоегоРегистра.СоздатьНаборЗаписей();
        ДвижениеВремени_BACKUP.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка);
        ДвижениеВремени_BACKUP.Прочитать();
    
    // ГОРИЗОНТ СОБЫТИЙ для Движения - в Не ЭтоНовый() очищаются безусловно (в т.ч. мой регистр)

    Если НЕ дкОбработкаПроведения(ЭтотОбъект, Отказ, Режим) Тогда Возврат; КонецЕсли;
     
    // Должен идти ПОСЛЕ дкОбработкаПроведения()

    ДвижениеВремени = Движения.НаименованиеМоегоРегистра;
    ДвижениеВремени = ДвижениеВремени_BACKUP; 
    ДвижениеВремени.Записывать = Истина;
    ДвижениеВремени.Записать(Истина); 
    
Может быть, кому-нибудь еще пригодится решение из данной ситуации.
Всем добра!


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.