|
В какой момент меняется граница последовательности, в каком событии это выловить? | ☑ | ||
---|---|---|---|---|
0
tciban
22.04.22
✎
13:47
|
Уважаемые коллеги! Последнее время занялся плотно партионным учетом, УТ 10.3 и возник такой вопрос - есть граница последовательности, когда мы перепроводим документ задним числом - граница смещается на него. Смещается даже в том случае если движения по партионному учету не изменились. Хочется этого избежать. Запомнить движения и убедиться что изменений не было несложно, но вопрос где это делать и как оставить границу нетронутой?
По какому событию или где еще отлавливать? подписка или события в наборе записей последовательности думаю не годятся - там только отказ можно сделать, а оставить ГП нетронутой не получится... |
|||
1
Naumov
22.04.22
✎
13:48
|
ну так откажись от записи данных регистра.
События системного, которое можно обработать именно по сдвигу последовательности не генерируется. |
|||
2
tciban
22.04.22
✎
13:56
|
(1) В смысле "откажись"? отказ=истина делать в событии? так у нас УТ сначала затирает движения регистра при проведении документа потом снова пишет туда новые. Отказаться на этапе записи - остаться без них. ну и у пользователя выскочит ошибка... Не, это что то не то
|
|||
3
Naumov
22.04.22
✎
13:57
|
(2) Это то, только мекханику проведения нужно менять
|
|||
4
tciban
22.04.22
✎
13:59
|
И все таки - в какой момент меняется граница? После записи в регистр? после записи документа?
|
|||
5
Naumov
22.04.22
✎
14:01
|
(4) В том виде, в каком она 10.3 сделана она меняется при записи любого изменения, которое указано в настройке последовательности.
В новых типовых 1Ссама управляет регистрацией изменений в последовательности без авторегистрации. |
|||
6
tciban
22.04.22
✎
14:24
|
Что же делать?
|
|||
7
tciban
22.04.22
✎
14:44
|
up!
|
|||
8
Лирик
22.04.22
✎
15:36
|
В типовой УТ 10.3 сдвиг последовательности партионного учета реализован конструкцией
Если РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда УправлениеЗапасамиПартионныйУчет.СдвигГраницыПоследовательностиПартионногоУчетаНазад(Дата, Ссылка, Организация); КонецЕсли; которая исполняется в процедуре проведения |
|||
9
tciban
25.04.22
✎
08:56
|
(8) Ну вообще то не совсем так, но вы навели меня на след. И нашел кажется. Модуль УправлениеЗапасамиПартионныйУчет Функция ДвижениеПартийТоваров и там в конце вызывается
СдвигатьГраницу = ОпределитьНеобходимостьСдвигаГраницы(ДокументМоментВремени,"Упр"); Если СдвигатьГраницу Тогда Последовательности.ПартионныйУчет.УстановитьГраницу(ДокументМоментВремени); КонецЕсли; значит в этом ОпределитьНеобходимостьСдвигаГраницы и надо работать :) |
|||
10
Лирик
25.04.22
✎
10:04
|
(9) Я бы сказал не "вообще то не совсем так" а "вообще то не везде так", но посыл в том, что граница двигается отдельной процедурой, а не штатной возможностью. Модуль Вы нашли, будем считать, что мой пост был полезен. :)
|
|||
11
tciban
20.07.22
✎
15:49
|
(9) Вот такой вопрос возник - Поступление товаров услуг, оно не вызывает (если не по ордеру) УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров В модуле проведения так же не нашел обращений к последовательности. Но при перепроведении поступления граница меняется, становиться на него, на поступление. Как? Где она перемещается?
|
|||
12
lodger
20.07.22
✎
17:40
|
(11) ну поставь точку остановки и смотри в Стек Вызовов.
|
|||
13
mikecool
20.07.22
✎
18:21
|
(11) Свойства документа - Последовательности - Заполнять автоматически? и входит в последовательности?
|
|||
14
Naumov
21.07.22
✎
00:04
|
(11) У тебя какая конфигуарция?
в БП 3.0 Есть общий модуль РАботаСПоследовательностями, в процедуре ЗарегистрироватьВПоследовательности можно поставить точку остановки и посмотреть когда она вызывается. А вообще поиск в конфигурации по названию последовательности отменили? |
|||
15
tciban
21.07.22
✎
07:20
|
(12) это первое, что я сделал. Еще прописал в наборе записей последовательности обработчик ПередЗаписью(). Ничего не нашел.
(13) Перемещение границы при проведении - не перемещать. (14) УТ 10.3 А поиск делал... Там вообще обращений к последовательности мало. Последовательность в конфе одна и простая. Даже без измерений. Так вот - в модуле поступления (повторюсь) нет обращений к последовательности (или я не нашел :() |
|||
16
tciban
21.07.22
✎
10:42
|
UP!
|
|||
17
Naumov
22.07.22
✎
11:27
|
(15) В УТ 10.3 последовательность сама сдвигается при изменении объектов, которые в ней указаны.
|
|||
18
Vaderonk
22.07.22
✎
12:59
|
(15) В модуле поступления ДвиженияПоРегистрам - УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров - СдвигатьГраницу = ОпределитьНеобходимостьСдвигаГраницы(ДокументМоментВремени,"Упр");
|
|||
19
tciban
22.07.22
✎
14:10
|
(17) И как с этм бороться?!
|
|||
20
tciban
22.07.22
✎
14:15
|
(18) К сожалению при проведении поступления товаров (и оприходования) УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров не вызывается (для поступления она вызывается если по ордеру поступление)
А граница сдвигается! Не пойму как и когда! Просто бывают случаи у меня в базе, когда откроют старое поступление (ну как старое - недельной давности), поменяют там галочку какую или еще что то, что на партии не влияет и нажмут Ок. И все - граница улетела на неделю назад. Все перепроводить если подойти формально... |
|||
21
Vaderonk
22.07.22
✎
15:21
|
(20) Ты пытаешься как то закопаться в задаче, тратя время - тебе нужно предотвратить установку неизмененного поступления(либо другого документа, как оприходование), Последовательности.ПартионныйУчет.УстановитьГраницу(ДокументМоментВремени) - скрытая установка происходит при движения в регистрах РегистрНакопления.ПартииТоваровНаСкладах, РегистрНакопления.ПартииТоваровПереданные, ты не найдешь код, который ее устанавливает.
Костыль: 2 подписки: 1)подписка на событие перед записью наборов записей в эти регистры, запоминание документа, который сейчас последний с помощью Последовательности.ПартионныйУчет.ПолучитьГраницу() - сохранение ее в константу(?) 2)подписка при записи - граница уже в этот момент сдвигается и установка ее обратно на константу - если документ ничего не тронул. Я бы думал о том, что нужно ограничивать изменение данных в прошлых периодах и запускать проведения по партиям ночью - сохранение проблем по ним где либо и продолжать работу дальше. |
|||
22
tciban
25.07.22
✎
08:20
|
(21) Спасибо! Сейчас буду пробовать. Скорее всего решение и место где это происходит тут, в в модуле набора записей регистра. Но как двигаться гп без кода? Ведь в конфигураторе, в типовой УТ 10.3 изначально в настройках Последовательности Партионный учет стоит Перемещение границы при проведении "Не перемещать" Как она, зараза, без кода двигается?!
|
|||
23
NorthWind
25.07.22
✎
08:44
|
(4) когда делается движение регстра, входящего в последовательность. Как я понимаю, единственный выход чтобы последовательность не сдвинулась - это не двигать регистр. Т.е. в модуле проведения запрашивать остаток, и если вы полагаете что движения делать не надо - через блок если...тогда их физически не делать. Только так.
|
|||
24
tciban
25.07.22
✎
08:53
|
(23) Ну почему - можно просто в событии набора записей ПриЗаписи вернуть ГП на место. Но лучше да, совсем не писать, чего их писать если ничего не менялось?
|
|||
25
tciban
25.07.22
✎
09:59
|
А вот такой, коллеги, возник вопрос - где бы мне сохранить структурку данных в подписке на событие документа, что бы потом ее вытащить в модуле набора записей регистра, в событии при записи?
Учитывая, что в регистре мы имеем ссылку на документ, а значит ДополнительныеСвойства документа нам не годятся, Учитываем так же, что в УТ 10.3 удаление движений регистра идет программно, потому у нас подписки модуля набора записей вызываются 2-жды. ДополнительныеСвойства регистра тоже не годятся :( ПараметрыСеанса тоже не стоит использовать - их надо аккуратно инициализировать в соответствующем месте, а хочется все проще сделать. Куда засунуть данные? Что то вроде глобальной переменной, но что бы доступна была и на сервере и на клиенте. Какое нибудь хранилище или что еще что живет в пределах сеанса в памяти? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |