![]() |
![]() |
|
Номер документа,как изменить? Ø |
☑ | ||
---|---|---|---|---|
0
Altru
11.01.07
✎
13:29
|
Как можно сделать что бы можно было сделать номер документа вместо
привычного например 00001 мне нужно сделать 00001/21 и что бы не сбивалась номеров докментов. |
|||
1
Uho
11.01.07
✎
13:31
|
и по какому правилу нумеровать?
|
|||
2
roma n
11.01.07
✎
13:31
|
Это называется и рыбку съесть и...
Если номер текстовый, можно первый ноль в номере заменить символом, "меньшим" чем "0" |
|||
3
SOleg
11.01.07
✎
13:53
|
Даже и не знаю... ПрефиксАвтонумерации есть, а вот суффикс... А зачем?
|
|||
4
Макс 1С
11.01.07
✎
14:27
|
(0) какая часть из всего этого будет номером и стандартный вопрос а зачем?
|
|||
5
Uho
11.01.07
✎
14:28
|
автор покинул нас
|
|||
6
Туп
11.01.07
✎
14:52
|
Скорее всего для печатной формы нужно, тогда в печатной форме добавить /21, а нумерация в журнале пусть так и идет...
|
|||
7
Ученый
11.01.07
✎
14:56
|
5.Не скажи. Автору нужны не якобы "самые отзывчивые" типа Uho, а "самые компетентные".
Короче, поступаем следующим образом. В процедуре ВводНового() проверяем обстоятельства, влияющие на числовое значение, например, порядковый номер документов данного вида. Док=СоздатьОбъект("Документ."+Вид()); Док.ВыбратьДокументы(НачГода(РабочаяДата(),КонГода(РабочаяДата()); Док.ОбратныйПорядок(1); Если Док.ПолучитьДокумент()=1 Тогда Поз=Найти(Док.Номер.Док,"/"); Если поз>0 Тогда Ном=Число(Сред(Док.Номер.Док,1,Поз-1)); Иначе Ном=Число(Док.НомерДок); КонецЕсли; Ном=Ном+1; Иначе Ном=1; КонецЕсли; //Далее определяем суффикс Если ИмяПользователя()="Вася" Тогда Суффикс="21"; КонецЕсли; Занято=СтрДлина(Ном)+СтрДлина(Суффикс); ДлинаНомера=Метаданные.Документ(Вид()).ДлинаНомера; ДобавитьНулей=ДлинаНомера-Занято; Префикс=""; Если ДобавитьНулей>0 Тогда Префикс=Сред("0000000000",1,ДобавитьНулей); КонецЕсли; НомерДок=Префикс+Ном+Суффикс; |
|||
8
Львенок
11.01.07
✎
15:15
|
Послушал автор доброго Ученого. А потом появилась следующая тема. и еще и еще. Или я что путаю? Создаем документ находим номер предыдущего документа. На двух компах одновременно. И... один смог записать документ. А второй не смог :( Uho добрее он спросил зачем? может (0) хочет чтоб во всех печатных формах появилось /21
|
|||
9
Uho
11.01.07
✎
15:17
|
(7) ну-ну...
т.е "компетентные" люди на уникальность плюют? |
|||
10
Uho
11.01.07
✎
15:19
|
(8) тут проще, даже один локальный пользователь, послушая (7) будет потом его проклинать :)))
|
|||
11
Макс 1С
11.01.07
✎
15:33
|
(7) ГЕНИАЛЬНО.... или генитально??.... скорее всётаки второе... ;))
|
|||
12
Львенок
11.01.07
✎
15:33
|
(10) проклинать то будут (0) но если в базе один юзер все ок должно быть. Что я не увидел?
|
|||
13
Uho
11.01.07
✎
15:36
|
(12) если, например, пару новых документов сделать вчерашним числом (при условии, что сегодня уже есть хотя бы один документ)
|
|||
14
Львенок
11.01.07
✎
15:38
|
(13) :) А мы запретим менять рабочую дату... Или вообще уберем тот интервал. Я просто про 1с 8.1. думаю :( там маленькая свинья с нумерацией.
|
|||
15
Uho
11.01.07
✎
15:47
|
(14) все равно не взлетит :), нужно тогда документы строго один друг за другом вводить, интересно так кто-нибудь работает? кроме ученых, конечно же
|
|||
16
Макс 1С
11.01.07
✎
15:50
|
(14) при такой системе нужно каждый выданный номер запоминать, иначе при вводе одинковых доков, они получат одинаковые номера и запишется у того, кто первым нажаз лаписать... ;)) но это ученым не ведомо.... она выше всего этого... ;))
|
|||
17
Ученый
11.01.07
✎
15:52
|
8.При сетевой работе и на случай изменения даты используется процедура ПриЗаписи(), отсылающая к глПроверкаРазрешенияРедактирования(), в которой должен быть также добавлен механизм нумерации с префиксами для документов определенного вида (лучше использовать справочник с правилами нумерации) при нарушении уникальности.
Я ведь привел пример назначения номера, а не законнченное решение. Так что зря вы беситесь и поминате генитальное(11). |
|||
18
Altru
11.01.07
✎
15:57
|
Нет мне нужно не просто присвоить /21, а ту комбинацию которую даст поставщик.
|
|||
19
Львенок
11.01.07
✎
15:58
|
(15)Не понял про строго один за другим? У 1с номер присваивается в транзакции. Делается для того, чтоб два новых документа имели два разных номера. Лучше бы, на мой взгляд, номер присваивался при первой записи(но тут есть сложности) :(
А вообще работают так, я видел. За то, что в номерах документов была дырка(1,2,4,5)или еще хуже документы перепутаны(1,2,4,3,5) по башке так диспетчерам давали... За то порядок в базе был :( (16) я в (8) сказали именно это :))) (17) можно уточнить вы это на реальной системе делали? Справочник записываете при создании нового документа? Или в справочнике только правила? Интересуюсь для того чтоб реализовать в 1с 8.1. |
|||
20
Львенок
11.01.07
✎
16:01
|
(18) вот вы и попались :) Номерация это уникальный номер документа в системе за выбранный период. В 1с номерация это внутренняя номерация. Вам нужно всего лишь дополнительное поле(номер поставщика) и запросом контроль на уникальность.
И уверяю вас однажды у вас будет два документа с одним номером за выбранный период(потому что). А еще эти поля уже есть :) |
|||
21
Mitrich
11.01.07
✎
16:03
|
Мда...
Имхается мне, что для подобных случаев номер лучше сделать недоступным не-админам и устанавливать в ПриЗаписи() с проверкой на Выбран()=0. А перед установкой: Пока НашВидДокумента.НайтиПоНомеру(НомерДок,ДатаДок) = 1 Цикл //а вот тут Ном+1 делать и далее номер новый формировать КонецЦикла |
|||
22
Mitrich
11.01.07
✎
16:07
|
+(21) все сказанное относилось к творческим изыскам Ученого. С учетом (18) разумеется по-нормальному делать новый реквизит.
PS И нефиг на Uho наезжать |
|||
23
lC
11.01.07
✎
16:07
|
(18) скажи в каком документе
может там уже есть спецполе, типа "номер док.входящий" |
|||
24
Ученый
11.01.07
✎
16:09
|
18.Для таких целей есть НомерДокВходящий. Номера поставщика присваивать собственным документам- дурь. Забудь.
19.Я не делал- мне не надо. Для извращенцев, практикующих сложную нумерацию, я рекомендую справочник с правилами нумерации. Например, вид документа, использовать префикс, использовать суффикс, способ назначения суффикса и префикса(им может быть код контрагента, код автора документа в справочнике пользователей или сотрудников, код подраздения или склада, порядковый номер документа данного контрагента, код договора и т.п.- выбирается из перечисления). А проблемы уникальности нет- проверка идет при записи документа из глобального модуля, также как в типовых при смене даты и в других случаях), при этом автоматически вычисляется новый номер. |
|||
25
Altru
11.01.07
✎
16:12
|
23 Мне нужно в отгрузке видеть,для бухгалтера.
Так как по одной Отгрузке могут забирать в течении некоторго времени. и нужно что бы была возожноть проследить. Мне сейчас без разнице в начали или в конце стоит определенный прификс ... но тодлько для отдельно взятого документа,что бы нумерация не сбивалась и была выборка |
|||
26
lC
11.01.07
✎
16:17
|
(25) не договариваешь
отргузка только одна, или ты плодишь ее копии каждый раз? если одна, то каким документом забирают товар из ее списка? |
|||
27
Altru
11.01.07
✎
16:20
|
26) Отгрузок несколько,но они по окончанию собираюсться в ОДНУ отгрузку.
Прификс нужен то бы знать что именно от этого постовщика был отгружен товар |
|||
28
Макс 1С
11.01.07
✎
16:21
|
просто ученый плохо себя ведет... вот и весь сказ...
а гадать щас и придумывать финты ушами в попытке получить неизвестно что и неизвестно зачем..... никакого интереса.. |
|||
29
lC
11.01.07
✎
16:24
|
(27) добавляй к номеру документа префикс = код поставщика
тогда все отгрузки от одного поставщика будут иметь один префикс |
|||
30
Львенок
11.01.07
✎
16:45
|
прокоментирую (24)
"19.Я не делал- мне не надо. Для извращенцев," // в 8.1. создаеш док. //(номер=1) отменяеш создание. Создаеш док(номер=2) и так далее... :) //потому появилась необходимость. "А проблемы уникальности нет- проверка идет при записи документа из глобального модуля, также как в типовых при смене даты и в других случаях), при этом автоматически вычисляется новый номер." // не делай так :( нельзя менять номер документа автоматом(только выдавать //новый), нужно чтоб пользователь понял что сделал что то не так. //И отрекся от своих действий. Ясно одно :( что это засада. (25) решение из УПП. Есть документ Расходная накладная(РН),Документ оформляют манагеры и документ Расходный ордер(РО) его вводят на основании РН кладовщики. И в системе остается жирный след. И за одно можно вести кароточку склада. |
|||
31
Uho
11.01.07
✎
16:47
|
(17)
"Я ведь привел пример назначения номера, а не законнченное решение" (с) Ученый "Рекомендации от ... не являются достаточно професииональными и нуждаются в дополнениях и уточнениях" (с) Ученый (19) в коде (7) всегда анализируется номер ПОСЛЕДНЕГО документа в году, следовательно, для обеспечения уникальности новый документ необходимо вводить ВСЕГДА ПОСЛЕ ПОСЛЕДНЕГО |
|||
32
Manunya
12.01.07
✎
08:59
|
А разделить на номер и подномер не пройдет?
Два поля НомерДок и НомерОтгрузки. |
|||
33
Altru
12.01.07
✎
13:45
|
32)поподробнее можно
|
|||
34
Gosha
12.01.07
✎
14:10
|
1. Используй ШТАТНО префикс.
2. На печать выводи префикс в виде суффикса(=постфикса) 3. При необходимости отображения в диалогах - добавляй текстовый реквизит, вычисляемый из номера документа путем преобразования префикса в постфикс. 4. При необходимости отображения в журналах добавляй вычисляемую колонку 4.1. ЕСЛИ будет сильно тормозить - добавь общий реквизит "ПечНомер" в который прописывай в "ПриЗаписи" преобразованный путем переформатирования префикса в постфикс номер документа. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |