![]() |
![]() |
|
Интересует принцип нумерации документов | ☑ | ||
---|---|---|---|---|
0
Bigfil
13.10.07
✎
21:26
|
Доброго времени суток!
Вопрос такого плана - в одно и тоже время (ну с разницей может в пол минуты) по сети 2 менеджера открывают один документ и заполняют. И тот кто позже открыл - сохранил документ раньше. Вопрос - что будет когда первый пользователь попробует сохранить свой документ? Мне кажется, что выдасться сообщение об ошибке, так как номера документов совпадают. Я не ошибаюсь? И второй вопрос - можно ли какой встроеной функцией получить номер последнего сохраненного документа? Нужно если номера не резервируются на время открытия... |
|||
1
Темный Эльф
13.10.07
✎
21:37
|
1. Ошибаешься.
|
|||
2
Bigfil
13.10.07
✎
21:55
|
Хорошо, тогда как организована рабта с номерами? Если влом объяснять направьте где можно найти ответ. Сам даже не знаю где искать, в одной книге смотрел, вроде нет там ничего про это.
Суть в чем - мне нужно оформлять договора и распечатывать их. Если при открытии номер сразу резервируется - это хорошо, а если происходит потом замена - это не есть хорошо, так как после заполнения полей необходимо распечатать договор, соответственно изменение номера при сохранении сделает ошибочным договор на бумаге, а этого никак не должно происходить. В принципе как вариант - можно включить кнопку печати только после сохранения... Объясните пожалуйста человеку как работает 1С по сети. Нужно выбрать оптимальный подход. |
|||
3
Темный Эльф
13.10.07
✎
22:00
|
(2)Первый открывший получает номер к примеру 367. Второй - 368. Если ни они сами, ни программист (программно) не изменят эти номера, то такими они и останутся. Единственно, что если документ с 367 номером не сохранят, а 368 сохранят, то 367 номер выпадет.
|
|||
4
у лю 427
13.10.07
✎
22:45
|
Принципы (3) - это для семерки, вообще то логично было бы сохранить это и в восьмерке
Но т.к. разработчики платформы решили убрать узкое место платформы, то получилось как всегда - через ЖПО... так что сейчас все отдано на откуп программисту... |
|||
5
Темный Эльф
13.10.07
✎
22:58
|
(4)Можно более развернуто для дятлов. Чтобы клюв в дерево вошел...
|
|||
6
Худой
14.10.07
✎
04:16
|
(2)Неужели, влом протестировать свои мысли по этому поводу?
По поводу нумерации договоров. Мне кажется, кому какое дело до кода договора, сгенерированного системой. Там же есть номер договора. Он в документы проставляется. |
|||
7
у лю 427
14.10.07
✎
08:41
|
поищите в описаниях и на сайте 1С описание исправленных ошибок и приколов нумерации... Там ясно написано.
|
|||
8
ZyXEL
14.10.07
✎
08:49
|
(6) наверное у него под рукой просто нет лицензионной 1С :))))))
|
|||
9
ildus
14.10.07
✎
10:48
|
+(8) а ставить ломаную совесть не позволяет ))
|
|||
10
IronDemon
14.10.07
✎
13:04
|
В версии 8.0 могла быть следующая ситуация.
Пользователь А открыл форму нового документа и получил номер 0001. Пользователь Б открыл форму нового документа и получил номер 0002. Пользователь А закрыл форму без записи. Пользователь Б записал документ и закрыл форму. При следующем открытии формы нового документа будет выдан номер 0003. На месте номера 0001 имеется пропуск. При одновременной работе нескольких пользователей это было вполне частое явление. То есть никакой непрерывности в последовательности нумерации не было. Но у пользователей работающих персонально возникало ощущение, что имеется непрерывность. Что препятствовало параллельности. Механизм получения нового номера считывал максимальный номер из базы данных. Если номер формировался в транзакции (например, при записи или проведении документа создавался и записывался другой документ или элемент справочника), то, фактически, параллельность исключалась. Так как запись объекта была несовместима с получением максимального номера из базы данных (что вполне естественно). Это не сильно мешало при нумерации в момент открытия формы, но радикально снижало параллельность (исключало) при включении в конфигурации любых алгоритмов создания и записи объектов в транзакции. Значительная часть внедренцев и разработчиков решений не обнаруживало причины этой проблемы и относило полностью нарушенную параллельность на счет общей проблемы реализации многопользовательской работы в платформе. Такое часто происходило и при «очень небольших доработках» выполненных сотрудниками заказчика, что сводило на нет всю работу внедренцев сдавших вполне работоспособную систему. Фактически минимальная доработка конфигурации приводила систему к полностью последовательной работе, так как два документа не могли быть записаны одновременно. Это реально приводило к серьезным проблемам при внедрениях, и мы (если внедренец не мог сам обнаружить причину проблемы) без детального разбора работы конкретной конфигурации не могли дать рекомендацию как это исправить. То есть получалось, что непрерывной нумерации на самом деле нет, но и параллельность также не обеспечивается. Для непрерывной нумерации как в 8.0, так и в 8.1 нужно делать считывание и запись с блокировкой. Другой проблемой являлось то, что механизм нумерации основывался на наличии в памяти объекта. Если реализовывать «тонкое» клиентское место (Web или любое другое), не держащее на стороне клиента объекта, то механизм нумерации фактически переставал работать, так как полученный номер при удалении объекта из памяти освобождался и выдавался следующему пользователю в качестве нового. Соответственно, получалось, что два пользователя вводят объекты с одинаковыми номерами. Механизм нумерации 8.1 исключает обе этих проблемы. При получении номера в транзакции не возникает проблемы с параллельностью, так как, один раз считав максимальный номер из базы данных, система помнит его и автоматически увеличивает при выдаче очередного номера. Это исключает описанные (весьма серьезные) проблемы с параллельностью при доработках конфигураций, включающих создание и запись объектов в транзакциях. Это исключает проблемы с созданием специализированных клиентов, так как номер не возвращается при удалении объекта из памяти. Действительно, обратной стороной этого решения является то, что для конкретного пользователя эксперимент с закрытием формы без записи и созданием нового документа приводит к появлению пропуска. Раньше ему казалось, что система заполняет пропуски. Хотя, по сути, это было не так, но пользователь не всегда замечал это. Это пользователю можно наглядно продемонстрировать. (с) Нуралиев Сергей |
|||
11
Худой
14.10.07
✎
13:33
|
(10)Дурдом! На кой хрен присваивать незаписанному документу номер? При записи, достаточно сообщать номер документа и все.
Тупые одинЭсниги. |
|||
12
acsent
14.10.07
✎
13:41
|
(11) В типовых под 8.1 так и делается (номер появляется только при записи)
|
|||
13
у лю 427
14.10.07
✎
14:58
|
причем оба метода (8.0 и 8.1) никак не учитывают принятый разработчиками типовых конф качественный косяк, в результате действия которого могут исчезать документы...
P.S. как бы Нуралиев не ... миздел, проблему они не решили ни в ТиС, ни в УТ |
|||
14
Bigfil
14.10.07
✎
22:14
|
IronDemon, огромное спасибо)
Господа, я только начинаю программить в 1С... Пишу первую конфигурацию для организации. В организации сетевой пока нет, а следовательно проверить негде, ставить на свой комп сетевую вместо стоящей локальной пока не хочу - конфигурации не мои есть... Да и, как мне кажется, я вобще поднял довольно интересный вопрос, вон, даже Худой удивился... Всем большое спасибо, вопрос исчерпан, тему можно закрывать) |
|||
15
Wladimir_spb
14.10.07
✎
23:26
|
(14) >"сетевую вместо стоящей локальной пока не хочу"
Вы о чем? Сетевая, локальная... это вообще восьмерка? |
|||
16
Bigfil
15.10.07
✎
00:01
|
Может я конечно чего не понимаю...
8-ка, на сколько я знаю, в сетевой требуется сервер SQL, Сервер 1С, Клиент 1С. Локальная 1С у меня дома, извиняюсь, что не пояснил сразу. На работе только в планах установка сетевой 1С. Дело в том, что при конфигурировании мне необходимо открыть один и тотже документ в одно и тоже время, чего нельзя сделать при работе на компьютере с локальной 1С. Дома у меня стоит пока вторая машина, но там тоже конфигурации, а соответственно переустанавливать 1С пока нельзя и там... Вот собственно почему сам не протестил поведение 1С - негде... |
|||
17
Wladimir_spb
15.10.07
✎
00:24
|
(16) У восьмерки нет сетевых и локальных вариантов. Есть файловый и клиент-серверный, оба поддерживают многопользовательский режим. Для решения вашего вопроса ставить клиент-серверный вариант не нужно.
|
|||
18
Bigfil
15.10.07
✎
00:33
|
тааак... ясно... тогда я просто не по русски выразился... Извиняюсь, привычка говорить на упрощенном языке... Локальный = файловый, сетевой = клиент-серверный.
Владимир, большое спасибо за просвещение, я не додумался, что можно запустить еще один клиент с файловой инф. базы на одном компьютере. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |