|
Что это - хранение остатков номенклатуры в самом справочнике | ☑ | ||
---|---|---|---|---|
0
slafor
18.04.21
✎
11:22
|
Работаю с клиентом, у которого ранее приходившие программисты сделали такую фишку - остатки справочника номенклатуры хранятся в самом справочнике, в специальном реквизите. Нет, они, конечно, хранятся и в регистре накопления (конфигурация Розница), но периодически, через каждые 5 минут, обновляются в справочнике.
Зачем это сделано? Дело в том, что там из-за наличия или отсутствия товара на складе меняется цвет строк в списках. Я сделал поиск по виртуальной таблице остатков - и пользователи сразу стали говорить, что все очень медленно стало работать (медленно - это в пределах 3-х секунд). Вернул обратно - и все "стало летать". Насколько это правильно с точки зрения 1С, и есть ли кто-нибудь, кто тоже так делал? Понимаю, что перезаписывать элементы справочников каждые 5 секунд - это плохо, но... |
|||
1
hhhh
18.04.21
✎
11:26
|
(0) наверно ты криво сделал "поиск по виртуальной таблице остатков", вот и тормозит. А они хорошо сделали, вот у них и летает.
|
|||
2
Dmitry1c
18.04.21
✎
11:32
|
(0) может быть сделано для того, чтобы в списках выводить текущий остаток.
с учетом понимания погрешности, конечно. 1-2 ошибки несоответствия в неделю проблему не вызывает, а задача бизнеса решена. |
|||
3
slafor
18.04.21
✎
11:32
|
(1) Как можно криво сделать?
Нет, ну я не спорю, у них перезаписываются не все элемента справочника, а только измененные. |
|||
4
slafor
18.04.21
✎
11:33
|
+(3) Вернее, только те, у которых остаток поменялся )
|
|||
5
Mikeware
18.04.21
✎
11:34
|
(3) нет таких вещей, в которых 1с-ник не смог бы накосячить...
|
|||
6
Dmitry1c
18.04.21
✎
11:35
|
В УНФ в общем-то аналогично сделано.
Есть регистр сведений остатков номенклатуры, который (образно) продлевает реквизиты справочника. И этот регистр пересчитывается при записи наборов остатков. И в итоге - очень быстро работающий список с остатками. |
|||
7
slafor
18.04.21
✎
11:37
|
(1) Понимаю, что приходится брать всю таблицу. А как я могу задать параметры виртуальной таблицы остатков, если это динамический список?
(6) Вот! Я и хотел предложить им сделать регистр сведений. Не знал, что это уже есть в типовых. |
|||
8
d4rkmesa
18.04.21
✎
11:44
|
(7) Подожди, а чем резон переделывать? Я что-то прочитал и не понял. Остатки немного разняться? За 5 минут существенно меняются?
|
|||
9
Aleksey
18.04.21
✎
11:47
|
Так вроде бы он остатки и не выводит "из-за наличия или отсутствия товара на складе меняется цвет строк в списках."
т.е. тупо булевый реквизит - есть на остатки или нет |
|||
10
hhhh
18.04.21
✎
11:51
|
(9) булевый реквизит дольше писать. Там ведь еще дополнительно проверка, сравнение с нулем.
|
|||
11
Aleksey
18.04.21
✎
11:56
|
(10) НеВпрайсе = (0 = текОстаток); - разве так не отработает? к тому же по булевому проще для индексации
|
|||
12
Вафель
18.04.21
✎
14:03
|
Если не изменился то надеюсь не перезаписывается элемент?
|
|||
13
vde69
18.04.21
✎
14:17
|
(0) минусы реализации
1. если включить версионирование номенклатуры - будет треш 2. практически не возможно по логам определил кто менял номенклатуру 3. записывается сам объект а не одно поле в любом случае 1. раскраска по остаткам - выкинуть в отчеты, не в динамическом списке а в ОТЧЕТАХ 2. фильтр по наличию - можно сделать и в динамическом списке ПОДБОРА а не списке номенклатуры |
|||
14
vde69
18.04.21
✎
14:17
|
(13) вообще подобные хотелки много раз видел у торговцев автозапчастями....
|
|||
15
Ненавижу 1С
гуру
18.04.21
✎
14:23
|
(13) плюс вопросы когда начнут хранить в разных разрезах, например, на разных складах
|
|||
16
acanta
18.04.21
✎
14:27
|
В чем проблема добавить в справочнике номенклатура на каждый склад и каждую единицу измерения отдельную колонку? Тонны, жироединицы, штуки
|
|||
17
Mikeware
18.04.21
✎
14:31
|
(15) ну ты ж понимаешь - "да у нас склад всегда был один, и будет!" :-))
ну а потом "мы ничего не делали, а остатки пропали [или задвоились]"... классика жанра... |
|||
18
Ненавижу 1С
гуру
18.04.21
✎
14:37
|
(17) к сожалению да, люди не могут моделировать ситуации
задача была про хранение одного товара в разных ячейках вопрос: у вас бывает такое? ответ: ну очень редко, давайте мы не будем такое рассматривать результат: по факту оказалось около 10% товара лежит в нескольких ячейках |
|||
19
Mikeware
18.04.21
✎
14:44
|
(18) была старая история - чуваки разрабатывали какую-то информационную систему, ну и на один из вопросов "что делать в такой ситуации" от менеджера заказчика получили клятвенное заверение, что "такая ситуация невозможна вообще никогда" . Но т.к. они были людьми умными, они в обработку этой ситуации вставили то-ли отсылку почты этому менеджеру, то-ли окошко с просьбой ему позвонить....
ну, результат понятен и предсказуем :-) |
|||
20
mistеr
18.04.21
✎
15:12
|
(0) Это называется денормализация.
С т.з. архитектуры это конечно плохо, но в 1С есть правило: если помогает бизнесу, то можно. |
|||
21
Garykom
гуру
18.04.21
✎
15:41
|
(0) Для конфигурации Розница Аптека у меня сделан "Прайс-Лист" - своя форма подбора номенклатуры по остаткам в РМК
Глянь как https://github.com/Garykom/1C_Roznica_Apteka/blob/master/Аптека_2020_06_24_01.cfe И оно не тормозит если индекс полнотекстовый не сглючил |
|||
22
Garykom
гуру
18.04.21
✎
15:43
|
(0) Имхо это решение вам придумали и сделали 7чники, в которой иначе было нельзя (сам там такое делал и юзал неоднократно)
В 8-ке и тем более УФ все намного проще |
|||
23
Mikeware
18.04.21
✎
15:55
|
(20) это уже не "денормализация", это попытка изобразить кэширование...
(22) в клюшках тоже можно нормально писать. |
|||
24
rphosts
18.04.21
✎
15:58
|
(0) думаю сделали тогда, когда возможности запросов для динамического списка были совсем куцие... а потом уже было пофиг - ведь и так работает...
|
|||
25
Cthulhu
18.04.21
✎
16:06
|
(23): кэш-тз в переменной модуля с остатком и временем его вычисления - а в функции вычисления остатка по этой тз при превышении задержки (тек.время минус время вычисления остатка в кэш-тз) - пересчет в этой строке тз остатка и этого времени. ну или то же самое если тек.тмц не найдено - с добавлением строки в кэш-тз. а потом - возврат остатка из кэш-тз. угу?..
|
|||
26
Mikeware
18.04.21
✎
16:14
|
(25) я прекрасно знаю, что такое кэширование и как оно делается.
а в (23) я ж написал про (0)- "попытка изобразить кэширование". |
|||
27
Гений 1С
гуру
18.04.21
✎
16:20
|
(0) как-то такое видел для печати ценников. ;-)
|
|||
28
Злопчинский
18.04.21
✎
16:35
|
(22) ну, если спецов по 8-ке - нет (сдулись, сидят на попе ровно на полуфиксях всяких), то клиент берет тех спецов что есть. не брать же орков-погромистов. которые только галочки умеют расставлять, да и то не знают где и как...
|
|||
29
Гений 1С
гуру
18.04.21
✎
17:23
|
(27) вернее вспомнил, сам делал такое для печати ценников, точно. Правда, не остатки хранил, а доступные размеры, что-то типо этого.
|
|||
30
Cthulhu
18.04.21
✎
17:47
|
(26): я об этом не спрашивал.
|
|||
31
Cthulhu
18.04.21
✎
17:58
|
А решение в (0), кстати, позволяет стандартно на пользовательском уровне отобразить этот (расчетный) остаток номенклатуры в любом дин.списке, в котором есть ссылка на номенклатуру (через "изменить форму" - встать на номенклатуру - "добавить реквизит")
|
|||
32
Cthulhu
18.04.21
✎
18:02
|
* "добавить поля"
|
|||
33
Гений 1С
гуру
18.04.21
✎
18:55
|
(31) ну да, чтобы не сильно ковырять остальное. Нормальное решение.
Если база не распределенка и нет обмена с сайтом, то норм, иначе часто перезаписывать будет и обмены гонять туда-сюда |
|||
34
vde69
18.04.21
✎
19:31
|
Ага, нормальное решение🙄
А потом попросят сколько заказано, а потом дату поступления, а потом сколько в головном офисе и тд |
|||
35
Cthulhu
18.04.21
✎
19:56
|
(34): такой разработчик на клиппере: "ага, а потом попросят чтобы им в одном отчете остатки и резервы выводило и т.д."
|
|||
36
Cthulhu
18.04.21
✎
19:58
|
ЗЫ: а вообще - если еще один реквизит под время актуализации, и доступную "быструю кнопку" обновления... вполне себе норм решение. даже с учетом (34).
|
|||
37
Cthulhu
18.04.21
✎
20:00
|
и - да, у меня все еще "психология семерочника". но это как раз скорее неплохо (во всяком случае так клиенты говорят).
|
|||
38
MWWRuza
гуру
18.04.21
✎
20:18
|
(36) "быструю кнопку" обновления...
Принудительно обновлять при открытии формы списка... Не? |
|||
39
NorthWind
18.04.21
✎
20:40
|
(0) чет у вас то 5 минут, то 5 секунд, определитесь уже...
На мой взгляд, идея рабочая. Только лучше было бы в рег сведений кэшировать, благо это восьмерка. |
|||
40
Ненавижу 1С
гуру
18.04.21
✎
20:48
|
(39) непонятно... РН Остатки без даты берет непосредственно из физической таблицы остатков на какую-то там дату 3999 года (могу путать)
И в чем выгода писать еще в РС? |
|||
41
NorthWind
18.04.21
✎
20:59
|
(40) здесь нужно произвести замер производительности, но похоже, что проблема в том что работа с регистром остатков идет достаточно долго. Если регистр хранит итоги периодов и движения внутри периода, проблема может быть в том, что движений реально много, поэтому выборка остатков на незакрытый период идет немоментально.
|
|||
42
NorthWind
18.04.21
✎
21:00
|
в этом случае плоская табличка "номенклатура-остаток" действительно может помочь
|
|||
43
Ненавижу 1С
гуру
18.04.21
✎
21:14
|
(41) еще раз - выборка остатков без указания даты берется тупо из таблицы итогов без всяких соединений, не надо там ничего придумывать
|
|||
44
Ненавижу 1С
гуру
18.04.21
✎
21:19
|
а что там в (0) автор "сделал поиск по виртуальной таблице остатков" - это оно такое, можно было динамический запрос нормально написать, а можно и событие ПриПолученииДанныхНаСервере использовать и дергать в цикле остатки (как любит делать гений 1с)
|
|||
45
Почему 1С
19.04.21
✎
09:22
|
(0) Если все это перенести из справочника в регистр, то это будет рекомендованной реализацией от 1С для динамических списков, в которых нужны данные из виртуальных таблиц регистров (исключение с ньюнасами для срез последних и остатки)
https://its.1c.ru/db/v8std/content/732/hdoc |
|||
46
NorthWind
19.04.21
✎
09:45
|
(43) да. Я упустил тот факт, что в таблице итогов помимо тех итогов, которые сохраняются при переходе через период, отдельной строкой хранятся и поддерживаются актуальные итоги.
Но в таком случае не вполне понятно, откуда тормоза. |
|||
47
DGorgoN
19.04.21
✎
09:47
|
(0) Это называется кэширование. Я бы делал через регистр.
|
|||
48
ptiz
19.04.21
✎
09:58
|
(7) "Я и хотел предложить им сделать регистр сведений." - юзеры и слов таких знать не должны. Сделай и всё.
|
|||
49
Classic
19.04.21
✎
10:50
|
(0)
Формы наверняка не управляемые. Так что тебя тогда удивляет? Я *каюсь* на неуправляемых формах даже реквизиты в документы добалял типа "есть подчиненный документ". Исключительно для отборов и оформления в списках. |
|||
50
Timon1405
19.04.21
✎
11:15
|
на всякий случай(для УФ): https://wonderland.v8.1c.ru/blog/obrabotka-i-oformlenie-dannykh-dinamicheskogo-spiska/ собственно, плюсы подхода расписаны в самой статье пятилетней(!) давности
|
|||
51
Garykom
гуру
19.04.21
✎
11:22
|
(50) угу я так примерно и делаю обычно
и нахер не надо каждые Х минут номенклатуру перезаписывать что когда ее много выливается в дикие тормоза |
|||
52
DimVad
19.04.21
✎
11:33
|
(35) На клиппере это делалось очень просто - получить остатки и резервы. В любом месте, хоть на форме хоть в отчёте... Любой каприз за деньги клиента ! :-)
|
|||
53
Rovan
гуру
19.04.21
✎
12:54
|
(0) "Я сделал поиск по виртуальной таблице остатков" - давай запрос твой посмотрим
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |