|
Генерировать числа по порядку | ☑ | ||
---|---|---|---|---|
0
Олеся999
16.02.15
✎
07:45
|
http://lvkr.ru/f/ubQsyc/640.jpg
Нужно сгенерировать числа по порядку Например: 000001 000002 000003 000004 Потом Говорим "Провести и закрыть" ...у нас записываются эти числа в регистр. Потом говорим создать новый элемент списка. И заново нажимаем сгенирировать И у нас уже продолжается с 000005 000006 000007 и.т.д Как это можно осуществить ? |
|||
1
hhhh
16.02.15
✎
07:57
|
дык, в 1с всё так генерируется. Добавьте справочник Штрихкоды. Коды в этом справочнике будут так и генерироваться.
|
|||
2
ilyavorobyev
16.02.15
✎
08:01
|
Говорить много еще надо?
|
|||
3
Олеся999
16.02.15
✎
08:52
|
(1) А можно по подробнее ?
|
|||
4
Cube
16.02.15
✎
09:01
|
(3) Тебе предлагают вместо регистра сведений использовать справочник для этой задачи.
Когда фотка новая будет? :) |
|||
5
Олеся999
16.02.15
✎
09:32
|
(4) Так просто в регистре сведений он будет уникальный и не будет повторяться ... а если повторится то док не проведется
Поменяла позже обновится:) |
|||
6
Timon1405
16.02.15
✎
09:37
|
(0) Все уже придумано, посмотрите форму "ФормаГрупповогоДобавления" справочника "ОсновныеСредства" в БП 2.0/УПП
|
|||
7
ilyavorobyev
16.02.15
✎
09:45
|
(0) конфигурация типовая? реквизит ШК это строка? или ссылка на справочник?
|
|||
8
Олеся999
16.02.15
✎
09:51
|
(7) конфигурация не типовая ....самописная
|
|||
9
ilyavorobyev
16.02.15
✎
09:58
|
(8) есть два типа пути:
1.Как сказали в (0) добавить справочник штрихкоды и пользователи сами будут создавать элемент справочника при заполнении и номера у этих элементов будут генерироваться автоматически а реквизит в табл. части ШК будет ссылкой на справочник Штрихкоды. 2.Генерировать числа от последнего числа взятого из регистра в котором ты будешь запись делать |
|||
10
AliAksA
16.02.15
✎
10:01
|
(1) как вариант - использовать константу числового типа и переводить форматом в строку
|
|||
11
Олеся999
16.02.15
✎
10:13
|
(9) а как вот 2 вариант осуществить?
|
|||
12
Остап Сулейманович
16.02.15
✎
10:14
|
(11) Прочитать значение из регистра. Добавить единичку. Заюзать там, где нужно. В регистр записать значение + 1.
|
|||
13
vde69
16.02.15
✎
10:18
|
(12) эммм....
а если сразу два человека прочитают одновременно и добавят по 1шт... тут без блокировки не обойтись (или контроля уникальности....) |
|||
14
AliAksA
16.02.15
✎
10:19
|
(13) транзакция спасет мир)
|
|||
15
Олеся999
16.02.15
✎
10:21
|
а если делать чтобы при создании позиции номер присваивался автоматически ...как это можно осуществить ?
|
|||
16
ilyavorobyev
16.02.15
✎
10:22
|
(15) позиции это новой строки в табличной части?
|
|||
17
ilyavorobyev
16.02.15
✎
10:22
|
(16) или когда номенклатура создается?
|
|||
18
Остап Сулейманович
16.02.15
✎
10:24
|
(15) Для хранения вот этого вот "позиции" можно использовать справочник см (9)п.1. И тогда нумерация будет автоматической. Только геморроя поимеешь больше, чем с РС.
|
|||
19
vde69
16.02.15
✎
10:25
|
(14) транзакция спасет только если внутри будет запрос "для изменения" а это и есть явная блокировка....
|
|||
20
ilyavorobyev
16.02.15
✎
10:25
|
(18) с чего это они гемора поимеет с нового справочника или регистра сведений?!?
|
|||
21
Остап Сулейманович
16.02.15
✎
10:27
|
(20) Со справочника? Очень просто. Вводим новый документ - создаем позиции в справочнике. Все отлично автонумеруется. Потом хлоп - решаем, что документ не нужен. Отказываемяс его записывать. Что делать с новосозданными элементами справочника?
|
|||
22
ilyavorobyev
16.02.15
✎
10:28
|
(21) очисти, удали, это самописка, можешь там свой блэкджек с ш... сделать
|
|||
23
Остап Сулейманович
16.02.15
✎
10:30
|
(22) Количество шлюх в блекджеке может получиться значительно меньше полученного геморроя.
|
|||
24
AliAksA
16.02.15
✎
10:30
|
(19) это для константы) её все равно шустрее менять чем по регистру барахтаться
|
|||
25
vde69
16.02.15
✎
10:35
|
НачатьТранзакцию();
ID_Поставки = ОбменДанными.ПолучитьМаксИДП(); ПолныеПрава.ЗаблокироватьID_КлиентскогоДокумента (ID_Поставки - 1); НовыйУИД = Строка(Новый УникальныйИдентификатор); МенеджерЗаписи = РегистрыСведений.КлиентскиеДокументы.СоздатьМенеджерЗаписи(); ------------------------------- ------------------------------- ------------------------------- Процедура ЗаблокироватьID_КлиентскогоДокумента (ID_Поставки) Экспорт Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ |ИЗ | (ВЫБРАТЬ | ИЗ | РегистрСведений.КлиентскиеДокументы КАК КлиентскиеДокументы | ГДЕ | КлиентскиеДокументы.ID_Поставки = &ID_Поставки | И КлиентскиеДокументы.Основной) КАК ВложенныйЗапрос | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КлиентскиеДокументы КАК КлиентскиеДокументы | ПО ВложенныйЗапрос.ДоговорПоставки = КлиентскиеДокументы.ДоговорПоставки | И ВложенныйЗапрос.ТипДокумента = КлиентскиеДокументы.ТипДокумента | И ВложенныйЗапрос.НомерДокумента = КлиентскиеДокументы.НомерДокумента | И ВложенныйЗапрос.ДатаДокумента = КлиентскиеДокументы.ДатаДокумента | |ДЛЯ ИЗМЕНЕНИЯ | РегистрСведений.КлиентскиеДокументы"; Запрос.УстановитьПараметр("ID_Поставки", ID_Поставки); Запрос.Выполнить(); КонецПроцедуры |
|||
26
Не молодой
16.02.15
✎
10:39
|
(25) а в данном случае блокировка продлится до окончания транзакции или завершится сразу после процедуры ЗаблокироватьID_КлиентскогоДокумента?
|
|||
27
Олеся999
16.02.15
✎
10:40
|
(25) Да я думаю можно без блокировки потому что делает приход только 1 человек
|
|||
28
ilyavorobyev
16.02.15
✎
10:42
|
(27) за все время существования этой темы, можно было уже решить задачу, тебе столько вариантов скинули
|
|||
29
Олеся999
16.02.15
✎
10:42
|
Мне тупо нужно считывать последний номер из регистра и делать +1
|
|||
30
vde69
16.02.15
✎
10:43
|
(26) до конца транзакции
|
|||
31
AliAksA
16.02.15
✎
10:45
|
(27) (29) ну так юзани константу для счетчика - на кой тебе геморой с регистром, да и перевести ручками можно при необходимости - бывали случаи
|
|||
32
ilyavorobyev
16.02.15
✎
10:47
|
(0) добавь голосовалку к теме)))
|
|||
33
Cube
16.02.15
✎
10:50
|
(5) "Поменяла позже обновится:)"
Молодец)) |
|||
34
Олеся999
16.02.15
✎
10:52
|
А есть какие-нибудь примеры ?)
|
|||
35
Cube
16.02.15
✎
10:52
|
(29) У тебя РС периодический? Номер хранится где: в измерениях/ресурсах/реквизитах?
|
|||
36
Остап Сулейманович
16.02.15
✎
10:56
|
(34) Примеры чего?
- установки блокировки? - Чтения из РС? - инкрементирования? - записи в РС? - снятия блокировки? |
|||
37
Cube
16.02.15
✎
10:58
|
(36) Сразу видно - первый раз зашел в тему Олеся999 ? :)
|
|||
38
Олеся999
16.02.15
✎
10:59
|
||||
39
Cube
16.02.15
✎
11:02
|
(38) Для чего нужен ШК? Где он потом используется?
Странно, что ты его в измерения положила... |
|||
40
vde69
16.02.15
✎
11:04
|
(39) ШК в измерении гарантирует отсутствие задвоеных элементов :)
|
|||
41
Олеся999
16.02.15
✎
11:05
|
(39) в ШК хранятся штрих коды в измерения сделала что бы документ проводился , в случае если штрих код повторяется то документ не проведется.
|
|||
42
Олеся999
16.02.15
✎
11:07
|
РС Непереодический ....
Подчинение ригистру |
|||
43
Cube
16.02.15
✎
11:08
|
(41) Если РС нужен он только для контроля уникальности, то выкинь его нафиг))
У тебя же номенклатура не привязана к этому РС... Вопрос: о одной позиции номенклатуры может быть только один ШК или ШК может быть несколько? |
|||
44
Олеся999
16.02.15
✎
11:09
|
(36) Чтение из РС штрих кода +1
|
|||
45
AliAksA
16.02.15
✎
11:09
|
(41,42) писец тупость ... если сведения по ШК не меняются - нафиг регистр - ура справочнику, но их изменений (допустим в случае переупаковки изменилась масса изделия, а штрихкод остался) - только регистр
|
|||
46
Cube
16.02.15
✎
11:10
|
(40) На бумаге... :)
|
|||
47
AliAksA
16.02.15
✎
11:11
|
+(46) это точно)
|
|||
48
vde69
16.02.15
✎
11:12
|
вообще можно без регистра....
при печати: мСтрокаШапка = НомерДока + "," + СсылкаНаОбъект.УникальныйИдентификатор(); мСтрокаШапка = СтрЗаменить(мСтрокаШапка, "-", ""); ОбластьШапка.Рисунки.ШтрихКодШапка.Объект.ТипКода = 4; ОбластьШапка.Рисунки.ШтрихКодШапка.Объект.Сообщение = ВРег(мСтрокаШапка); |
|||
49
Остап Сулейманович
16.02.15
✎
11:14
|
(48) В наличии одна неприятность. Строка документа не имеет УИД.
|
|||
50
Cube
16.02.15
✎
11:14
|
(48) Нафиг там номер дока?)) Боишься, что попадешь в вероятность 1 / 3,4?10^38 ? :))))
|
|||
51
AliAksA
16.02.15
✎
11:17
|
из практики: на восьми одновременно работающих конвейерах, с которых генерируются штрихкоды на одном справочнике, бывали пробои - создавались записи с неуникальными кодами, несмотря на внутренние настройки ... но это фигня - один раз два человека с разных мест умудрились один док одновременно открыть - вот тогда веселуха была)
|
|||
52
Олеся999
16.02.15
✎
11:18
|
(43) Этот ШК не как не привязан к номенклатуре
Он присваивается в приходной накладной ...(штрих код уникальный для каждого товара) То есть в номенклатуре например есть Блокнот 1 с заводским штрихом 23143124 В приходной накладной по 23143124 мы идентифицируем что это Блокнот1. Например пришло 3шт мы заносим и присваиваем ШК на нашем складе каждому блокноту1 Блокнот1 ШК 1111 ячейка 1 Блокнот1 ШК 1112 ячейка 1 Блокнот1 ШК 1113 ячейка 2 И раскладываем по ячейкам |
|||
53
Олеся999
16.02.15
✎
11:20
|
(52) После чего распечатываем ШК и клеем на каждый блокнот свой ШК
|
|||
54
vde69
16.02.15
✎
11:21
|
(50) это не номер доупента а идентификатор ВИДА документа, что-бы потом по нему открыть элемент можно было...
|
|||
55
vde69
16.02.15
✎
11:23
|
(54)+
НомерДока = ""; Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.Сделка") Тогда ИмяДок = "Сделка"; НомерДока = "1"; ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.СчетНаОплату") Тогда ИмяДок = "СчетНаОплату"; НомерДока = "2"; ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда ИмяДок = "РеализацияТоваровУслуг"; НомерДока = "3"; ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда ИмяДок = "ПеремещениеТоваров"; НомерДока = "4"; ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ОприходованиеТоваров") Тогда ИмяДок = "ОприходованиеТоваров"; НомерДока = "5"; ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.СписаниеТоваров") Тогда ИмяДок = "СписаниеТоваров"; НомерДока = "6"; ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда ИмяДок = "ПоступлениеТоваровУслуг"; НомерДока = "7"; ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ЗаявкаНаЗакупку") Тогда ИмяДок = "ЗаявкаНаЗакупку"; НомерДока = "8"; ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда ИмяДок = "ЗаказПоставщику"; НомерДока = "9"; Иначе Возврат ТабДок; КонецЕсли; |
|||
56
Cube
16.02.15
✎
11:25
|
(52) Делай константу ПоследнийШтрихкод и ей пользуйся.
|
|||
57
Cube
16.02.15
✎
11:26
|
(54) (55) Ну, тогда "вопросов больше не имею" (с) Дискотека авария :)
|
|||
58
Олеся999
16.02.15
✎
11:28
|
(56) ПоследнийШтрихкод его как то запросом нужно брать ?)
|
|||
59
Олеся999
16.02.15
✎
11:28
|
(58) из РС ?
|
|||
60
AliAksA
16.02.15
✎
11:29
|
(52) у вас там не мазохисты часом собрались или вы тупо волыните, потому что нечем занятся в рабочее время?
|
|||
61
Cube
16.02.15
✎
11:30
|
(58) СП:
КонстантаМенеджер.<Имя константы> (ConstantManager.<Имя константы>) Получить (Get) Синтаксис: Получить() Возвращаемое значение: Тип: Произвольный. Текущее значение константы. Описание: Получает значение константы. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: При каждом использовании метода происходит считывание значения из базы данных. Пример: Сообщить("Директор у нас: " + Константы.Директор.Получить()); |
|||
62
AliAksA
16.02.15
✎
11:30
|
(57) = (10) - якорь отцепляй, кады на форум лезешь ... возвращаю "вопросов больше не имею")))
|
|||
63
Cube
16.02.15
✎
11:30
|
(59) РС удали и забудь про него.
|
|||
64
AliAksA
16.02.15
✎
11:31
|
(61)и про транзакцию не забудь - в (14) упоминалась)
|
|||
65
Cube
16.02.15
✎
11:34
|
(62) (64) Пациент: Доктор, помогите, меня никто не замечает
Доктор: Кто здесь? =)) |
|||
66
AliAksA
16.02.15
✎
11:38
|
(65) как-то так) ... но РС я бы не удалял - возможно где-то из него и читаются характеристики предметов, которым присвоен штрихкод
|
|||
67
Олеся999
16.02.15
✎
11:45
|
(65)
http://lvkr.ru/f/YZEpWP/800.jpg создала константу А генератор что то вроде этого ? &НаСервере Процедура СгенерироватьНаСервере() ЗначениеКонстанты = Константы.ШК_Константа.Получить() КонецПроцедуры &НаКлиенте Процедура Сгенерировать(Команда) СгенерироватьНаСервере(); Элементы.ТаблЧасть.ТекущаяСтрока=ЗначениеКонстанты+1; Элементы.ТаблЧасть.ТекущиеДанные.ШК = Объект.ТекстШтрихКода; КонецПроцедуры |
|||
68
AliAksA
16.02.15
✎
11:49
|
(67) жесть))) а сразу после получения константу на 1-ку увеличить и сохранить и все это в транзакции не хочешь?
да и проделать все этов функции которая возвращает готовое значение было-бы куда веселее) |
|||
69
AliAksA
16.02.15
✎
11:50
|
(67) ну все равно удачи)
|
|||
70
Cube
16.02.15
✎
11:55
|
(67) Почти угадала:
&НаСервере Функция СгенерироватьНаСервере() ЗначениеКонстанты = Константы.ШК_Константа.Получить() + 1; Константы.ШК_Константа.Установить(ЗначениеКонстанты); Вернуть ЗначениеКонстанты; КонецФункции &НаКлиенте Процедура Сгенерировать(Команда) Элементы.ТаблЧасть.ТекущаяСтрока = СгенерироватьНаСервере(); КонецПроцедуры |
|||
71
Cube
16.02.15
✎
11:55
|
(70) Ой, очепятка:
&НаСервере Функция СгенерироватьНаСервере() ЗначениеКонстанты = Константы.ШК_Константа.Получить() + 1; Константы.ШК_Константа.Установить(ЗначениеКонстанты); Возврат ЗначениеКонстанты; КонецФункции &НаКлиенте Процедура Сгенерировать(Команда) Элементы.ТаблЧасть.ТекущаяСтрока = СгенерироватьНаСервере(); КонецПроцедуры |
|||
72
Cube
16.02.15
✎
11:57
|
(71) Блин, ещё и с ТЧ ошибки...
Делай так: &НаСервере Функция СгенерироватьНаСервере() ЗначениеКонстанты = Константы.ШК_Константа.Получить() + 1; Константы.ШК_Константа.Установить(ЗначениеКонстанты); Возврат ЗначениеКонстанты; КонецФункции &НаКлиенте Процедура Сгенерировать(Команда) Для Каждого СтрокаДокумента Из ТаблЧасть Цикл СтрокаДокумента.ШК = СгенерироватьНаСервере(); КонецЦикла; КонецПроцедуры |
|||
73
AliAksA
16.02.15
✎
11:57
|
(70) брависимо))) но этот урок должна была сама сделать)
|
|||
74
Cube
16.02.15
✎
11:59
|
(72) Совершенству нет предела - не надо сервер дергать, надо делать всё на сервере:
&НаСервере Процедура СгенерироватьНаСервере() ШК = Константы.ШК_Константа.Получить() + 1; Константы.ШК_Константа.Установить(ШК); Для Каждого СтрокаДокумента Из ТаблЧасть Цикл СтрокаДокумента.ШК = ШК; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура Сгенерировать(Команда) СгенерироватьНаСервере(); КонецПроцедуры |
|||
75
Cube
16.02.15
✎
12:00
|
(74) Позор на мою седую голову...
Исправляюсь: &НаСервере Процедура СгенерироватьНаСервере() ШК = Константы.ШК_Константа.Получить(); Для Каждого СтрокаДокумента Из ТаблЧасть Цикл ШК = ШК + 1; СтрокаДокумента.ШК = ШК; КонецЦикла; Константы.ШК_Константа.Установить(ШК); КонецПроцедуры &НаКлиенте Процедура Сгенерировать(Команда) СгенерироватьНаСервере(); КонецПроцедуры |
|||
76
AliAksA
16.02.15
✎
12:01
|
(72) сделано !!! кнопка сгенерировать тогда позволит перепечатать штрихкоды, если они испортились и нечитабельны
а прежде чем распределенку делать, когда обычно все в терминале сидят, стоит задаться вопросом - "нафига мне лишний геморой?" |
|||
77
Cube
16.02.15
✎
12:02
|
"Что-то холестеринчик подскочил" (с) РЭД :)
|
|||
78
Олеся999
16.02.15
✎
12:07
|
(77) Спасибо Круто работает :))
|
|||
79
AliAksA
16.02.15
✎
12:09
|
(77) ну разомнись ещё - представь что накладные с нескольких точек вводят))) ... (14) прочитай на всякий)
|
|||
80
Cube
16.02.15
✎
12:15
|
(79) Да дочитай ты до (27) уж наконец)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |