8.1 фоновое задание и ОбновитьНумерациюОбъектов() #247577


#0 by GStiv
В связи с проблемами  нумерации документов в 8.1 при решении проблемы наткнулся на  ОбновитьНумерациюОбъектов; В помошнике сказано Выполняет обновление номеров в соответствии с номерами, записанными в базе данных. После вызова данного метода все выданные, но не записанные номера, становятся невалидными, т.к. не гарантируется их уникальность. Данный метод разрешено вызывать только администратору системы. В течении дня переодически запускал эту команду, пока проблем не выявленно. Может кто подскажет какие могут быть проблеммы, при использовании данного метода, и попутно второй вопрос если не возникает противопоказаний, то каким образом заставить ее выполняться в фоновом режиме предположим по таймеру
#1 by tsr
В регламентных задачах настрой период срабатывания. Сделай функцию в неглобальном модуле и вызывай как фоновое задание. А вообще в описании языка про это подробно сказано. Но проблемы могут быть еще более печальные, чем при пропуске номеров. Если с базой работают параллельно несколько юзеров, то начнуться ошибки при записи новых документов.
#2 by GStiv
То есть ситуация может быть такая 1 юзер открыл новый документ, далее идет команда, второму при создании документа выдаст тот же номер что и у первого который еще не записал, так понимаю
#3 by tsr
Точна
#4 by GStiv
Может тогда метод имеет смысл вызывать при проведении документа в самом конце, интересует для нескольких документов
#5 by tsr
Мы пока сами в тупике. Думаем, как эту новую проблему победить. Предлагаю на форуме устроить мозговой штурм:) Вобщем фирма 1С не дает расслабляться
#6 by tsr
Только ветку нужно назвать по другому.
#7 by tsr
Есть и другие моменты. Попробуй в документе поменять несколько раз организацию и увидишь. У нас такое постоянно происходит. Ибо один чел ведет сразу несколько фирм. При открытии нового дока автоматически пишется организация по умолчанию. Затем она меняется. Номер естественно пропадает навсегда. Очень неприятная ситуевина.
#8 by GStiv
Ветка по поводу нумерации уже есть но пока решения там к сожалению нет, кроме того что при записи искать последний номер и +1, но это не решение проблемы
#9 by tsr
Есть такой вариант: В глобальнике в процедуре при установке нового номера выдавать номер без преффикса. Затем перехватывать событие передЗаписью и в нем нумеровать уже с преффиксом. Может это и не самый удачный вариант. Но пока только этот
#10 by GStiv
Выдавать номер? если правильно понимаю искать последний +1 а два человека открыли документ, и у обоих один и тот же номер. Не вариант, или я неправильно понял реализацию
#11 by tsr
Все доки юзают Функцию УстановитьНомерДокумента(ДокументОбъект) Экспорт из глобального модуля. Вот в ней выдавать номер дока без преффикса. После этого перед записью проверять КонецЕсли; В этом случае номер будет и так уникальным. При таком способе можно использовать и ОбновитьНумерациюОбъектов;
#12 by GStiv
Так же все и вот эту (УПП 1.2) В принципе можно и здесь вставить, но как будет правильно, после выдачи номера делать сброс?
#13 by tsr
В принципе сброс можно и не делать номерация будет перепрыгивать только в нумераторе без преффикса. Ну и бог с ней, пускай прыгает. Но можно и сбрасывать. Не обязательно каждый раз. Можно и один раз в сутки. ИМХО
#14 by Худой
А чем, например, не подходит такой алгоритм? - Не трогать номера документа, вообще. А перед записью его в базу, вставать на конец. Считывать последний номер. Присваивать записываемому документу "Считанный последний номер+1".
#15 by tsr
Каким образом не трогать? По умолчанию номер документу присваивается, т.к. это обязательный реквизит. Можно насильно его очищать. Но это тоже самое и получится
#16 by tsr
В таком подходе есть недостаток. Юзер не увидит новый номер документа, пока не запишет док. Придется всем объяснять
#17 by Ромарио
Интересно а сама фирма 1С что-нить отвечает по поводу нумерации? Будет ли исправлено и когда?
#18 by tsr
Это их фича. Описана в документации. Кто-то решил, что так будет все хорошо. На счет блокировок это конечно хорошо, а вот для документооборота, не очень
#19 by Ромарио
То есть в принципе юзер должен понимать, что если он начал создавать новый документ, то он должен обязательно_его_записать и тогда проблем с нумерацией не будет, так?
#20 by Scooter
а если док незапишется? я про тот случай когда жмут кнопку ОК (записать+провести), ну там блокировки или чтото незаполнено?
#21 by tsr
Если док не запишется, номер не изменится. Если запишется, то однозначно номер будет занят. ИМХО должно работать. Если есть другие предложения, было-бы интересно послушать
#22 by GStiv
тогда получаеться что в запросе по поиску номера нужно устанавливать еще и условие если нумератор в пределах года тогда выбрать за год (датаДокумента) так получаеться, а как получить нумератор в пределах года или у документов единий нумератор (у нескольких), ситуация банально, сейчас начало года и некоторые документы идут еще от прошлого года, или же ставить условие что это должно работать только в пределах этого года
#23 by tsr
Зачем запрос то? посмотри . Программа автоматом найдет последний номер
#24 by Худой
Ну и хрен с ним. Нехай "по умолчанию номер документу присваивается". При записи ставить нормальный номер через обработку. Какие тут проблемы?
#25 by tsr
В общем получилось следующее: Перехватываем событие ПередЗаписью.
#26 by tsr
Работать будет только с докуами у которых есть префикс
#27 by tsr
Пардон, не учли кое-что. Вот такая функция: (Грузоотправитель в типовой не нужен)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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