Имя: Пароль:
1C
1С v8
Автонумерация строки справочника
,
0 amadeus2010
 
06.03.12
10:18
Добрый день уважаемые,у меня есть вопрос как можно сделать автонумерацию строки справочника.Например есть поле код клиента для которого надо сделать автонумерацию с проверкой уникальности вводимого номера клиента.Заранее спасибо
1 KUBIK
 
06.03.12
10:20
??? "Переведи!" (с)
2 amadeus2010
 
06.03.12
10:26
К примеру есть реквизит справочника код клиента,надо сделать так,чтобы при вводе нового клиента номер присваивался автоматически, а не оператор вбивал его вручную,наподобие автонумерации строки код в стандартной 1С. Что-то типа этого

Процедура ПриЗаписи(Отказ)

СтарыйКод = ЭтотОбъект.Код; //Добавлен
НовыйКод = Прав(СтарыйКод,10);
ЭтотОбъект.КодКлиента = НовыйКод;
ЭтотОбъект.Записать();

КонецПроцедуры // ПриЗаписи()
3 Cube
 
06.03.12
10:27
(2) Вопрос-то задай. Или ты хочешь, чтоб за тебя сделали? Тогда говори цену.
4 KUBIK
 
06.03.12
10:28
(1) Бардак с кодами справочника? Наводи порядок и будет тады счастье
5 KUBIK
 
06.03.12
10:29
(4) --> (2)
6 Reset
 
06.03.12
10:30
А Код в качестве кода не подходит?
7 KUBIK
 
06.03.12
10:33
(6) +100
8 vasilii85
 
06.03.12
10:34
(6) Код в качестве кода - моветон. )
9 amadeus2010
 
06.03.12
10:46
Дело в том что Код в качестве кода не устраивает, надо автонумеровать по коду клиента
10 Wobland
 
06.03.12
10:47
(9) конфигурация 1С:Управление ИТУ?
11 KUBIK
 
06.03.12
10:48
(9) Кодофобия? :)))))
12 Reset
 
06.03.12
10:50
(10) Если ИТУ - то , что я подумал, то потребуется компонента 1СTatuCode для печати на, хм, клиентах.
13 wladimir90
 
06.03.12
10:55
1. Запрос по всем элементам. Ищем последний код.
2. Если ЭтоНовый Тогда    ТвойКод = Результат.ТвойКод + 1;

Все.
14 vicof
 
06.03.12
10:58
(13) код еще нужно числом сделать
15 vasilii85
 
06.03.12
10:58
Все равно, ни чего не понятно, чего автор хочет... видимо и в голове у него такая же каша..
16 Reset
 
06.03.12
10:59
(13) Если откроют два новых, то опа и два дубля.
17 wladimir90
 
06.03.12
11:00
(16)
С чего бы два дубля будут при отрабатывании при записи?
18 amadeus2010
 
06.03.12
11:15
конфигурация УПП 1.2, как можно сделать так чтобы при вводе кода клиента например 00001,следующий вводимый код был 00002 и так далее.Т.е чтобы оператор не вводил дважды один и тот же код
19 Reset
 
06.03.12
11:17
(18) Чем Код не устраивает, поясни.
20 wladimir90
 
06.03.12
11:17
(18) Тебе же все объяснили. В т.ч. и я. Что конкретно непонятно? Или ты имел ввиду не автоподстановку кода а контроль уникальности? Так тоже самое. Оператор вводит код, срабатывает ПриИзменении - туда пихаешь поиск этого кода во всех элементах справочника или документа, смотря что у тебя там. Если найден, ошибка.
21 Jaffar
 
06.03.12
11:20
(9) "Дело в том что Код в качестве кода не устраивает, надо автонумеровать по коду клиента"
КОГО нужно автонумеровать по коду клиента?
что такое "строка справочника"? может, у справочника "Клиенты" (точнее - "Контрагенты") есть табличная часть, и в ней нужно что-то проавтонумеровать?
22 vasilii85
 
06.03.12
11:22
(21)Каша  у автора... каша... и он ее прожевать не может.
23 Jaffar
 
06.03.12
11:27
я надеюсь, что 2010 в нике - это не год рождения, хотя в этом случае было бы простительно :-)
24 Cube
 
06.03.12
11:28
(23) Я думаю, что у него 86 год рождения. Только в этом случае всё встает на свои места :)
25 experimentator76
 
06.03.12
11:32
хм... не знаю что насчет каши... но уникальность и автонумерацию можно сделать если использовать код из другого справочника типа "Коды клиента" который будет этим заниматься
он может быть подчинен главному справочнику если нужна уникальность в подчинении
26 Reset
 
06.03.12
11:34
Я бы сначала выяснил, таки зачем Одному клиенту Два уникальных кода. Затем уже думать о вариантах. Иначе это велосипед.
27 experimentator76
 
06.03.12
11:52
(26) зачем-зачем... поставить прога "раком" - сказали НАДО
28 amadeus2010
 
06.03.12
11:53
нам надо чтобы Код Клиента созданный нами как реквизит справочника, получал номера автоматом, например код 001, следующий был 002,чтобы оператор при вводе нового кода получил 003, а не вбивал код клиента вручную, тем самым не нарушил последовательность нумерации в код клиента и дважды не вводил один и тот же номер
29 Wobland
 
06.03.12
11:57
(28) ответь на (19)
30 Reset
 
06.03.12
11:57
(28) Сказ про белого бычка. Чем не устраивает Код? Он в точности служит тому, что описываешь.
31 amadeus2010
 
06.03.12
12:02
в контрагенте есть поле код клиента,сейчас он получает номера код клиента из базы оракл, в дальнейшем при отказе от самописной базы возникла необходимость автонумерации поля код клиента,чтобы оператор не вводил дважды одни и те же коды клиента.Стандартное поле Код для этих целей не подходит.
32 Reset
 
06.03.12
12:04
Сдаюсь.
33 Wobland
 
06.03.12
12:04
(31) почему?
34 Cube
 
06.03.12
12:05
(31) Ты точно не дворником работаешь?
У тебя спрашивают ПОЧЕМУ код тебе не подходит?
35 Jaffar
 
06.03.12
12:07
(31) хинт: поле "код" можно закрыть от доступа - оператор не сможет его изменить, получите то, что вам нужно в плане автонумерации (платформа за вас это делает).
если захотите - потом перенумеруете всех клиентов с оракловских кодов (если они почему-то оказались неуникальными) на свои 0001, 002 и т.д.
36 Jaffar
 
06.03.12
12:08
(34) я вот думаю - может другие вопросы попробовать - КУДА код тебе не подходит, ЗАЧЕМ код тебе не подходит, КОГДА код тебе не подходит, ОТКУДА код тебе не подходит...
37 Jaffar
 
06.03.12
12:08
потому как на вопрос ПОЧЕМУ - внятного ответа нет :-(
38 Cube
 
06.03.12
12:13
(36) :)))
39 Wobland
 
06.03.12
12:14
(36) а что ты будешь делать с этими ответами? ;))
40 Jaffar
 
06.03.12
12:20
(39) чем больше информации - тем проще телепатировать :-)
41 Jaffar
 
06.03.12
12:21
точнее - гадать на кофейной гуще...
42 amadeus2010
 
06.03.12
12:28
Уважаемые был поставлен точный вопрос можно ли сделать автонумерацию для созданного реквизита справочника и если да,то как? Гадать не надо
43 Jaffar
 
06.03.12
12:29
(42) можно.
СозданныйРеквизитСправочника = Код;
ЭтотОбъект.Записать();
44 Cube
 
06.03.12
12:29
(42) "Можно" - Да можно.
"Как" - по-разному.

Какие вопросы - такие ответы.
45 Wobland
 
06.03.12
12:31
(42) Уважаемый, раз двадцать был точный вопрос "почему?" не жалей нас, рассказывай всю правду
46 experimentator76
 
06.03.12
12:31
(42) => (25)
нужно будет немного попрограммить но работать будет
47 wladimir90
 
06.03.12
12:36
(28) ВНИМАНИЕ! Поясните кто нибудь! Что значит автоматически присваивать код при вводе нового кода???
Либо так либо так - или я не прав?
48 amadeus2010
 
06.03.12
12:41
ответ на почему-пожелание руководства заменить стандартную нумерацию на свою.Далее как я понимаю все действия происходят в процедуре ПриЗаписи()
СозданныйРеквизитСправочника = Код;
ЭтотОбъект.Записать();
49 Cube
 
06.03.12
12:43
И я сдаюсь))
50 Wobland
 
06.03.12
12:44
(48) продолжаем разговор. зачем это руководству надо?
51 Wobland
 
06.03.12
12:44
xxx: Словно умудренные жизненным опытом стервятники в пустыне, они смотрят вслед проползающим путникам. На вопрос, где можно напиться, они долго обсуждают, нужна ли тебе вода и неизменно приходят к выводу, что нет, тебе, брат, вода ни к чему. Неспешно перечисляют причины, по которым тебе лучше жить без воды. И ни один из них не покажет в какой стороне колодец.

xxx: Е**чие ИТ-форумы.
52 vasilii85
 
06.03.12
12:47
(50) Кажется мне, что ТС не понял что хочет его руководство... так как сам объясняет все очень путано.
53 DrShad
 
06.03.12
12:49
пошел за попкорном, а ведь только вторник
54 Reset
 
06.03.12
12:50
(51) Неточный пример. На вопрос, где напиться, указано на колодец. На что отвечено, что этот не подходит, скажите другой. Чтобы посоветовать другой, совершенно логично, глядь, узнать недостатки имеющегося, чтобы другой таковыми не обладал.
55 experimentator76
 
06.03.12
12:50
черный вторник
56 experimentator76
 
06.03.12
12:51
за решение задачи 100500 е.у.
57 Alexperumov
 
06.03.12
12:52
Тоесть имеем Два кода, один из них тот который стандартный, сам по себе прибавляет +1 и  второй который самодельный, при создании не меняется?
58 Jaffar
 
06.03.12
12:56
(54) да, но другой колодец, и даже более того - ВСЕ колодцы (до применения к какому-то из них напильника со злым умыслом) отвечают тем запросам, которые выдвигает ТС, но он упорно хочет испортить ЭТОТ колодец.
59 Reset
 
06.03.12
12:56
+(54) -> (51) Экспрессия в посте направлена не на тебя, а на мистера ххх в местном воплощении
60 Wobland
 
06.03.12
13:10
держу пари на сузуки в пятничной ветке, что до сотни не дотянем...
61 amadeus2010
 
06.03.12
13:51
СтарыйКод = ЭтотОбъект.Код;
НовыйКод = Прав(СтарыйКод,64);
ЭтотОбъект.КодОракл = НовыйКод;
ЭтотОбъект.Записать();

При написании данного кода в процедуру при записи код справочника присваивается элементу КодОракл (код клиента), возможно ли сделать так чтобы КодОракл сохранял свои данные а не Кода справочника.Например если я пишу в кодоракл 789, а у кода справочника последний номер 2130, то после нажатия ОК, КодОракл присваивается 2130, а не 789.Задача в том чтобы КодОракл получал свои номера, а не кода  справочника
62 Wobland
 
06.03.12
13:52
вот и я сломался. сдаюсь
63 Jaffar
 
06.03.12
13:59
(62) рано.
(61) можно попробовать еще генератором псевдослучайных чисел его генерировать, если не подходит то, что уже создано разработчиками платформы и успешно используется предыдущими поколениями программистов.
64 amadeus2010
 
06.03.12
16:20
После некоторых размышлений пришел к следующему коду.

Если ЭтоНовый() Тогда
Если НЕ ЗначениеЗаполнено(ЭлементыФормы.КодОракл.Значение) Тогда   ЭлементыФормы.КодОракл=ЭлементыФормы.КодОракл.Значение+1;
   ИначеЕсли ЗначениеЗаполнено(ЭлементыФормы.КодОракл.Значение) Тогда Предупреждение("Значение поля уже заполнено");
КонецЕсли;
КонецЕсли;

Теперь вопрос как сделать проверку на наличие одинаковых номеров и в случае совпадения номеров выдавать предупреждение и сделать так чтобы номер заполнялся последовательно 200,201 и т.д
65 Jaffar
 
06.03.12
16:43
ну тут вариантов полно - можно константу создать, можно в регистр сведений писать последнее новое значение.
66 ИС-2
 
naïve
06.03.12
16:52
(64) мда... Зачем элементыформы. Надо к реквизитам
Проверить можно так
                                                                                    ВЫБРАТЬ
   Контрагенты.Наименование,
   КОЛИЧЕСТВО(Контрагенты.Наименование) КАК Количество
ИЗ
   Справочник.Контрагенты КАК Контрагенты

СГРУППИРОВАТЬ ПО
   Контрагенты.Наименование
67 amadeus2010
 
06.03.12
16:52
т.е например создать регистр сведений и в него залить все коды клиентов, а потом проверять и присваивать номер клиенту?
Кстати при попытке выполнить код выдает ошибку
Справочник.Контрагенты.Форма.ФормаЭлемента(760)}: Поле объекта недоступно для записи (КодОракл)
        Если НЕ ЗначениеЗаполнено(ЭлементыФормы.КодОракл.Значение) Тогда ЭлементыФормы.КодОракл=ЭлементыФормы.КодОракл.Значение+1;
68 amadeus2010
 
06.03.12
17:17
а как мне сделать чтобы номер заполнялся последовательно 200,201 и т.д? КодОракл+1 сработает или нет? И еще если вдруг оператор вручную заполнит номер как сделать так чтобы он и дальше присваивался КодОракл+1?
69 catena
 
06.03.12
18:37
(68)А нельзя слить кодоракал в код и жить спокойно дальше с автонумерацией?
70 Lama12
 
06.03.12
18:48
(68) Заблокировать реквизит от ручной корректировки. На форме ставишь у реквизита только чтение.
При записи элемента проверяешь, если код пустой, то делаешь запрос к базе с группировкой макс по коду и получаешь макс код, прибавляешь к нему 1, и все.
Но криво все это.
Либо идет перегрузка справочника Контрагенты, либо я чего-то не понимаю.
71 Wobland
 
06.03.12
19:11
(69) и ты туда же... нет, это не вариант
72 catena
 
06.03.12
19:31
(71)Я тяну до 100, ты обещал харакири.
73 vasilii85
 
06.03.12
19:53
Будем тянуть.
74 vasilii85
 
06.03.12
20:02
Тянуть до пятницы ))))
75 hhhh
 
06.03.12
21:14
(68) заведи справочник КодыОракл. И в нем добавляй всё. Автоматически всё проверится. А в реквизит готовый код будешь записывать.
76 wladimir90
 
07.03.12
15:19
Не, до 100 не дотянет
77 catena
 
07.03.12
17:27
Не спать, косить!
78 Wobland
 
07.03.12
17:36
(77) Катена, дорогая, с наступающим тебя! думаешь, как нагнуть меня в пятницу? я готов. тот "офигенский" алгоритм для сузуки, который я задумал в (60) я так и не сделал. но у меня ещё есть время доделать или хотя бы сделать вручную. впрочем, модераторы всё равно выпишут мне сэппуку ;)
79 Конфигуратор1с
 
07.03.12
17:48
(77) кстати, с наступающим 8 марта Вас!!!
80 catena
 
07.03.12
20:35
(78),(79) Спасибо!

Wobland , очень хотелось бы посмотреть, ни разу не видела сузуки-он-лайн, завтра одна из редких пятниц, когда я дома :)
81 catena
 
07.03.12
20:35
хм... послезавтра...
82 Wobland
 
08.03.12
06:54
(81) только ради тебя. нужно заранее договориться о времени встречи, сузуки долго не провисит ;)
83 catena
 
09.03.12
05:34
Похоже, пятницы не будет?
84 Любопытная
 
09.03.12
05:47
Эта ветка вполне пятничная.
Остальные пятничники спят после веселого четверга)
85 catena
 
09.03.12
05:51
(84)Напраздновались, бедные? :)
86 Любопытная
 
09.03.12
05:53
(85) Видимо. Wobland уже здесь должен быть по времени)
87 Wobland
 
09.03.12
05:58
да здесь он. сейчас за пивом сходит и вернётся
88 Мимохожий Однако
 
09.03.12
08:47
(61)Почему Оракл не может получать коды справочника? Оракл не знает, что это за коды. И ты об этом не говори.
89 Jaffar
 
09.03.12
20:13
(88) ему не стоит задавать вопрос "Почему?" - он на него еще ни разу не ответил...
90 Балоун
 
09.03.12
20:14
говорили вам, ветка до сотни не дотянет ;)
91 Балоун
 
09.03.12
20:15
(89) ответ на почему в (48)
92 Конфигуратор1с
 
09.03.12
20:16
(90) не факт
93 Конфигуратор1с
 
09.03.12
20:16
Осталось 7 постов)))
94 Балоун
 
09.03.12
20:16
(92) ну... я своё отсиживаю ;) как и обещал в (82)
Программист всегда исправляет последнюю ошибку.