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


#0 by Timon1405
Есть рекомендация от 1С не делать сабж, использовать для этих целей регистры сведений. Правильно ли я понимаю, что так как нынче константы хранятся в отдельных таблицах, рекомендацию можно считать устаревшей?
#0 by Timon1405
Есть рекомендация от 1С не делать сабж, использовать для этих целей регистры сведений. Правильно ли я понимаю, что так как нынче константы хранятся в отдельных таблицах, рекомендацию можно считать устаревшей?
#1 by Aleksey
Если этот код написать в модуле проведения документов, то у вас ни один документ не сможет проводиться параллельно, даже если документы никак не пересекаются по данным. Для них узким место будет запись константы, т.к. параллельно изменить одни и те же данные нельзя.
#2 by Aleksey
(с)
#3 by Timon1405
а в чем будет отличие, если использовать для счетчика РС, его что можно будет записать параллельно? РСМенеджер.СчетчикДокументов.записать
#4 by ptiz
Версия конфигурации - тоже счетчик, прекрасно живет в константах.
#5 by Юрий Лазаренко
Все верно, но есть нюансы - версию конфигурации записывают крайне редко и чаще всего в монопольном режиме. А в остальное время ее только читают.
#6 by Aleksey
Как часто версия меняется?
#7 by sFAQer
в РС блокируется строка, в константах блокируется таблица.
#8 by Buster007
были в типовой ЕРП счетчики в константах, теперь их там нет...
#9 by Timon1405
и какая именно таблица?
#10 by sFAQer
Const71414 или любой другой рандомный набор цифр, чё за вопрос такой?
#11 by Timon1405
почитайте
#12 by dezss
так в том-то и дело, что в этой таблице хранится только одно значение, это значение этой конкретнойконстанты.
#13 by sFAQer
Что это меняет в данном случае? У тебя каждая новая запись счётчика в свою контанту? Нет, а значит таблица константы (конкретной) всегда будет одна.
#14 by sFAQer
Ты сказать этим что хотел?
#15 by Timon1405
бинго! так в чем отличие блокировать строку в РС и блокировать таблицу из одной строки?
#16 by sFAQer
В том что каждый док будет создавать НОВУЮ строку со счётчиком, а в константе МЕНЯТЬ ту единственную.
#17 by Fedor-1971
чисто теоретический вопрос. Общую задачу обрисуй? Во времени. В общем и целом блокировка таблицы (любой) по времени больше чем блокировка одной записи.
#18 by Aleksey
Непонял
#19 by sFAQer
Ты щас вдумчиво перечитай всё сверху, а потом коменти...
#20 by Aleksey
У таблица Конст2548 у ней 1 строка со значением константы Есть таблица РегСв2548 у ней 1 строка с несколькими колонками Почему блокировка записи в таблицы Регсв по времени меньше чем  блокировка в таблице Конст2548?
#21 by sFAQer
Вопрос не во времени, а в паралельности, в РС можно паралельно 3 строчки писать, а паралельно менять 1 строчку константы нельзя...
#23 by Timon1405
извините, похоже, вы не в теме. просто так создавать новую строку нельзя, чтобы счетчик был валидным, все равно нужно блокировать строку с максимальным прошлым счетчиком на запись.
#24 by Fedor-1971
чего? что время затрачиваемое на блокировку таблицы (для каждой константы выделена отдельная таблица) больше, чем установка признака "Блокирована" на строку в РС? потому что блокировка таблицы проставляет признаки в нескольких местах (на таблицу и на каждую запись в ней), а блокировка записи проставляет одну блокировку записи Мы не знаем исходной задачи, потому теоретически Счётчик - изменение одной строки в РС несколькими документами
#25 by Timon1405
* >
#26 by dezss
а как насчет того, что будут попытки записать доки  с одним и тем же номером.
#27 by Aleksey
Например? У нас глобальный счетчик к примеру IDD. При записи любого нового объекта мы его инкрементируем. У нас 2 варианта хранения. В отдельной таблице Конст2548 или в отдельной таблице РегСв2548. В чём разница?
#28 by mistеr
РС можно сделать периодическим и вместо перезаписи делать вставку.
#29 by sFAQer
С какого перепугу её нужно блокировать если ты не собрался инструкций UPDATE запуливать? С какой стати не обновляемая строка потеряет валидность и её нужно блокировать?
#30 by Aleksey
Если у нас 3 значения, то у нас будет 3 константы (3 отдельных таблице) против 1 таблице с 3-мя строками
#31 by sFAQer
Какой план хороший, счётчик сразу в трёх константах хранить...
#32 by Черный маклер
для счетчиков очень быстр справочник без кода и наименования
#33 by mistеr
У нас три варианта. Для счетчиков в 1С предусмотрели последовательности. Если счетчик щелкает постоянною. Нужно использовать последовательности. Там все оптимизировано в том числе и по блокировкам.
#34 by Aleksey
а вы что предлагаете? Хранилище значение и хранить в нём массив?
#35 by Timon1405
а как вы себе представляете процесс инкремента счетчика? допустим последняя запись равна idd=255, проводятся одновременно 3 документа, они без проблем считывают макс значение счетчика(RCSI), и инкременируют его одновременно на 1 и все запишут 256 так что ли?
#36 by Aleksey
не понял, как мне в последовательность справочник запихнуть?
#37 by Fedor-1971
вот какой вредный. Разница: 1. константа - блокируем таблицу, блокируем каждую строку в таблице 2. рс - блокируем одну строку. (тут вклинивается поиск строки, но, он не сравним с блокировкой)
#38 by YFedor
Так в таблице всего одна строка, неужели поиск в РС будет намного быстрее блокировки таблицы с одной строкой?
#39 by Aleksey
и? Т.е. блокировка таблицы занимает условно 2,5 сек,а  блокировка строки в таблице занимает условно 2.5 наносек?
#40 by Aleksey
Таблица полностью идентичны. Это отдельная таблица в которой всего 1 колонка и 1 строка. Разница только в названии таблицы
#41 by YFedor
А зачем вообще этот счетчик нужен? может использовать РС, Константу и регламентное задание?
#42 by sFAQer
Шансов на это мало, но так или иначе ты можешь поставить блокировку на значение 256, отловить её в других доках и инкрементировать ещё на единичку... Поиск по индексу, конечно быстрее блокировки
#43 by Fedor-1971
по времени разница примерно в 0.5 (+/-)сек для MS SQL специально замером смотрел, была примерно похожая задача. После перехода на РС проведение доков ускорилось
#44 by YFedor
Шансов как раз море, если пользователей много ибо у него сквозная нумерация всех объектов: справочники, документы
#45 by sFAQer
О_____________о откуда такие подробности личной жизни?
#46 by DrZombi
Пока проводятся документ, все курят бамбук, что бы записать константу. ... Думается 1С с константами опять намудрила :)
#47 by YFedor
да я был сбит с толку сообщением из
#48 by mistеr
Тьфу ты, не последовательности, а НУМЕРАТОРЫ!
#49 by dezss
Шансов много. А блокировка на значение не будет отрабатывать быстрей, чем запись константы, хотя если таких коллизий будет не много, то определенно работать будет быстрей.
#50 by YFedor
А как использовать нумератор не для назначения номера документа?
#51 by Fedor-1971
Периодический РС - ни разу не счётчик т.к. добавляет записи и приходим к вопросам "А которая из них последняя" и "Сколько времени займёт её найти". Много пользователей получают данные без проблем и запишут свои новые значения (90%  - одинаковые) - в результате каша, а не счётчик.
#52 by rabbidX
В оперативном режиме нумеровать документы - бред. Какой бы механизм Вы не выбрали, при интенсивной работе с базой будет все тупить жутко. Лучше пересчитывайте доки регламентным заданием ночью. Дабавьте общий реквизит "Посчитали" для всех доков. В регламентном выбирайте все доки, где Посчитали = Ложь, меняйте значение реквизита на Истину и перезаписывайте константу.
#53 by ptiz
Сделать оба варианта да прогнать замер - делов-то.
#54 by sFAQer
Ты про виртуальные таблицы чё нибудь слышал?
#55 by Fedor-1971
Ага, выдали счёт № ХХХХ, ночью что-то пожужжало и получили номер YYYY. И как с клиентом разговаривать? И? в пример очень показательный. Как ни странно, но виртуальная таблица для построения требует времени.
#56 by rabbidX
С РС нужно после перед чтением еще управляемую блокировку включать, потом выключать. Беспонтово.
#57 by mistеr
Создать документ. Вместо константы и РС.
#58 by Timon1405
>>После перехода на РС проведение доков ускорилось И текущая строка РС счетчика при этом блокировались на запись? или просто "перешли на РС, считываем последнее idd и надеемся как в на то что, "вероятность файр резиста крайне мала" коллеги, вопрос скорее теоретический, интересно насколько рекомендации сходятся с примерами из реальной жизни
#59 by Fedor-1971
как положено с блокировкой
#60 by rabbidX
Так счетчик же нужен, а не нумератор. Нумератор в коробке стандартный есть, по нему количество доков не определишь, коллизии там, вся фигня. Да и не факт, что помимо счетчика не нужно обычной нумерации для каждого типа документов.
#61 by mistеr
Счетчик нужен для определения количества доков? Что за бред?
#62 by rabbidX
а можно ссылку на эту рекомендацию? Что именно там 1С советует?
#63 by rabbidX
А для чего?
#64 by Fedor-1971
у меня была задача реализовать нумерацию документов по разным фирмам с различной периодичностью (день, месяц, год) с возможностью динамически влиять на оную. Типа шаблона номера документов, вот там счётчик и понадобился. Например, для подсчёта входов-выходов сотрудника за день, неделю, месяц и т.д.
#65 by Timon1405
Константы Не рекомендуется использовать константы для хранения постоянно меняющихся данных. Это приведет к возникновению избыточных блокировок и снижению общей производительности системы. Для хранения таких данных можно использовать другие объекты метаданных "1С:Предприятия" (справочники, регистры и т. д.). Константы предназначены для хранения настроек, которые могут часто считываться, но не должны часто изменяться. Значения всех констант хранятся в одном ресурсе. Это означает, что при блокировке одной константы будут заблокированы все константы. Очевидно, что информация устаревшая!
#66 by sFAQer
В ДО например нумераторы реализованы черзе РС "Нумерация" Там тоже счётчики. Только там строка обновляется, и т.к разрезов у РСа достаточно много, в колизии не впадает...
#67 by mistеr
Для подсчета входов-выходов и т.п. есть РН.
#68 by Вафель
Еще со времен 8.2.14, те лет 10 уже
#69 by rabbidX
в и далее по ветке говорили про счетчик документов. Если задача считать сотрудников или еще кого-то, то нам нужно измерение, которого у константы нету и вопрос об ее использовании отпадает.
#70 by Вафель
Конечно без понимания задачи посоветовать ничего нельзя
#71 by mistеr
Можно подробности? С первичными бизнес требованиями.
#72 by Вафель
документы считать лучше вообще при формировании отчета. Явно что этот отчет не такая частая функция
#73 by Вафель
Если это нумератор, то лучше регистр ибо 146% потом потребуются разные разрезы
#74 by rabbidX
Ну смотрите, постоянно меняющиеся данные, общие для всей базы - это какие-нибудь суммируемые показатели, которые в явном виде хранить не нужно, проще посчитать. Если логика работы со значением, не предполагает его параллельного изменения, пользуйтесь константами, сколько влезет.
#75 by Aleksey
А что там непонятно.  Управленческая база, нужна своя нумерация в разрезе юрлиц, но при этом учет ведется по компании в целом Вариант 1, мы меняем типовой номер в документах в зависимости от признака (ну например от юрлица). Т.е. меняем типовой код и периодичность. Вариант 2. Типовой номер не трогаем, а реализуем свою нумерацию, т.е. без изменения типовой в рамках подписки на событие (или в рамках расширения)
#76 by Aleksey
Что значит проще посчитать? Например нужен инкрементный счетчик для обмена, или свой уникальный номер справочников и документов
#77 by Fedor-1971
Да без проблем: необходимо реализовать нумерацию документов (для разных фирм своя периодичность формирования номера, вида: ГГГГ БН где ГГГГ - номер в пределах года, Б - установленная баква для данного вида документа, Н - количество счетов в пределах данной буквы). Номера задаются шаблоном номера в справочнике фирм. Периодичность,на выбор, в пределах года, месяца, дня. Реализовал конечный автомат разбора шаблона номера и 3 РС со счётчиками по фирмам и периодичности (3 возможных периода). Рассматривал возможность использовать константу для каждого периода, не получилось, слишком медленно.
#78 by Fedor-1971
77+ в основном, нумерация подключалась к выставленным счетам
#79 by rabbidX
ПриУстановкеНовогоНомера не  пробовали использовать? Можно же без лишних объектов было обойтись.
#80 by Aleksey
а как он поможет? Например типовая нумерация документа в течении года. Мне нужно реализовать нумерацию в течении месяца/дня. И чем мне поможет при установки нового номера?
#81 by Вафель
В ДО однако не обошлись
#82 by mistеr
Ты описал реализацию. А я просил прикладную задачу.
#83 by Fedor-1971
нельзя. С одной стороны раные шаблоны: у одной фирмы шаблон "ГГГГ БН" у другой "ДДММГГ-ВВ" где ВВ - номер в пределах дня. С другой: если одновременно записывают 2 человека документы тупо получат одинаковый номер без наличия счётчика.
#84 by rabbidX
Запросом вычислять. Но, это все-таки медленно, согласен.
#85 by Serg_1960
Как говаривал незабвенный наш гений: "Мой гений дарит вам..."(цы) Цель не скрываю: сбить с толку :) Добавляем справочник (с наименованием например, "Сonstant") и реквизитами "КакЧисло", "КакДата" и т.д.; все строки - предопределенные (имя преопределенной и имя константы - совпадают). Правила работы просты: "одна строка - одна константа". Тогда к псевдо-константам можно будет обращаться "напрямую". Например, к константе "Счетчик_Х"(тип: число) можно обратиться так: Сonstant.Счетчик_Х.Число (где "Сonstant" - наименование справочника; "Счетчик_Х" - предопределенная строка; "КакЧисло" - реквизит справочника)... :)
#86 by Aleksey
Вычислять что? мы же говорим про типовую команду ПриУстановкеНовогоНомера, а там чем запрос нам поможет?
#87 by Timon1405
вся соль не в вычислении макс номера запросом, а в его блокировке на запись
#88 by Fedor-1971
т.е. "Надо разные номера ... по шаблону" это не описание прикладной задачи?
#89 by Serg_1960
Тема нумерации навеяло одну смешную тему -
#90 by Aleksey
у меня есть похожая реализация, только там еще колонка период. И соответсвенно новый период - новая нумерация.
#91 by mistеr
Нет. "Прикладная" - это значит "что попросил бизнес", его языком. А шаблоны и прочее уже ты придумал.
#92 by Aleksey
почему бизнес не может попросить шаблон?
#93 by Fedor-1971
это попросил бизнес шаблон номера и периодичность его формирования
#94 by Fedor-1971
93+ Реализация: конечный автомат + техника дела для счётчиков
#95 by rabbidX
Установить управляемую блокировку там не проблема, но это уже офтоп, т.к. константы там негде использовать.
#96 by Fedor-1971
маленькая поправка: у ТС константа используется для реализации счётчика
#97 by mistеr
Может, если это бизнес по придумыванию и продаже шаблонов. И ты не пытался выяснить зачем?
#98 by rabbidX
Установить блокировку на таблицу документа в нужном разрезе, посчитать количество записанных доков, сформировать номер.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С