![]() |
![]() |
|
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
Стажер_1С 26.07.18 - 12:46 | Привет! В документе автоматическая нумерация, сам документ не типовой.
Создаем документ,ничего в нем не делаем,просто сразу закрываем его, ТО ЕСТЬ ДОКУМЕНТ НЕ СОЗДАН!!.При открытие документу присваивается номер 1. Создаем снова документ,и номер уже равен 2 Если закрыть 1с и снова открыть. Вновь создать документ номер =1 В чем может быть причина? | ||
Стажер_1С 1 - 26.07.18 - 12:48 | Кэш почистила. Создала даже новый нумератор с автонумерацией,не помогло | ||
МимохожийОднако 2 - 26.07.18 - 12:48 | Когда 1С закрывается,то барабашка (кэш) умирает. | ||
1Сергей 3 - 26.07.18 - 12:48 | >>Создаем документ,ничего в нем не делаем,просто сразу закрываем его, ТО ЕСТЬ ДОКУМЕНТ НЕ СОЗДАН!!.При открытие документу присваивается номер 1.
Если ты не записывала документ, то чего ты там открываешь? | ||
МимохожийОднако 4 - 26.07.18 - 12:50 | У неё семёрка | ||
Cyberhawk 5 - 26.07.18 - 12:50 | (3) Форму не записанного в БД объекта, очевидно же | ||
Стажер_1С 6 - 26.07.18 - 12:50 | (3) Да я бы такое и не подумала сама посмотреть.Просто заказчик сказал: - вот смотри,я решил создать документ,а потом передумал. Потом в течение дня все таки решил его создать,и смотрю нумерация уже равна 2 | ||
Стажер_1С 7 - 26.07.18 - 12:51 | (4) Платформа 8.3 конф-я: Бухгалтерия государственного учреждения, редакция 1.0 (1.0.52.7) | ||
Стажер_1С 8 - 26.07.18 - 12:51 | (5) Можно поподробнее | ||
Cyberhawk 9 - 26.07.18 - 12:53 | Не путай запись объекта в БД и механизм нумерации, выдающий очередной номер | ||
Быдло замкадное 10 - 26.07.18 - 12:54 | ПриОткрытии АвтонумерацияВФорме = Ложь; Рекламное место пустует | ||
Малыш Джон 11 - 26.07.18 - 12:54 | (10) это БГУ, её с поддержки обычно не снимают... | ||
Стажер_1С 12 - 26.07.18 - 12:55 | (10) Если я откл автонумерация,ты предлагаешь,чтобы они ручками вбивали номер? | ||
Стажер_1С 13 - 26.07.18 - 12:55 | (11) это снята полностью,там живого места нет | ||
Стажер_1С 14 - 26.07.18 - 12:55 | (9) Так и как можно решить мою проблему???Я не знаю даже где смотреть | ||
Cyberhawk 15 - 26.07.18 - 12:55 | (12) Номер будет выдаваться при записи объекта в БД | ||
Быдло замкадное 16 - 26.07.18 - 12:55 | |||
Cyberhawk 17 - 26.07.18 - 12:56 | (14) Какую проблему? Это штатное поведение механизма нумерации | ||
Малыш Джон 18 - 26.07.18 - 12:56 | (13) тогда без проблем делай, как в (10) | ||
Малыш Джон 19 - 26.07.18 - 12:57 | |||
Стажер_1С 20 - 26.07.18 - 12:57 | (16) Окей,сейчас,посмотрю,отпишусь | ||
Стажер_1С 21 - 26.07.18 - 12:58 | Поле объекта недоступно для записи (АвтонумерацияВФорме)
АвтонумерацияВФорме = Ложь; | ||
Быдло замкадное 22 - 26.07.18 - 12:58 | |||
Стажер_1С 23 - 26.07.18 - 12:59 | (22) да уже посмотрела,спасибо) | ||
Стажер_1С 24 - 26.07.18 - 12:59 | сейчас проверю | ||
Стажер_1С 25 - 26.07.18 - 13:01 | не помогло | ||
1Сергей 26 - 26.07.18 - 13:01 | (25) номер проставляется до записи? | ||
Стажер_1С 27 - 26.07.18 - 13:03 | (26) да,сразу при открытие | ||
Быдло замкадное 28 - 26.07.18 - 13:03 | (27) =0 как так.. ты при открытии написал Автонумерация = АвтонумерацияВФорме.НеИспользовать; ? | ||
МимохожийОднако 29 - 26.07.18 - 13:03 | (25) Открой документ и посмотри раздел Нумерация. Есть ли там Нумератор и флажок Автонумерация? | ||
Стажер_1С 30 - 26.07.18 - 13:04 | (29) есть | ||
Стажер_1С 31 - 26.07.18 - 13:04 | (28) Да при открытие,в форме модуля,так и написала.Отладчиком остановила там,а он уже присвоил номеру значение | ||
Стажер_1С 32 - 26.07.18 - 13:05 | (29) более того,я создала новый нумератор,и добавила его в документ | ||
1Сергей 33 - 26.07.18 - 13:05 | (31) в свойствах формы поменяй | ||
МимохожийОднако 34 - 26.07.18 - 13:05 | (30) Что есть, партизанен? | ||
Стажер_1С 35 - 26.07.18 - 13:06 | (33) что?? | ||
Кай066 36 - 26.07.18 - 13:07 | (27) Так не должно быть. В типовых номер присваивается(а значит и занимается) при записи | ||
МимохожийОднако 37 - 26.07.18 - 13:07 | выкинь нумератор для начала | ||
Стажер_1С 38 - 26.07.18 - 13:08 | |||
1Сергей 39 - 26.07.18 - 13:08 | |||
1Сергей 40 - 26.07.18 - 13:09 | Если там ОФ, конечно | ||
Стажер_1С 41 - 26.07.18 - 13:09 | (39) да нашла,делаю | ||
Стажер_1С 42 - 26.07.18 - 13:10 | (40) что такое оф?у меня там авто стояло | ||
1Сергей 43 - 26.07.18 - 13:10 | |||
Стажер_1С 44 - 26.07.18 - 13:11 | (43) да обычные | ||
Стажер_1С 45 - 26.07.18 - 13:11 | вроде,ну я определяю что тут нет сервер и клиент,а просто все | ||
Стажер_1С 46 - 26.07.18 - 13:14 | |||
Стажер_1С 47 - 26.07.18 - 13:14 | ВСЕМ БОЛЬШОЕ СПАСИБО | ||
1Сергей 48 - 26.07.18 - 13:14 | (46) Фотку поставь в профиль :) | ||
Стажер_1С 49 - 26.07.18 - 14:25 | (48) как -нибудь) Рекламное место пустует | ||
aleks_default 50 - 26.07.18 - 17:53 | (48) Продинамила:) | ||
Малыш Джон 51 - 26.07.18 - 21:01 | (50) Ну, не удивительно) | ||
Стажер_1С 52 - 30.07.18 - 09:32 | |||
Serg_1960 53 - 30.07.18 - 10:23 | (для справки)
От автонумерации в форме объекта (перед записью) отказались ещё когда была платформа 8.1, но оставили для совместимости с платформой 8.0 (точнее для совместимости работы конфигураций, написанных под платформу 8.0). Источник: https://its.1c.ru/db/metod8dev#content:1550:hdoc "Свойство Автонумерация формы объекта (элемента справочника, документа...) отвечает за автоматическое получение номера при открытии формы. Если в этом свойстве указано значение НеИспользовать, это означает, что при открытии формы номер будет не заполнен и он будет получен автоматически при записи объекта." | ||
Стажер_1С 54 - 31.07.18 - 08:11 | (53) Раз отказались ,тогда почему на 8.2 без этой галочки не работало? | ||
Serg_1960 55 - 31.07.18 - 09:37 | (54) Всё работало и без этой галочки. Просто нужно было хотя бы чуть-чуть иметь представление как это работает в типовых конфигурациях.
"Вы не любите кошек? Да вы просто не умеете их готовить!"(Альф, инопланетянин). | ||
Cyberhawk 56 - 31.07.18 - 09:39 | (55) "иметь представление как это работает в типовых конфигурациях" // А вот кстати вопрос на засыпку по механизму выдачи номеров: почему при первом обращении к менеджеру нумерации он далает запрос к БД (максимальному номеру) без блокировки? | ||
Serg_1960 Модератор 57 - 31.07.18 - 10:24 | (56) Достаточно включить логику :) Наверное потому, что для работы механизма автонумерации нужна инициализация первоначальных значений (максимальный номер пространства автонумерации). Ведь далее механизм автонумерации работает автономно от данных информационной базы - ему же нужно с чего-то (с каких-то значений) начинать нумерацию. | ||
Cyberhawk 58 - 31.07.18 - 10:30 | (57) Ты, видимо, не обратил внимание на последнее слово в моем вопросе, а ведь в нем вся соль | ||
Serg_1960 Модератор 59 - 31.07.18 - 10:59 | (58) Вы, видимо, забыли выделить в чём именно Ваша соль в вопросе :) А Вы не находите, что эта "соль" более из области блокировки данных, механизма транзакционных блокировок? | ||
Cyberhawk 60 - 31.07.18 - 11:05 | (59) Короче этот механизм выдачи номера может облажаться:
0. Сеанс 1 затребовал от механизма нумерации выдать этому сеансу очередной номер для какого-то документа какого-то вида. 1. Механизм нумерации понимает, что это первое к нему обращение, и считывает из БД максимальный номер этого вида документа. 2. Сеанс 2 пишет в БД документ этого же вида с номером, который механизм из пункта 1 выдаст потребителю в пункте 3. Этот номер сеанс 2 не получает от механизма нумерации, а вычисляет по какому-то своему алгоритму. 3. Механизм прибавляет к считанному номеру единичку и отдает Сеансу 1. 4. Сеанс 1 пишет документ с полученным номером и получает отлуп "Значение <такой-то номер> поля "Номер" не уникально". А вот если бы считывание в пункте 1 было блокирующее, тогда вероятность ошибки из пункта 4 была бы исключена. | ||
вым 61 - 31.07.18 - 11:24 | (60) а теперь смодулируй поведение если в начале дня кто-то получил номер с блокировкой и оставил незаписанный документ до конца дня | ||
Cyberhawk 62 - 31.07.18 - 11:27 | (61) Ты что-то не понял. Блокировать не нужно до завершения записи документа - блокировать достаточно до завершения чтения и отдачи первого затребованного от механизма номера. Как только механизм нумерации отдал вычисленный номер, блокировка снимается. | ||
Serg_1960 Модератор 63 - 31.07.18 - 11:41 | (60) А теперь проанализирует первое обращение в момент, когда в базе есть запись с незавершённой транзакцией (в которой содержится искомый максимальный номер), учитывая что транзакция может быть позже а)завершена или б)отменена. | ||
Serg_1960 64 - 31.07.18 - 11:47 | И кстати: я могу перечислить много (поверьте это не преувеличение) реальных ситуаций, когда автонумерацию может заглючить на банальное "номен[код] не уникален". Только смысла не вижу в ловле блох - другого механизма у платформы нет. Ешьте кактус :) | ||
Cyberhawk 65 - 31.07.18 - 11:52 | (63) Вот видишь, еще один косяк. Но в предложенном тобой сценарии инсерт в БД ничего такого не блокирует, поэтому механизму нумерации хватило бы грязного чтения макс. номера из таблицы документов | ||
Cyberhawk 66 - 31.07.18 - 11:53 | Хотя этот механизм, вероятно, так и делает (грязное, NOLOCK) | ||
1Сергей 67 - 31.07.18 - 11:53 | (65) Помимо дублирования номеров есть проблема дырок в номерах | ||
Cyberhawk 68 - 31.07.18 - 11:57 | (67) Эта проблема есть и тогда, когда механизм нумерации работает без обращения к БД (со своим проинициализированным счетчиком). И в общем случае это проблемой не является. | ||
Serg_1960 Модератор 69 - 31.07.18 - 12:04 | (65) Да нет там никакого "косяка". Просто это был вопрос на засыпку, но уже от меня :)
Максимальный номер будет получен и учтён как "выданный". Когда транзакция будет завершена - механизм поступит так, как указано у настройках - полученный номер будет зафиксирован как использованный или как заблокированный, или вновь выдан в качестве свободного. Нужный ответ уже есть в тексте статьи. Например: "При фиксации транзакции блокированные свободные номера удаляются из списка свободных, а при откате транзакции разблокируются и снова могут использоваться для получения очередного номера." | ||
Cyberhawk 70 - 31.07.18 - 12:07 | (69) "Когда транзакция будет завершена" ... сеанс получит отлуп по неуникальности номера :) | ||
Serg_1960 Модератор 71 - 31.07.18 - 12:13 | (70) Эээ... не зачёт :) Вообще-то твой первый вопрос (и мой) был только о первом обращении к базе за получением максимального номера. А "номер не уникален" - это уже из другого режима работы механизма :)) | ||
Serg_1960 72 - 31.07.18 - 12:18 | Механизм автонумерации использует неблокирующие чтение по простой причине - ему не с кем конкурировать, он же сам по себе уникален (по определению) - это же так просто понять :)) | ||
Cyberhawk 73 - 31.07.18 - 12:30 | (71) Ну так как бы все те мои сообщения и направлены на то, что при первом блокирующем чтении макс. номера одна из ситуаций получения такого отлупа исключается | ||
Cyberhawk 74 - 31.07.18 - 12:30 | (72) Как это не с кем - выданный номер потом записывается в БД, где есть контроль уникальности номеров | ||
Serg_1960 75 - 31.07.18 - 14:33 | Фах :) Я понимаю что Вы хотите сказать, но Вы выбираете неудачно термины.
Механизм автонумерации может... как Вы сказали... эээ... "механизм выдачи номера может облажаться"(цы) - для этого (и в том числе) существует механизм контроля уникальности номеров. Но это вовсе не означает что они "конкурируют". И даже не означает что они "конфликтуют" - это в данных информационной базы возникает конфликт, а не в механизмах. Это различные механизмы платформы, работают каждый сам по себе и независимо друг от друга - они не могут "конкурировать" или "конфликтовать" между собой. | ||
Cyberhawk 76 - 31.07.18 - 14:39 | Куда-то тебя понесло.
Еще раз: есть механизм, выдающий номер. И при определенных сценариях этот номер не может быть записан в БД. Мною описано предложение, как один из таких сценариев исключить на корню. Не ясно, почему платформа не следует ему. | ||
DTX 4th 77 - 01.08.18 - 19:21 | (56) Не понял, что блокировать предлагаешь? | ||
Cyberhawk 78 - 02.08.18 - 09:21 | |||
DTX 4th 79 - 02.08.18 - 10:20 | (78) В какой момент сеанс требует номер? Если в момент записи, то таблица и так будет заблокирована. А если при открытии формы, то ошибку из пункта 4 это бы не исключило. | ||
Serg_1960 80 - 02.08.18 - 10:45 | (78) Ваш "сценарий" содержит несколько выдуманных теоретических допущений и нарушений, которые сводят на "нет" всю Вашу аргументацию. Не дошло? Ок, объясню, озвучив одно из них: "...не получает от механизма нумерации, а вычисляет по какому-то своему алгоритму". Всё, все свободны, механизм автонумерации - убогий механизм платформы :)
(офф) Можно ли сказать, например, что коробка передач автомобиля - несовершенный механизм? Конечно же "да"! Я знаю как работает механизм --> я знаю как нарушить его работу. В коробу передач я могу насыпать песку :) Несовершенен механизм? Конечно же "да" - коробка передач на песке не работает! :)) | ||
Cyberhawk 81 - 02.08.18 - 11:01 | (79) В транзакции записи нового | ||
DTX 4th 82 - 02.08.18 - 11:03 | (81) Вообще, да, логично предложить лочить на чтение, что если транзакция зависнет, то всё сломается. А если не генерить номер руками, то всё и так будет ок. |
|
Список тем форума
|
Правила | Описание | Реклама на форуме | Волшебные решения | Поиск | Секции | Рейтинг | Книга знаний | Вики-миста (КЗ2) | Мобильная | Архив | Модераторы | Галерея | Регистрация | 18+ |