Гость
Map
Форумы / ERP [закрыт для гостей] / Страшная история про 1С / 25 сообщений из 37, страница 1 из 2
24.05.2022, 16:37
    #45578
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
6 лет назад возникла задача генерировать гарантированно уникальный номер в файловой 1С 7.7. Не смейтесь. Бывает.
Причем в 1С есть встроенный механизм, который это делает, но он работает только для кодов документов. То есть, если хочешь сгенерировать уникальный номер, надо в конфигураторе создать фейковый документ и журнал к нему, а потом в работе создать документ и получить его код. Задействовать этот механизм без создания лишних пустых документов наверное, можно, но я не нашел, как. И пошел своим путем. Это вообще пиздец. Как вспомню, остатки волос дыбом на голове встают. Дальше слабонервным не читать.

Я написал на Дельфи DLL-плагин к 1Ске, который работает со своей отдельной фокспрошной DBFиной и просто записывает в нее уже выданный номер и дату, когда этот номер был выдан. По задумке, уникальность номера была гарантирована. Плагин создавал лок-файл, работал с dbf, убирал лок-файл. Поскольку все пользователи работали в терминале, все это происходило на одном компе, в одном каталоге, все должно быть пучком.

В общем, сегодня выяснилось, что номера задваиваются. Иногда. Очень редко. На меня смотрят с удивленными глазами, а я делаю задумчивое и немного загадочное лицо.

Провели эксперимент, два человека нажали на кнопку генерации номера одновременно, по щелчку пальцев. Номера получились уникальные.

Дэбээфина выросла до 1.5 МБ. Может, ее почистить?

Да хуй с ней, этой дэбээфиной. Как теперь с этим жить?
...
Рейтинг: 0 / 0
24.05.2022, 16:48
    #45587
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Просто Трёп  24.05.2022, 16:37
[игнорируется]
Как теперь с этим жить?
Перепиши заново.
...
Рейтинг: 0 / 0
24.05.2022, 16:53
    #45589
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Горбатый ёж  24.05.2022, 16:48
[игнорируется]
Перепиши заново.
Прямо вот так?
Просто Трёп  24.05.2022, 16:37
[игнорируется]
на Дельфи DLL-плагин к 1Ске, который работает со своей отдельной фокспрошной DBFиной
...
Рейтинг: 0 / 0
24.05.2022, 18:30
    #45612
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Просто Трёп [игнорируется] 

Тебе виднее.
Я в 1С дуб-дубыч.
...
Рейтинг: 0 / 0
24.05.2022, 18:34
    #45614
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Просто Трёп  24.05.2022, 16:37
[игнорируется]
6 лет назад возникла задача генерировать гарантированно уникальный номер в файловой 1С 7.7. Не смейтесь. Бывает.
Причем в 1С есть встроенный механизм, который это делает, но он работает только для кодов документов. То есть, если хочешь сгенерировать уникальный номер, надо в конфигураторе создать фейковый документ и журнал к нему, а потом в работе создать документ и получить его код. Задействовать этот механизм без создания лишних пустых документов наверное, можно, но я не нашел, как. И пошел своим путем. Это вообще пиздец. Как вспомню, остатки волос дыбом на голове встают. Дальше слабонервным не читать.

Я написал на Дельфи DLL-плагин к 1Ске, который работает со своей отдельной фокспрошной DBFиной и просто записывает в нее уже выданный номер и дату, когда этот номер был выдан. По задумке, уникальность номера была гарантирована. Плагин создавал лок-файл, работал с dbf, убирал лок-файл. Поскольку все пользователи работали в терминале, все это происходило на одном компе, в одном каталоге, все должно быть пучком.

В общем, сегодня выяснилось, что номера задваиваются. Иногда. Очень редко. На меня смотрят с удивленными глазами, а я делаю задумчивое и немного загадочное лицо.

Провели эксперимент, два человека нажали на кнопку генерации номера одновременно, по щелчку пальцев. Номера получились уникальные.

Дэбээфина выросла до 1.5 МБ. Может, ее почистить?

Да хуй с ней, этой дэбээфиной. Как теперь с этим жить?
Номер подлиньше и генератор случайных чисел, на 1С. Где нибудь хранить предыдущее значение.
...
Рейтинг: 0 / 0
24.05.2022, 22:08
    #45802
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Дата время тики

Гарантированно уникальные
...
Рейтинг: 1 / 0
Нравится: Владайка
24.05.2022, 22:51
    #45910
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Если 1С умеет генерить GUID, то пользуйтесь ими: MS гарантирует уникальность. Почему у вас на номер не создан уникальный индекс?
...
Рейтинг: 0 / 0
24.05.2022, 23:31
    #45976
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Не, там гуиды и случайные числа не катят. Нужны номера по порядку.

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

1С 7.7
DLL
Драйвер фокс про
дбф
файловая система на сервере, где кроме виндового кэша кэш контроллера и дисков, в многопользовательском режиме.

самая жопа - драйвер фокс про.

Все это нагромождение просто не может работать надежно, а где происходит ошибка, хуй поймешь.
...
Рейтинг: 0 / 0
25.05.2022, 06:21
    #46208
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Вообще автоинкремент даже в дбф гарантирует уникальность

Надо сильно постараться сделать бд несетевой
...
Рейтинг: 0 / 0
25.05.2022, 07:41
    #46228
Горбатый ёж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
eNose  25.05.2022, 06:21
[игнорируется]
Вообще автоинкремент даже в дбф гарантирует уникальность
Ему дырки не нужны.
...
Рейтинг: 0 / 0
25.05.2022, 09:12
    #46251
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Горбатый ёж  25.05.2022, 07:41
[игнорируется]
eNose  25.05.2022, 06:21
[игнорируется]
Вообще автоинкремент даже в дбф гарантирует уникальность
Ему дырки не нужны.
очень зря

дырки нужны на всякий случай
...
Рейтинг: 0 / 0
25.05.2022, 10:44
    #46315
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Если переписывать, что делать? Может, действительно отказаться от всего нештатного и забубенить фейковый документ? Ну лишний документ, ну и хуй с ним. Там в этой конфигурации и так всякого ваговна. Ложкой больше, ложкой меньше... Работать, правда, будет медленней.
И еще нужен функционал освобождения номера. То есть, если один юзверь решил отказаться от номера, который занял, номер должен освободиться и другой юзверь должен его занять. А 1С-ка такого не позволит. Будет выдавать просто по порядку.
...
Рейтинг: 0 / 0
25.05.2022, 10:56
    #46317
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Просто Трёп  25.05.2022, 10:44
[игнорируется]
Если переписывать, что делать? Может, действительно отказаться от всего нештатного и забубенить фейковый документ? Ну лишний документ, ну и хуй с ним. Там в этой конфигурации и так всякого ваговна. Ложкой больше, ложкой меньше... Работать, правда, будет медленней.
И еще нужен функционал освобождения номера. То есть, если один юзверь решил отказаться от номера, который занял, номер должен освободиться и другой юзверь должен его занять. А 1С-ка такого не позволит. Будет выдавать просто по порядку.
-Сделай документ номер, в реквизитах будет пользователь, и передавай как документ.
...
Рейтинг: 0 / 0
25.05.2022, 11:28
    #46334
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Попадробнее, пожалуйста.
...
Рейтинг: 0 / 0
25.05.2022, 11:46
    #46358
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Просто Трёп  25.05.2022, 11:28
[игнорируется]
Попадробнее, пожалуйста.
Документы это для отражения деятельности предприятия. Сделай документ, который отражает выдачу номера, он не фейковый будет, а вполне рабочий.
...
Рейтинг: 0 / 0
25.05.2022, 11:49
    #46363
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Просто Трёп  25.05.2022, 10:44
[игнорируется]
И еще нужен функционал освобождения номера. То есть, если один юзверь решил отказаться от номера, который занял, номер должен освободиться и другой юзверь должен его занять.
чо за бред???

а если с момента выдачи до момента отказа номера успели получить 100500 человек?
...
Рейтинг: 0 / 0
25.05.2022, 11:52
    #46367
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
eNose  25.05.2022, 11:49
[игнорируется]
Просто Трёп  25.05.2022, 10:44
[игнорируется]
И еще нужен функционал освобождения номера. То есть, если один юзверь решил отказаться от номера, который занял, номер должен освободиться и другой юзверь должен его занять.
чо за бред???

а если с момента выдачи до момента отказа номера успели получить 100500 человек?
Тем более в документ номера писать какому юзеру он принадлежит и свободный ли. Если номер свободный, то можно другому передать.
...
Рейтинг: 0 / 0
25.05.2022, 12:02
    #46379
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
IT-Христ  25.05.2022, 11:52
[игнорируется]
eNose  25.05.2022, 11:49
[игнорируется]
Просто Трёп  25.05.2022, 10:44
[игнорируется]
И еще нужен функционал освобождения номера. То есть, если один юзверь решил отказаться от номера, который занял, номер должен освободиться и другой юзверь должен его занять.
чо за бред???

а если с момента выдачи до момента отказа номера успели получить 100500 человек?
Тем более в документ номера писать какому юзеру он принадлежит и свободный ли. Если номер свободный, то можно другому передать.
то есть держать таблицу освободившихся номеров?
что делать если двое одновременно запросят номер? им обоим опять придёт один и тот же?
...
Рейтинг: 0 / 0
25.05.2022, 12:04
    #46381
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
лучше уж на делфи сваять dll, которая организаует стек fifo

ну и там выдавать номера, в том числе освободившиеся
...
Изменено: 25.05.2022, 12:04 - eNose
Рейтинг: 0 / 0
25.05.2022, 14:03
    #46481
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
eNose  25.05.2022, 12:04
[игнорируется]
лучше уж на делфи сваять dll
У меня до сих пор есть сомнения в этом подходе, хотя он уже отработал 6 лет. Вот есть 20 терминальных юзверей, каждый запустил по процессу, по нажатию кнопки этот процесс подгружает dll, которая должна выдать инфу, которую отосрали предыдущие пользователи, нажавшие эту кнопку. Поскольку процессы все друг от друга изолированы, нужно найти что-то, что может хранить инфу от всех пользователей. Это может быть файловая система, база данных, служба, к которой можно коннектиться по сети или через шаред мемори. Все это нужно грамотно организовать, используя вменяемые инструмены, а не фокспрошную dbf.
А в 1С это все есть из коробки. И блокировки ресурсов, и автоинкримент, все. Просто язык тупой, начинаешь на нем писать что-то нестандартное, получается какой-то пиздец. Или просто "так низя".
Думаю, надо было все-таки одинэсника нанять.
...
Рейтинг: 1 / 0
Нравится: Владайка
25.05.2022, 14:14
    #46487
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
С 1С-плагином есть еще одна проблема, она регистрируется в реестре и пишет туда путь, где она лежит. И если dll лежит в каталоге с базой и кто-то создал копию базы и подгрузил плагин, никто не может точно сказать, из какого каталога dll подгрузится, из того, что в реестре, или из того, что в базе.
Это просто решается, плагин должен лежать в Program files. Но так усложняется подготовка среды для работы с базой.
...
Рейтинг: 0 / 0
25.05.2022, 15:57
    #46650
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
...
Рейтинг: 0 / 1
Не нравится: Владайка
25.05.2022, 16:44
    #46684
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
eNose  25.05.2022, 15:57
[игнорируется]
Видел. Семерка же!
...
Рейтинг: 1 / 0
Нравится: Владайка
31.05.2022, 15:25
    #52780
Шоколадный01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
по диагонали прочитал..ну и говнище ваше 1ц.
- не генерит гуидов.
- не нужны дырки в интегер .. че бля? походу такое как nummernkreis диапазон номеров на русском вообще там не слыхано?
...
Рейтинг: 0 / 0
31.05.2022, 16:22
    #52807
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшная история про 1С
Шоколадный01  31.05.2022, 15:25
[игнорируется]
по диагонали прочитал..ну и говнище ваше 1ц.
- не генерит гуидов.
- не нужны дырки в интегер .. че бля? походу такое как nummernkreis диапазон номеров на русском вообще там не слыхано?
Это старая версия 1С, новая много чего умеет.
...
Рейтинг: 0 / 0
Форумы / ERP [закрыт для гостей] / Страшная история про 1С / 25 сообщений из 37, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]