Имя: Пароль:
IT
1С v8
Генерация первичного ключа при записи из 1С во внешний источник данных
0 Лебовски
 
17.03.17
12:01
Добрый день, товарищи гроссмейстеры! Ситуация вроде бы банальная: просто пишу данные из 1Ски во внешний источник данных (Oracle), вполне обычная таблица. Как устанавливать в таблице ключ (у нас обычное числовое поле int)? Хранить его в 1ске где-то и наращивать каждый раз? Или это на стороне Oracla как-то должно управляться? Подскажите, пожалуйста
1 Лефмихалыч
 
17.03.17
12:05
я не верю в то, что оракл не умеет делать автоинкремент
2 Лебовски
 
17.03.17
12:07
(1) Да наверное умеет. Просто когда в 1С не присваиваешь явно значение ключевому полю, туда ставится 0 и в следующий раз уже запись не уникальна. То есть где-то в Оракле какая-то галочка нужна для поля, и если в него ничего не пишется, оно само нарастает?
3 Лебовски
 
17.03.17
12:16
Да, наверное, это как-то так делается

-- create table
CREATE TABLE MAPS
(
MAP_ID INTEGER NOT NULL ,
MAP_NAME VARCHAR(24) NOT NULL,
UNIQUE (MAP_ID, MAP_NAME)
)
--create sequence
CREATE SEQUENCE MAPS_SEQ;
-- create tigger using the sequence
CREATE OR REPLACE TRIGGER   MAPS_TRG
BEFORE INSERT ON MAPS
FOR EACH ROW
WHEN (new.MAP_ID IS NULL)
BEGIN
  SELECT MAP_ID_SEQ.NEXTVAL
  INTO   :new.MAP_ID
  FROM   dual;
END;
/
--enable the trigger
ALTER TRIGGER MAPS_TRG ENABLE ;
4 Неверный Параметр И
 
17.03.17
12:22
(3) Ужс.

CREATE TABLE t (
    ID NUMBER GENERATED ALWAYS AS IDENTITY,
    Decsr VARCHAR2(100)
);

12c
5 Лебовски
 
17.03.17
12:27
(4) Да уж, действительно :) Спасибо!
6 YFedor
 
17.03.17
12:28
В 1С можно его хранить в справочнике:

а именно - создаем справочник с числовым кодом с автонумерацией.

В этом справочнике создаем элемент - код генерится автоматически - этот код и пишем в ключ в  Оракле
7 Лефмихалыч
 
17.03.17
12:29
(6) ни зачем не нужно это хранить в 1С
8 Лебовски
 
17.03.17
12:34
(6) Да, мне нужно по сути просто некоторые записи переносить, создавать для этого лишний справочник ни к чему, если можно разрулить на Оракле