Имя: Пароль:
1C
1С v8
Свободные остатки УТ 11.4.10.75
,
0 lubitelxml
 
05.08.21
12:56
Всем доброго дня. Вопрос в следующем - есть регистр накопления Свободные остатки, мне необходимо при проведении документа (любого) отслеживать - какие изменения будут записаны в регистр. Смотрю в модуле набора записей есть процедура
СформироватьТаблицуИзмененийДвижений(). Вопрос - как мне получить по каким номенклатура + характеристика + склад идет изменение?
1 Мультук
 
гуру
05.08.21
13:14
(0)

ПроведениеСерверУТ.ВыполнитьКонтрольРезультатовПроведения(...)

Объект.ДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы;

Временная таблица "ДвиженияСвободныеОстаткиИзменение"

P.S.

Ты бы лучше написал какую задачу пытаешься решить.
SQL-сервер конечной железный, но иногда его жаль.
2 lubitelxml
 
05.08.21
13:19
(1) задача такая - база сильно доработана, подбор сильно тормозит (очень много доп. данных выведено на форму), было принято решение добавить РС для данных по номенклатуре - туда писать остатки и еще с десяток ресурсов. Регламентом ночью этот РС будет пересчитан, но при проведении в течении необходимо отлавливать изменение остатков и менять в своем РС. Вот и хочу отследить по каким измерениям нужно пересчитать
3 lubitelxml
 
05.08.21
13:20
+(2) после вынесения всего этого в РС, получил ускорение в несколько раз
4 ildary
 
05.08.21
13:24
(2) Такая же идея пришла в голову фирме 1С и они переделали хранение свободных остатков в версии 11.5.7, и Вам придется переделывать свой костылик, когда придёт время обновляться на эту версию (это будет нескоро).
5 lubitelxml
 
05.08.21
13:25
Если получить вот так: Для каждого запись из ЭтотОбъект Цикл в процедуре СформироватьТаблицуИзмененийДвижений() - какие тут могут быть подводные камни? и правильно ли так изменения получать?
6 lubitelxml
 
05.08.21
13:26
(4) эх... на 11.5 не скоро будет переход, пишем свое
7 DrShad
 
05.08.21
13:30
(5) а если будет записан пустой набор? т.е. отмена проведения
8 lubitelxml
 
05.08.21
13:33
(7) ну вот поэтому и создал тему. Подскажите - как правильно сделать
9 lodger
 
05.08.21
13:36
(2) почему нельзя остатки брать из своего РС и подкидывать ему обороты из РН за последние нерассчитанные часы?
10 lubitelxml
 
05.08.21
13:38
(9) потому что в базе 150 человек активно колотят документы, надо сразу дублировать запись из РН в свой РС, иначе данные могут быть неактуальные
11 DrShad
 
05.08.21
13:42
(10) был у меня клиент 3 менеджера и два кладовщика, но подбор тормозил жутко - пришлось именно его оптимизировать. разным менеджерам нужная разная инфа, а не все что есть
12 DrShad
 
05.08.21
13:44
кстати очень помогло использование общих модулей с повторным использованием, зуб даю что вы при своих поделках этим не заморачивались )))
13 lubitelxml
 
05.08.21
13:53
(12) не очень вижу что там можно закешировать, данные меняются
14 lubitelxml
 
05.08.21
14:29
ап. Как правильно такое организовать? уверен что делалось уже кем то такое и не раз. УТ 11.5 конечно вариант посмотреть, но может кто подскажет что-то еще?
15 lubitelxml
 
05.08.21
16:29
Неужели никто ничего дельного не посоветует?
16 Kassern
 
05.08.21
16:35
(2) план обмена используйте, через него регистрируйте изменения документов в течение дня. Далее регламентным заданием пробегайте по изменениям и по ним уже обновляйте ваш РС. Что считать изменением, это уже вам решать, можете свою функцию проверки создать, если она не сильно долгая по выполнению. А по результату уже записывать изменение в узел. Можете все записывать в узел без проверки, а далее по измененным данным (что за записали) делаете запрос к вашему РС, сравниваете 2 таблицы, если значения отличаются, то для тех строк записываете новые значения.
17 Мультук
 
гуру
05.08.21
16:42
Одно не пойму.

РегистрНакопления.СвободныеОстатки.Остатки () -- это агрегат (итоги).
Данный регистр пересчитывается (блокировки, оптимизация, бла-бла-бла) на уровне платформы.
Почему, регистр сведений изобретаемый топикпастером, софтовый аналог этого агрегата, на прикладном уровне будет заполняться и работать быстрее?
18 Kassern
 
05.08.21
16:49
(17) скорее всего запрос сложный у него в подборе с кучей соединений и условий. Вот он и хочет львиную часть на формирование переложить на регламент, а в течение дня пользоваться уже результирующим РС.
19 lubitelxml
 
05.08.21
17:06
(18) именно так, там кроме остатков еще ресурсов более 10 штук, все собирается из множества таблиц
20 lubitelxml
 
05.08.21
17:34
+(19) из-за этого тормозит динамический список так, что работать невозможно, РС дал ускорение в 3-4 раза, осталось данные в течении дня актуализировать
21 Kassern
 
05.08.21
17:37
(20) я ж вам расписал как это сделать, самый безобидный способ, регать все изменения по нужным объектам в план и далее сравнивать в вашим РС, там где значения поменялись, те записи обновлять.
22 lubitelxml
 
05.08.21
17:43
(21) неужели нет универсального способа? Нельзя отследить движения регистра, без разницы, пустой набор или нет? не очень хочется по документно регистрировать изменения
23 BeerHelpsMeWin
 
05.08.21
18:31
Подписка на событие "ПриЗаписи" регистра накоплений не подойдет?
24 lubitelxml
 
05.08.21
18:42
(23) когда идет движение расход или приход - все видно, проблема с отменой проведения документа, это я поймать не могу в ПриЗаписи
25 lubitelxml
 
05.08.21
19:18
В общем вижу сейчас 2 варианта - вариант из (16), и вариант - создать подписку с событием ОбработкаУдаленияПроведения для всех документов которые могут двигать СвободныеОстатки, и уже там проверять по ТЧ изменились ли остатки, если да - обновлять эту запись в своем регистре. Пока склоняюсь ко второму варианту, поскольку с планами обмена очень мало сталкивался.
На что еще стоит обратить внимание?
26 unknown181538
 
05.08.21
20:17
(11) Из оптимизаций на маленьких базах - в файловой помогает включение индексирования в измерениях регистра.
27 lubitelxml
 
05.08.21
20:25
(26) с этим вопросов нет.
28 ildary
 
06.08.21
08:21
(25) есть ещё один вариант - написать свою обработку рабочего места, чтобы в ней не было километрового типового запроса.
29 Kassern
 
06.08.21
09:17
(25) только вот нужно понимать сколько времени будет ваша проверка отрабатывать. К примеру у вас в день проводят 2000 документов, если проверка занимает 3-5 сек, то это будет просто жесть, вас юзверы съедят. А еще есть различные случаи, когда надо за старый период документы провести, или там месяц закрыть. Если в этом случае будете свою проверку юзать, то время выполнения значительно увеличится. Еще не дай бог проблемы с блокировкой таблиц появится. Так что надо все это дело учитывать, прежде чем утяжелять проведение документов.
30 lubitelxml
 
06.08.21
11:34
(28) ну вот сейчас начал проверять на большом объеме данных - не устраивает все равно скорость работы "подбор в документы продаж". Походу придется вообще запрос типовой убирать (я его оптимизировал).
(29) в фоновое задание вынесу проверку/обнновление