Имя: Пароль:
1C
 
Номер документа,как изменить?
Ø
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. ЕСЛИ будет сильно тормозить - добавь общий реквизит "ПечНомер" в который прописывай в "ПриЗаписи" преобразованный путем переформатирования префикса в постфикс номер документа.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.