|
1С:Предприятие
:: 1С:Предприятие 7.7 и ранее
|
|
| ||
kissolo 22.12.20 - 13:53 | Пользователи очень любят в конце года копировать документы на следующий год. Ну т.е.сейчас, в декабре, скопировали документ, и поменяли у него дату на будущий год, на январь. При этом нумерация документа осталась прежней, и очень быстро доступные номера кончаются. Приходится менять у пользователя префикс, чтобы начать нумерацию заново с другим префиксом.
И Сколько им ни говорили - при вводе документов за будущий год сначала устанавливайте рабочую дату на следующий год, а потом уже копируйте - многие этого не делают. Нумерация у документа - ежегодная. Плюс префиксы у пользователей используем. Попытался сейчас сделать, чтобы при изменении даты документа у него менялась нумерация, на новогоднюю, для этого - при изменении даты в форме документа запускать команду УстановитьНовыйНомер(ПрефиксДокументов); но это не сработало, какой был номер в старом году, такой и остался. Попытался сначала дать команду РабочаяДата(ДатаДок); чтобы он сначала рабочую дату сменил на 2021 год, и потом поменял номер - но это тоже не помогло. Конечно, можно просто при открытии документа запоминать рабочую дату программы, и при смене даты документа проверять с новой датой - и если год не совпадает, не давать менять, но хотелось бы все же менять номер документа. Такое возможно? | ||
Масянька 1 - 22.12.20 - 13:57 | (0) Кривая у вас нумерация.
В стандарте: при смене года всегда выводится предупреждение о новой нумерации. И я никогда не встречала, чтобы получались кривые номера. Что-то вы там намудрили с нумерацией. | ||
Builder 2 - 22.12.20 - 14:06 | УстановитьНовыйНомер(ПрефиксДокументов) - должен менять номер, что-то у вас не так.
Скорее всего есть документы со старыми номерами в новом году, вот и продолжается старая нумерация. Сначала надо их всех перенумеровать, если возможно. | ||
Cthulhu 3 - 22.12.20 - 14:08 | не при изменении даты надо устанавливать, а при записи. | ||
Kigo_Kigo 4 - 22.12.20 - 14:12 | (1) А они уже нахерачили там прификсов в нумерциях, вот и итог | ||
Cthulhu 5 - 22.12.20 - 14:14 | (3)+: и - да, изменение года ловить через переменную модуля.
в приоткрытии - запоминать в нее ДатаГод(ДатаДок), а п призаписи - сравнивать ее с ДатаГод(ДатаДок) и если отличие есть - устанавливать новый номер (при этом очень желательно записывать про изменение и старый номер в примечании документа - если есть такой реквизит, а он почти всегда есть - а также отмечать полную информацию об изменении номера документа в журнале регистрации). | ||
kissolo 6 - 22.12.20 - 14:34 | (1) Конфа вообще самописная, как я понял, изначально взяли бухгалтерию, судя по неиспользуемым (!) объектам метаданных, так что вполне возможно, понять бы, что сейчас делать.
(2) В Новом году есть документы, но с другими префиксами. Как я понимаю, на мой префикс они не должны влиять. (3) Какая разница? Если все равно не срабатывает? (4) Префиксы эти стандартная фишка 1с, и пускай не я это придумал изначально делать, но тем не менее, почему это не должно работать? (5) Я это делаю. Проблема в том, что новый номер при изменении года в дате документа не присваивается. | ||
Builder 7 - 22.12.20 - 14:36 | (6) совсем не присваивается? Или меняется на похожий?
Что отладчик говорит? "УстановитьНовыйНомер()" то хоть запускается? | ||
Lazy Stranger 8 - 22.12.20 - 14:42 | найди типовую ТиС и посмотри как там сделано, в принципе в (5) описано как раз оно | ||
kissolo 9 - 22.12.20 - 14:43 | (1) Посмотрел как это сделано в ТиС. Там в глобальном модуле процедура есть, которая создает документ такого же вида, присваивает ему номер и дату документа-оригинала, и потом выполняет команду
Дубликат.УстановитьНовыйНомер(СокрЛП(Константа.ПрефиксИБ) + СокрЛП(ПереданКонтекст.ЮрЛицо.ПрефиксНомеровДокументов)); В общем, то же самое, что и у меня - но с дубликатом документа, т.е. не из контекста, затем проверяет, есть ли этот номер в новом периоде, и потом этот новый номер уже присваиваем оригинальному документу... Короче все не просто так)))) | ||
kissolo 10 - 22.12.20 - 14:44 | |||
Kigo_Kigo 11 - 22.12.20 - 14:50 | (10) Потому и сделано так, делай, это рабочий вариант, ту недавно тоже танцы с бубном были, после ввода значения в поле, поле должно очистится и фокус вернутся обратно в него, так вот пришло плясать так, открывать пустую форму другой обработки модально со статусомвозврата(0), там смещать фокус в нужное поле и закрывать, куле 7-ка, она жеж сырая еще))))) | ||
kissolo 12 - 22.12.20 - 14:52 | (7) Дополнение. Сделал подряд две команды:
УстановитьНовыйНомер();УстановитьНовыйНомер(ПрефиксДокументов); номер после каждой команды меняется! Но при этом тот номер, который я получил после второй команды - совпадает с тем, который у меня изначально. Т.е. как будто он не понимает, что дата документа уже в другом периоде. Придется извращаться как в типовой... | ||
Масянька 13 - 22.12.20 - 14:52 | (11) Не фиг лезть в следующий год :) | ||
kissolo 14 - 22.12.20 - 14:54 | (13) Это нашим пользователям трудно объяснить. Особенно когда начальство "за" них. Единственное, можем или запретить менять дату на новый год, когда рабочая дата - в текущем, или вот принудительно менять номер...Второй вариант желательнее, ибо полной защиты от дурака все равно не придумаешь.. | ||
Lazy Stranger 15 - 22.12.20 - 14:55 | (12) похоже что УстановитьНовыйНомер() для уже записанного документа дату считывает из базы, а там она ещё старая, поэтому в типовой и пришлось извращаться с дубликатом документа | ||
Kigo_Kigo 16 - 22.12.20 - 14:57 | (13) Ситуации разные бывают, у меня к примеру план-наряды будущей датой делают, а другой крендель-менеджер вхерачивает расходную накладную на будущую дату(дату отгрузки) а склад по факту отгружает, ну хотят так, чеб нет то? | ||
kissolo 17 - 22.12.20 - 14:58 | (15) Я пришел к такому же выводу, т.к. при создании нового документа эта команда срабатывает, документ создается с нужным префиксом.. | ||
kissolo 18 - 22.12.20 - 16:24 | Это ппц, товарищи.... Оказывается, у этого вида документов стоит периодичность "По всем данного вида"!!!!!! Какого хрена программист, который это писал, сделал так - я ХЗ, но был в полной уверенности, что и как в остальных документах периодичность - год...
ппц... Дополнено: проверил остальные документы - у них почти у всех так... Только относительно недавно добавленные виды документов - которые именно я добавлял, там нумерация в пределах года... И чего я хочу от них???? твою же ма.... | ||
Builder 19 - 22.12.20 - 16:26 | (18) Ну собственно чудес не бывает, даже перед новым годом :)
Сейчас проверил УстановитьНовыйНомер() - прекрасно отрабатывает на записанных документах. | ||
kissolo 20 - 22.12.20 - 16:27 | ..я в трансе... | ||
Масянька 21 - 22.12.20 - 16:29 | (18) Задача так стояла... Кривые руки...
Вообще-то, прежде чем кивать на предыдущего - стоило бы с этого начать. Тем более - самописка. | ||
kissolo 22 - 22.12.20 - 16:30 | Интересно, а что будет, если я сейчас у этой кучи документов за несколько лет изменю периодичность на "в пределах года"? У меня база не рухнет?
(21) Да я был в полной уверенности. Тот программист на порядок, наверное, круче меня был, я с ним работал несколько лет. | ||
Масянька 23 - 22.12.20 - 16:36 | (22) Пробуй на копии.
Если будут проблемы - придется рисовать свою установку нового номера. И опять-таки - несколько лет не надо было, а тут вдруг - бац! | ||
Злопчинский 24 - 22.12.20 - 16:40 | //****************************************************************************** // глКонтрольДатыДокумента(ПереданКонтекст, НачальнаяДатаДокумента) // // Параметры: // ПереданКонтекст - контекст документа,из которого вызвана процедура // НачальнаяДатаДокумента - дата документа до изменения. // // Возвращемое значение: // 1 - если документу был присвоен новый номер; // 0 - если документу не был присвоен новый номер. // // Описание: // Функция определяет ситуацию, когда при изменении своей даты документ // оказывается в другом периоде нумерации документов, проверяет уникальность // номера документа, и, в противном случае, пытается присвоить документу // новый уникальный номер. // Для работы функции должна быть объявлена глобальная переменная модуля // формы документа НачальнаяДатаДокумента. В процедуре ПриОткрытии // в эту переменную должна быть записана дата документа. // Функция глКонтрольДатыДокумента() вызывается из процедуры ПриЗаписи. // В процедуре ПриЗаписи проверяется возвращаемое значение, и, если // оно равно 1 (то есть, документу присвоен новый номер), статус возврата // устанавливается в 0, то есть документ не записывается, а происходит возрат // к редактированию документа. // Функция глКонтрольДатыДокумента(ПереданКонтекст, НачальнаяДатаДокумента) Экспорт | ||
Злопчинский 25 - 22.12.20 - 16:42 | (22) база не рухнет - не должна. | ||
Масянька 26 - 22.12.20 - 16:44 | (25) Не должна и не рухнет - разные вещи.
Хотя, с другой стороны, бэкапы придумали трусы. :)))))))))))))))))))) | ||
sqr4 27 - 22.12.20 - 16:45 | пофиксите заголовок) | ||
kissolo 28 - 22.12.20 - 16:53 | (23) Руки наконец-то дошли. А так - там длина номера была достаточно длинная, и только в этом году пару месяцев назад глюки пошли изза закончившихся номеров.
(24) да-да, именно эту процедуру я и подключил у себя в базе - только она не сработала, т.к. периодичность у документа оказалась неправильная. (26) Ну я ж на копии))) И бэкапы есть, ессно. Каждую неделю в наше регламентное время по субботам запускаю. | ||
kissolo 29 - 22.12.20 - 16:54 | (27) у меня нет такой возможности. Или это к местным админам? | ||
Злопчинский 30 - 22.12.20 - 17:33 | (26) они же придумали шлемы и тормоза! Рекламное место пустует | ||
Злопчинский 31 - 22.12.20 - 17:34 | (28) Неправильную периодчинсоть у дока сразу видно.
у него ПРЕДСТИАВЛЕНИЯЕ просто типа "ЗаказНаряд №23", а для нумеруемых по периодам - "ЗаказНаряд №123 от 12.12.12" | ||
Злопчинский 32 - 22.12.20 - 17:36 | (28) "Каждую неделю в наше регламентное время по субботам запускаю."- ну ты смелый и непуганый ;-) у нас ночные полные, днём раз в 20 мин то ли разнстные то ли инкрементные, разницы особой нет так как копируются все равно самые большие файло - полностью так как они и потому большие что меняются часто ;-) | ||
bolder 33 - 22.12.20 - 20:29 | (1) +100500.точно чтото сломали ))) | ||
MWWRuza 34 - 22.12.20 - 22:52 | Лень читать всю тему, нафлудили кучу сообщений, а просто предложить спи****ь из типовой, никто не предложил? В типовой, ну точно знаю - "Упрощенке", т.к. сам в ней учет свой веду, при таких действиях предлагает - что-то типа этого: "Нумерация по каждому году начинается заново, установить новый номер документа?" - ? Чем не устраивает? | ||
Злопчинский 35 - 23.12.20 - 00:03 | (34) я хз что там у ТС не получалось, я аналогично думаю | ||
kissolo 36 - 23.12.20 - 08:20 | (31) Спасибо, не знал. Мне это как раз было странно, но почему так - не знал.
(32) Не боись, это я про 1с-ные говорил, а так-то на скуле админы тоже настроили, и чаще ессно. Просто 1с-ные я могу делать только по субботам, в другое время у нас производство круглые сутки. (34) Уже выяснили, оказывается, периодичность ранее не была правильная указана у нужного вида документа. Стояла "по всем документам". Для другого вида документов, которых тоже много - все же стоит "в течение года". Для него попробую из ТиС механизм применить, если не сработает мое решение из (0) (Пока пробовал только на первом виде документа). | ||
Builder 37 - 23.12.20 - 09:22 | (36) "Просто 1с-ные" - это как? Скопировать md и dds? Для этого надо всех выгонять? :) | ||
Джордж1 38 - 23.12.20 - 09:23 | Сколько понаписали
в типовых 1С такая проверка в каждом документе есть - берите и пользуйтесь | ||
kissolo 39 - 23.12.20 - 09:51 | (37) Конфигуратор / Администрирование / Выгрузить данные.
(38) Если вы возьмете на себя труд прочитать ветку, об этом уже не раз говорилось. В т.ч. в последних сообщениях. Тем не менее, спасибо за совет. Много не мало))) Кстати, после смены периодичности в первом виде документа на ежегодную - алгоритм, взятый из ТиС, сработал. Наверное, его и оставлю. Всем спасибо) | ||
Builder 40 - 23.12.20 - 10:10 | (39) Это бекапы так теперь делают, через выгрузку данных? Оригинально!
Почитайте хоть для чего эта выгрузка предназначена :) | ||
kissolo 41 - 23.12.20 - 11:08 | (40) Что не так? линк в студию. Всю жизнь так делал. И до меня тут так делали. И восстанавливали так. Все работает.
И, раз уж вас это не устраивает - предложите альтернативу и ее преимущества по сравнению с моим способом? Если убедительные доводы будут - чего ж не перейти на другой вариант, я открыт к диалогу. | ||
Builder 42 - 23.12.20 - 11:16 | (41) выгрузка предназначена для перехода с DBF на SQL и обратно.
Бекапы ей, конечно, делать можно, но зачем? Бекапы SQL надо делать исключительно средствами SQL, это быстрее и надежнее. | ||
Builder 43 - 23.12.20 - 11:20 | (41) А по поводу "Всю жизнь так делал. И до меня тут так делали" прям вспомнил известный "Эксперимент с обезьянами и водой" :) |
|
Список тем форума |