Вход | Регистрация

  1  2   
1С:Предприятие ::

Метки:

Счетчики в константах

Я
   Timon1405
 
19.06.17 - 09:13
Есть рекомендация от 1С не делать сабж, использовать для этих целей регистры сведений.
Правильно ли я понимаю, что так как нынче константы хранятся в отдельных таблицах, рекомендацию можно считать устаревшей?
 
  Рекламное место пустует
   Aleksey
 
1 - 19.06.17 - 09:17
Если этот код написать в модуле проведения документов, то у вас ни один документ не сможет проводиться параллельно, даже если документы никак не пересекаются по данным. Для них узким место будет запись константы, т.к. параллельно изменить одни и те же данные нельзя.
   Aleksey
 
2 - 19.06.17 - 09:17
   Timon1405
 
3 - 19.06.17 - 09:20
(1) а в чем будет отличие, если использовать для счетчика РС, его что можно будет записать параллельно?
РСМенеджер.СчетчикДокументов.записать()
   ptiz
 
4 - 19.06.17 - 09:21
(0) Версия конфигурации - тоже счетчик, прекрасно живет в константах.
   Юрий Лазаренко
 
5 - 19.06.17 - 09:22
(4) Все верно, но есть нюансы - версию конфигурации записывают крайне редко и чаще всего в монопольном режиме. А в остальное время ее только читают.
   Aleksey
 
6 - 19.06.17 - 09:23
(4) Как часто версия меняется?
   sFAQer
 
7 - 19.06.17 - 09:25
(3) в РС блокируется строка, в константах блокируется таблица.
   Buster007
 
8 - 19.06.17 - 09:25
(0) были в типовой ЕРП счетчики в константах, теперь их там нет...
   Timon1405
 
9 - 19.06.17 - 09:26
(7) и какая именно таблица?
   sFAQer
 
10 - 19.06.17 - 09:27
(9) Const71414 или любой другой рандомный набор цифр, чё за вопрос такой?
 
  Рекламное место пустует
   Timon1405
 
11 - 19.06.17 - 09:27
(10) почитайте (2)
   dezss
 
12 - 19.06.17 - 09:28
(7) (10) так в том-то и дело, что в этой таблице хранится только одно значение, это значение этой конкретнойконстанты.
   sFAQer
 
13 - 19.06.17 - 09:29
(11) Что это меняет в данном случае? У тебя каждая новая запись счётчика в свою контанту? Нет, а значит таблица константы (конкретной) всегда будет одна.
   sFAQer
 
14 - 19.06.17 - 09:29
(12) Ты сказать этим что хотел?
   Timon1405
 
15 - 19.06.17 - 09:30
(13) бинго! так в чем отличие блокировать строку в РС и блокировать таблицу из одной строки?
   sFAQer
 
16 - 19.06.17 - 09:30
(15) В том что каждый док будет создавать НОВУЮ строку со счётчиком, а в константе МЕНЯТЬ ту единственную.
   Fedor-1971
 
17 - 19.06.17 - 09:30
(0) чисто теоретический вопрос. Общую задачу обрисуй?
(13) Во времени. В общем и целом блокировка таблицы (любой) по времени больше чем блокировка одной записи.
   Aleksey
 
18 - 19.06.17 - 09:31
(17) Непонял
   sFAQer
 
19 - 19.06.17 - 09:32
(17) Ты щас вдумчиво перечитай всё сверху, а потом коменти...
   Aleksey
 
20 - 19.06.17 - 09:33
У таблица Конст2548 у ней 1 строка со значением константы

Есть таблица РегСв2548 у ней 1 строка с несколькими колонками

Почему блокировка записи в таблицы Регсв по времени меньше чем  блокировка в таблице Конст2548?
   sFAQer
 
21 - 19.06.17 - 09:34
(20) Вопрос не во времени, а в паралельности, в РС можно паралельно 3 строчки писать, а паралельно менять 1 строчку константы нельзя...
   1dvd
 
22 - 19.06.17 - 09:34
   Timon1405
 
23 - 19.06.17 - 09:36
(20) извините, похоже, вы не в теме. просто так создавать новую строку нельзя, чтобы счетчик был валидным, все равно нужно блокировать строку с максимальным прошлым счетчиком на запись.
   Fedor-1971
 
24 - 19.06.17 - 09:36
(18) чего? что время затрачиваемое на блокировку таблицы (для каждой константы выделена отдельная таблица) больше, чем установка признака "Блокирована" на строку в РС?
(20) потому что блокировка таблицы проставляет признаки в нескольких местах (на таблицу и на каждую запись в ней), а блокировка записи проставляет одну блокировку записи
(21) Мы не знаем исходной задачи, потому теоретически Счётчик - изменение одной строки в РС несколькими документами
   Timon1405
 
25 - 19.06.17 - 09:36
*(20) >(21)
   dezss
 
26 - 19.06.17 - 09:37
(21) а как насчет того, что будут попытки записать доки  с одним и тем же номером.
   Aleksey
 
27 - 19.06.17 - 09:37
(21) Например? У нас глобальный счетчик к примеру IDD. При записи любого нового объекта мы его инкрементируем.
У нас 2 варианта хранения. В отдельной таблице Конст2548 или в отдельной таблице РегСв2548. В чём разница?
   mistеr
 
28 - 19.06.17 - 09:39
(15) РС можно сделать периодическим и вместо перезаписи делать вставку.
   sFAQer
 
29 - 19.06.17 - 09:39
(23) С какого перепугу её нужно блокировать если ты не собрался инструкций UPDATE запуливать? С какой стати не обновляемая строка потеряет валидность и её нужно блокировать?
   Aleksey
 
30 - 19.06.17 - 09:39
(21) Если у нас 3 значения, то у нас будет 3 константы (3 отдельных таблице) против 1 таблице с 3-мя строками
   sFAQer
 
31 - 19.06.17 - 09:40
(30) Какой план хороший, счётчик сразу в трёх константах хранить...
   Черный маклер
 
32 - 19.06.17 - 09:41
для счетчиков очень быстр справочник без кода и наименования
   mistеr
 
33 - 19.06.17 - 09:42
(27) У нас три варианта. Для счетчиков в 1С предусмотрели последовательности. Если счетчик щелкает постоянною. Нужно использовать последовательности. Там все оптимизировано в том числе и по блокировкам.
 
  Рекламное место пустует
   Aleksey
 
34 - 19.06.17 - 09:42
(31) а вы что предлагаете? Хранилище значение и хранить в нём массив?
   Timon1405
 
35 - 19.06.17 - 09:43
(29) а как вы себе представляете процесс инкремента счетчика? допустим последняя запись равна idd=255, проводятся одновременно 3 документа, они без проблем считывают макс значение счетчика(RCSI), и инкременируют его одновременно на 1 и все запишут 256 так что ли?
   Aleksey
 
36 - 19.06.17 - 09:43
(33) не понял, как мне в последовательность справочник запихнуть?
   Fedor-1971
 
37 - 19.06.17 - 09:44
(27) вот какой вредный. Разница:
1. константа - блокируем таблицу, блокируем каждую строку в таблице
2. рс - блокируем одну строку. (тут вклинивается поиск строки, но, он не сравним с блокировкой)
   YFedor
 
38 - 19.06.17 - 09:45
(37) Так в таблице всего одна строка, неужели поиск в РС будет намного быстрее блокировки таблицы с одной строкой?
   Aleksey
 
39 - 19.06.17 - 09:45
(37) и?
Т.е. блокировка таблицы занимает условно 2,5 сек,а  блокировка строки в таблице занимает условно 2.5 наносек?
   Aleksey
 
40 - 19.06.17 - 09:46
Таблица полностью идентичны. Это отдельная таблица в которой всего 1 колонка и 1 строка. Разница только в названии таблицы
   YFedor
 
41 - 19.06.17 - 09:48
(0) А зачем вообще этот счетчик нужен? может использовать РС, Константу и регламентное задание?
   sFAQer
 
42 - 19.06.17 - 09:48
(35) Шансов на это мало, но так или иначе ты можешь поставить блокировку на значение 256, отловить её в других доках и инкрементировать ещё на единичку...

(38) Поиск по индексу, конечно быстрее блокировки
   Fedor-1971
 
43 - 19.06.17 - 09:49
(38)(39) по времени разница примерно в 0.5 (+/-)сек для MS SQL
специально замером смотрел, была примерно похожая задача. После перехода на РС проведение доков ускорилось
   YFedor
 
44 - 19.06.17 - 09:50
(42) Шансов как раз море, если пользователей много ибо у него сквозная нумерация всех объектов: справочники, документы
   sFAQer
 
45 - 19.06.17 - 09:50
(44) О_____________о откуда такие подробности личной жизни?
   DrZombi
 
46 - 19.06.17 - 09:50
(3) Пока проводятся документ, все курят бамбук, что бы записать константу.
...
Думается 1С с константами опять намудрила :)
   YFedor
 
47 - 19.06.17 - 09:52
(45) да я был сбит с толку сообщением из (36)
   mistеr
 
48 - 19.06.17 - 09:53
(33) (36) Тьфу ты, не последовательности, а НУМЕРАТОРЫ!
   dezss
 
49 - 19.06.17 - 09:54
(42) Шансов много. А блокировка на значение не будет отрабатывать быстрей, чем запись константы, хотя если таких коллизий будет не много, то определенно работать будет быстрей.
 
  Рекламное место пустует
   YFedor
 
50 - 19.06.17 - 09:56
(48) А как использовать нумератор не для назначения номера документа?
   Fedor-1971
 
51 - 19.06.17 - 10:06
(42) Периодический РС - ни разу не счётчик т.к. добавляет записи и приходим к вопросам "А которая из них последняя" и "Сколько времени займёт её найти". Много пользователей получают данные без проблем и запишут свои новые значения (90%  - одинаковые) - в результате каша, а не счётчик.
   rabbidX
 
52 - 19.06.17 - 10:06
(0) В оперативном режиме нумеровать документы - бред. Какой бы механизм Вы не выбрали, при интенсивной работе с базой будет все тупить жутко.
Лучше пересчитывайте доки регламентным заданием ночью. Дабавьте общий реквизит "Посчитали" для всех доков. В регламентном выбирайте все доки, где Посчитали = Ложь, меняйте значение реквизита на Истину и перезаписывайте константу.
   ptiz
 
53 - 19.06.17 - 10:07
Сделать оба варианта да прогнать замер - делов-то.
   sFAQer
 
54 - 19.06.17 - 10:08
(51) Ты про виртуальные таблицы чё нибудь слышал?
   Fedor-1971
 
55 - 19.06.17 - 10:10
(52) Ага, выдали счёт № ХХХХ, ночью что-то пожужжало и получили номер YYYY. И как с клиентом разговаривать?

(51) И? в (35) пример очень показательный. Как ни странно, но виртуальная таблица для построения требует времени.
   rabbidX
 
56 - 19.06.17 - 10:10
С РС нужно после перед чтением еще управляемую блокировку включать, потом выключать. Беспонтово.
   mistеr
 
57 - 19.06.17 - 10:10
(50) Создать документ. Вместо константы и РС.
   Timon1405
 
58 - 19.06.17 - 10:11
(43) >>После перехода на РС проведение доков ускорилось
И текущая строка РС счетчика при этом блокировались на запись?
или просто "перешли на РС, считываем последнее idd и надеемся как в (42) на то что, "вероятность файр резиста крайне мала"

коллеги, вопрос скорее теоретический, интересно насколько рекомендации сходятся с примерами из реальной жизни
   Fedor-1971
 
59 - 19.06.17 - 10:11
(58) как положено с блокировкой
   rabbidX
 
60 - 19.06.17 - 10:13
(55) Так счетчик же нужен, а не нумератор. Нумератор в коробке стандартный есть, по нему количество доков не определишь, коллизии там, вся фигня. Да и не факт, что помимо счетчика не нужно обычной нумерации для каждого типа документов.
   mistеr
 
61 - 19.06.17 - 10:15
(60) Счетчик нужен для определения количества доков? Что за бред?
   rabbidX
 
62 - 19.06.17 - 10:15
(58) а можно ссылку на эту рекомендацию? Что именно там 1С советует?
   rabbidX
 
63 - 19.06.17 - 10:15
(61) А для чего?
   Fedor-1971
 
64 - 19.06.17 - 10:19
(60) у меня была задача реализовать нумерацию документов по разным фирмам с различной периодичностью (день, месяц, год) с возможностью динамически влиять на оную. Типа шаблона номера документов, вот там счётчик и понадобился.

(63) Например, для подсчёта входов-выходов сотрудника за день, неделю, месяц и т.д.
   Timon1405
 
65 - 19.06.17 - 10:21
(62) https://its.1c.ru/db/metod8dev#content:4053:hdoc:_top
Константы

Не рекомендуется использовать константы для хранения постоянно меняющихся данных. Это приведет к возникновению избыточных блокировок и снижению общей производительности системы. Для хранения таких данных можно использовать другие объекты метаданных "1С:Предприятия" (справочники, регистры и т. д.).

Константы предназначены для хранения настроек, которые могут часто считываться, но не должны часто изменяться. Значения всех констант хранятся в одном ресурсе. Это означает, что при блокировке одной константы будут заблокированы все константы.

Очевидно, что информация устаревшая!
   sFAQer
 
66 - 19.06.17 - 10:22
(64) (65) В ДО например нумераторы реализованы черзе РС "Нумерация" Там тоже счётчики. Только там строка обновляется, и т.к разрезов у РСа достаточно много, в колизии не впадает...
   mistеr
 
67 - 19.06.17 - 10:23
(64) Для подсчета входов-выходов и т.п. есть РН.
   Вафель
 
68 - 19.06.17 - 10:23
(65) Еще со времен 8.2.14, те лет 10 уже
   rabbidX
 
69 - 19.06.17 - 10:24
(64)  в (3) и далее по ветке говорили про счетчик документов.
Если задача считать сотрудников или еще кого-то, то нам нужно измерение, которого у константы нету и вопрос об ее использовании отпадает.
   Вафель
 
70 - 19.06.17 - 10:24
Конечно без понимания задачи посоветовать ничего нельзя
   mistеr
 
71 - 19.06.17 - 10:25
(64) Можно подробности? С первичными бизнес требованиями.
   Вафель
 
72 - 19.06.17 - 10:25
документы считать лучше вообще при формировании отчета.
Явно что этот отчет не такая частая функция
   Вафель
 
73 - 19.06.17 - 10:26
Если это нумератор, то лучше регистр ибо 146% потом потребуются разные разрезы
   rabbidX
 
74 - 19.06.17 - 10:31
(65) Ну смотрите, постоянно меняющиеся данные, общие для всей базы - это какие-нибудь суммируемые показатели, которые в явном виде хранить не нужно, проще посчитать. Если логика работы со значением, не предполагает его параллельного изменения, пользуйтесь константами, сколько влезет.
   Aleksey
 
75 - 19.06.17 - 10:32
(71) А что там непонятно.  Управленческая база, нужна своя нумерация в разрезе юрлиц, но при этом учет ведется по компании в целом
Вариант 1, мы меняем типовой номер в документах в зависимости от признака (ну например от юрлица). Т.е. меняем типовой код и периодичность.
Вариант 2. Типовой номер не трогаем, а реализуем свою нумерацию, т.е. без изменения типовой в рамках подписки на событие (или в рамках расширения)
   Aleksey
 
76 - 19.06.17 - 10:34
(74) Что значит проще посчитать? Например нужен инкрементный счетчик для обмена, или свой уникальный номер справочников и документов
   Fedor-1971
 
77 - 19.06.17 - 10:35
(71) Да без проблем: необходимо реализовать нумерацию документов (для разных фирм своя периодичность формирования номера, вида: ГГГГ БН где ГГГГ - номер в пределах года, Б - установленная баква для данного вида документа, Н - количество счетов в пределах данной буквы). Номера задаются шаблоном номера в справочнике фирм. Периодичность,на выбор, в пределах года, месяца, дня.
Реализовал конечный автомат разбора шаблона номера и 3 РС со счётчиками по фирмам и периодичности (3 возможных периода). Рассматривал возможность использовать константу для каждого периода, не получилось, слишком медленно.
   Fedor-1971
 
78 - 19.06.17 - 10:37
77+ в основном, нумерация подключалась к выставленным счетам
   rabbidX
 
79 - 19.06.17 - 10:39
(77) ПриУстановкеНовогоНомера не  пробовали использовать? Можно же без лишних объектов было обойтись.
   Aleksey
 
80 - 19.06.17 - 10:41
(79) а как он поможет?
Например типовая нумерация документа в течении года. Мне нужно реализовать нумерацию в течении месяца/дня. И чем мне поможет при установки нового номера?
   Вафель
 
81 - 19.06.17 - 10:41
(79) В ДО однако не обошлись
   mistеr
 
82 - 19.06.17 - 10:45
(77) Ты описал реализацию. А я просил прикладную задачу.
   Fedor-1971
 
83 - 19.06.17 - 10:45
(79) нельзя.
С одной стороны раные шаблоны: у одной фирмы шаблон "ГГГГ БН" у другой "ДДММГГ-ВВ" где ВВ - номер в пределах дня.
С другой: если одновременно записывают 2 человека документы тупо получат одинаковый номер без наличия счётчика.
   rabbidX
 
84 - 19.06.17 - 10:46
(80) Запросом вычислять. Но, это все-таки медленно, согласен.
   Serg_1960
 
85 - 19.06.17 - 10:47
Как говаривал незабвенный наш гений: "Мой гений дарит вам..."(цы) Цель не скрываю: сбить с толку :)

Добавляем справочник (с наименованием например, "Сonstant") и реквизитами "КакЧисло", "КакДата" и т.д.; все строки - предопределенные (имя преопределенной и имя константы - совпадают).

Правила работы просты: "одна строка - одна константа". Тогда к псевдо-константам можно будет обращаться "напрямую".

Например, к константе "Счетчик_Х"(тип: число) можно обратиться так: Сonstant.Счетчик_Х.Число (где "Сonstant" - наименование справочника; "Счетчик_Х" - предопределенная строка; "КакЧисло" - реквизит справочника)...

:)
   Aleksey
 
86 - 19.06.17 - 10:48
(84) Вычислять что? мы же говорим про типовую команду ПриУстановкеНовогоНомера, а там чем запрос нам поможет?
   Timon1405
 
87 - 19.06.17 - 10:49
(84) вся соль не в вычислении макс номера запросом, а в его блокировке на запись
   Fedor-1971
 
88 - 19.06.17 - 10:49
(82) т.е. "Надо разные номера ... по шаблону" это не описание прикладной задачи?
   Serg_1960
 
89 - 19.06.17 - 10:50
Тема нумерации навеяло одну смешную тему - Изменение нумерации, обычные формы
   Aleksey
 
90 - 19.06.17 - 10:50
(85) у меня есть похожая реализация, только там еще колонка период. И соответсвенно новый период - новая нумерация.
   mistеr
 
91 - 19.06.17 - 10:51
(88) Нет. "Прикладная" - это значит "что попросил бизнес", его языком. А шаблоны и прочее уже ты придумал.
   Aleksey
 
92 - 19.06.17 - 10:52
(91) почему бизнес не может попросить шаблон?
   Fedor-1971
 
93 - 19.06.17 - 10:52
(91) это попросил бизнес шаблон номера и периодичность его формирования
   Fedor-1971
 
94 - 19.06.17 - 10:53
93+ Реализация: конечный автомат + техника дела для счётчиков
   rabbidX
 
95 - 19.06.17 - 10:54
(87) Установить управляемую блокировку там не проблема, но это уже офтоп, т.к. константы там негде использовать.
   Fedor-1971
 
96 - 19.06.17 - 10:55
(95) маленькая поправка: у ТС константа используется для реализации счётчика
   mistеr
 
97 - 19.06.17 - 10:55
(92) Может, если это бизнес по придумыванию и продаже шаблонов.

(93) И ты не пытался выяснить зачем?
   rabbidX
 
98 - 19.06.17 - 10:56
(86) Установить блокировку на таблицу документа в нужном разрезе, посчитать количество записанных доков, сформировать номер.
   vi0
 
99 - 19.06.17 - 10:59
мы наблюдаем активный мозговой штурм на тему "реализация сферического счетчика в вакууме"
   rabbidX
 
100 - 19.06.17 - 10:59
(96) У ТС теоретический вопрос. Уже, вроде, выяснили, что использование констант зависит от того, какой это счетчик. Если счетчик релизов конфигурации или какой-либо другой, не связанный с параллельной записью, то использовать можно.

  1  2   

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