Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Как на уровне SQL генерить значение ID в 1С v 7.7? / 21 сообщений из 21, страница 1 из 1
07.12.2011, 16:27
    #37563419
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
привет.

Как на уровне SQL генерить значение ID в 1С v 7.7?
Например, как newID().
...
Рейтинг: 0 / 0
07.12.2011, 16:33
    #37563435
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
Genniyпривет.

Как на уровне SQL генерить значение ID в 1С v 7.7?
Например, как newID().

Зависит от версии сервера, начиная с 2005 есть встроенная ф-ия NewID, в более ранних использовались своqство поля IDENTITY либо самопальная NewID
...
Рейтинг: 0 / 0
07.12.2011, 16:51
    #37563481
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
PaulWist,
Можно немного подробней про IDENTITY.
...
Рейтинг: 0 / 0
07.12.2011, 20:16
    #37563925
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
PaulWistGenniyпривет.

Как на уровне SQL генерить значение ID в 1С v 7.7?
Например, как newID().

Зависит от версии сервера, начиная с 2005 есть встроенная ф-ия NewID, в более ранних использовались своqство поля IDENTITY либо самопальная NewID

NewID() не подходит.
Ну есть свойство IDENTITY. Ну включу-выключу при вставке. А толку от него? Мне нужно значение.
Если самопальная используется, то где её искать?
...
Рейтинг: 0 / 0
07.12.2011, 22:08
    #37564034
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
GenniyPaulWistпропущено...


Зависит от версии сервера, начиная с 2005 есть встроенная ф-ия NewID, в более ранних использовались своqство поля IDENTITY либо самопальная NewID

NewID() не подходит.
Ну есть свойство IDENTITY. Ну включу-выключу при вставке. А толку от него? Мне нужно значение.
Если самопальная используется, то где её искать?

Что конкретно не устраивает в предложенных вариантах,... возникли трудности с переводом в 36-ричное число?
...
Рейтинг: 0 / 0
08.12.2011, 00:14
    #37564177
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
PaulWist,
Какое значение нужно переводить в 36-ричное число?
...
Рейтинг: 0 / 0
08.12.2011, 09:56
    #37564466
sWinTyz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
2PaulWist

добрый день
а чем сейчас занимаетесь?
фокс бросили?
...
Рейтинг: 0 / 0
08.12.2011, 10:18
    #37564516
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
GenniyPaulWist,
Какое значение нужно переводить в 36-ричное число?

Давайте сначала, опишите задачу, типа: "мне надо на стороне сервера сгенерить уникальное значание тип данных int/char/uniquidentifier... конвертироывать его в то-то то-то или не надо конвертировать, получить это значение на клиента или же там же на сервере через ХП вставить значение туда-то туда".
...
Рейтинг: 0 / 0
08.12.2011, 10:20
    #37564519
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
sWinTyz2PaulWist

добрый день
а чем сейчас занимаетесь?
фокс бросили?

Нет, фокс - это как первая любовь :), задачи и софт стали разные, поэтому сюда забрёл.
...
Рейтинг: 0 / 0
08.12.2011, 11:36
    #37564691
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
PaulWistGenniyPaulWist,
Какое значение нужно переводить в 36-ричное число?

Давайте сначала, опишите задачу, типа: "мне надо на стороне сервера сгенерить уникальное значание тип данных int/char/uniquidentifier... конвертироывать его в то-то то-то или не надо конвертировать, получить это значение на клиента или же там же на сервере через ХП вставить значение туда-то туда".

Ладно.
Вопрос. Как добавить новую запись в справочник или документ, без использования конфигуратора (только на уровне SQL)?
Проблема заключается в том, как правильно генерировать значения для поля ID (тип char(9)).

Просто не представлял, что может быть такая трудность с добавлением записей без использования конфигуратора...
Жуть.
...
Рейтинг: 0 / 0
08.12.2011, 11:51
    #37564742
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
GenniyЛадно.
Вопрос. Как добавить новую запись в справочник или документ, без использования конфигуратора (только на уровне SQL)?
Проблема заключается в том, как правильно генерировать значения для поля ID (тип char(9)).

Просто не представлял, что может быть такая трудность с добавлением записей без использования конфигуратора...
Жуть.
эээ.. а при чем здесь конфигуратор?
...
Рейтинг: 0 / 0
08.12.2011, 12:01
    #37564775
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
tvm,
вы можете ответить на вопрос?
...
Рейтинг: 0 / 0
08.12.2011, 12:15
    #37564831
sWinTyz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
а зачем?
...
Рейтинг: 0 / 0
08.12.2011, 12:18
    #37564839
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
GenniyЛадно.
Вопрос. Как добавить новую запись в справочник или документ, без использования конфигуратора (только на уровне SQL)?
Проблема заключается в том, как правильно генерировать значения для поля ID (тип char(9)).



Поле состоит из двух отдельных частей:
- префикс ИБ,хранится в 1ssystem (для нераспределенной базы он пустой)
- последовательный номер, который хранится в 36ричном представлении.

Для генерации нового номера надо:
-найти максимальное значение ID для "своего" префикаса (для этого специальный индекс в таблице есть)
- добавить к нему 1 (можно через преобразование 36-10-36, а можно и сразу в нужной арифметике)
- создать из нового значения и "своего" префикса новый код
...
Рейтинг: 0 / 0
08.12.2011, 13:01
    #37564999
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
Genniy,

А почему рвать гланды через *** ? OLE вполне нормально справляется.
А по теме - запустите профайлер и посмотрите нужный вам код. Там дергаются процедуры, можете и сами их дернуть и получить нужный результат. И поиском в принципе примеры найти несложно. Но все же OLE для этого использовать более правильно.
...
Рейтинг: 0 / 0
08.12.2011, 13:24
    #37565083
olegves
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
Надо сначала найти максимальное значение, которое перевести из 36-ричного значения в Число, добавить единицу, после чего обратно перевести в 36-ричное значение.

Другой вариант: написать функцию увеличения на единицу 36-ричного значения
...
Рейтинг: 0 / 0
08.12.2011, 13:28
    #37565092
olegves
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
pail,

префикс ИБ - это правые 3 знака поля ID (IDDoc) (используется для УРБД), а левые 6 знаков - 36-ричное значение ID
...
Рейтинг: 0 / 0
08.12.2011, 13:42
    #37565123
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
olegvesНадо сначала найти максимальное значение, которое перевести из 36-ричного значения в Число, добавить единицу, после чего обратно перевести в 36-ричное значение.

Другой вариант: написать функцию увеличения на единицу 36-ричного значения

Я разве что-то другое сказал?
olegvespail,

префикс ИБ - это правые 3 знака поля ID (IDDoc) (используется для УРБД), а левые 6 знаков - 36-ричное значение ID
Такие подробности мне вспоминать уже незачем, подсмотреть негде, а тому, кто посмотреть в своей базе может - ничего больше и не надо
...
Рейтинг: 0 / 0
09.12.2011, 14:25
    #37567488
Genniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
pailGenniyЛадно.
Вопрос. Как добавить новую запись в справочник или документ, без использования конфигуратора (только на уровне SQL)?
Проблема заключается в том, как правильно генерировать значения для поля ID (тип char(9)).



Поле состоит из двух отдельных частей:
- префикс ИБ,хранится в 1ssystem (для нераспределенной базы он пустой)
- последовательный номер, который хранится в 36ричном представлении.

Для генерации нового номера надо:
-найти максимальное значение ID для "своего" префикаса (для этого специальный индекс в таблице есть)
- добавить к нему 1 (можно через преобразование 36-10-36, а можно и сразу в нужной арифметике)
- создать из нового значения и "своего" префикса новый код

Максимальное нашел.
Переобразовал в 10-ричную. Добавил 1. Конвертнул в 36-ричную. Но таким образом получается ID без учёта ИБ.
Я так понимаю, что нужно брать для конвертирования только первые 6 символов, потом после переобразования добавлять префикс ИБ.
...
Рейтинг: 0 / 0
09.12.2011, 14:45
    #37567558
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
GenniyЯ так понимаю, что нужно брать для конвертирования только первые 6 символов, потом после переобразования добавлять префикс ИБ.именно так.
...
Рейтинг: 0 / 0
11.01.2012, 11:47
    #37608909
garvy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как на уровне SQL генерить значение ID в 1С v 7.7?
Вот я в свое время баловался - написал такую функцию в SQL SERVER 2000 - может поможет кому:
-- генерирует код для 1С
CREATE FUNCTION dbo.KOD (@param CHAR(9))
RETURNS CHAR (9)
AS
BEGIN
Declare @st VARCHAR(7), @ndo SMALLINT, @npo SMALLINT, @st1 CHAR(1), @n SMALLINT , @z SMALLINT, @rez VARCHAR(9), @sym CHAR(1), @f BIT

-- отбрасываем пустышки
SET @st = LTRIM(RTRIM(@param))
-- вычисляем пробелы до
If len(@st) = 6
set @ndo=0
else if len(@st) = 5
set @ndo=1
else if len(@st) = 4
set @ndo=2
else if len(@st) = 3
set @ndo=3
else if len(@st) = 2
set @ndo=4
else if len(@st) = 1
set @ndo=5
-- пробелы после
set @npo=3
-- длина кода символов
Set @n = 9 - @npo - @ndo


Set @z = 0
--- идем справа налево
-- выделяем символ
rou:
Set @sym = SUBSTRING(@st,@n, 1 )

If @sym = '0'
set @st1 = '1'
If @sym = '1'
set @st1 = '2'
If @sym = '2'
set @st1 = '3'
If @sym = '3'
set @st1 = '4'
If @sym = '4'
set @st1 = '5'
If @sym = '5'
set @st1 = '6'
If @sym = '6'
set @st1 = '7'
If @sym = '7'
set @st1 = '8'
If @sym = '8'
set @st1 = '9'
If @sym = '9'
set @st1 = 'A'
If @sym = 'A'
set @st1 = 'B'
If @sym = 'B'
set @st1 = 'C'
If @sym = 'C'
set @st1 = 'D'
If @sym = 'D'
set @st1 = 'E'
If @sym= 'E'
set @st1 = 'F'
If @sym = 'F'
set @st1 = 'G'
If @sym = 'G'
set @st1 = 'H'
If @sym = 'H'
set @st1 = 'I'
If @sym = 'I'
set @st1 = 'J'
If @sym= 'J'
set @st1 = 'K'
If @sym= 'K'
set @st1 = 'L'
If @sym = 'L'
set @st1 = 'M'
If @sym= 'M'
set @st1 = 'N'
If @sym = 'N'
set @st1 = 'O'
If @sym = 'O'
set @st1 = 'P'
If @sym = 'P'
set @st1 = 'Q'
If @sym= 'Q'
set @st1 = 'R'
If @sym = 'R'
set @st1 = 'S'
If @sym = 'S'
set @st1 = 'T'
If @sym= 'T'
set @st1 = 'U'
If @sym= 'U'
set @st1 = 'V'
If @sym= 'V'
set @st1 = 'W'
If @sym= 'W'
set @st1 = 'X'
If @sym = 'X'
set @st1 = 'Y'
If @sym= 'Y'
set @st1 = 'Z'

If @sym <> 'Z'
BEGIN
--- и ничего больше делать не надо
SET @rez = SUBSTRING(@st, 1,@n-1) + @st1 + ISNULL(@rez,'') + SPACE(@npo)
GOTO EXT
END

-- только в этом случае надо анализировать следующий разряд
-- следующий разряд увеличиваем на единицу или добавляем новый разряд если его нет
If @sym= 'Z'
BEGIN
SET @st1 = '0'
SET @z = @z + 1
SET @n = @n - 1
If @n = 0
BEGIN
--- добавить новый разряд
SET @rez = '10' + ISNULL(@rez,'') + SPACE(@npo)
GOTO EXT
END

If @n>0
BEGIN
SET @st = left(@st,@n)
SET @rez = '0' + ISNULL(@rez,'')
GOTO rou
END
END


EXT:
SET @rez = SPACE(9-LEN(@rez)) + @rez

RETURN @rez
END
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Как на уровне SQL генерить значение ID в 1С v 7.7? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]