Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Новые элементы справочника (число прочтений - 2407 )
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Новые элементы справочника
08. Ноября 2007 :: 03:57
Печать  
Поделитесь методикой кто делал подобное, суть вопроса - используя insert добавлять новые элементы в справочник, почитав в сети про всякие проблемы с неуникальностью ID, задумался что не все так просто в этом вопросе.
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Новые элементы справочника
Ответ #1 - 08. Ноября 2007 :: 05:51
Печать  
Цитата:
SQLLock
Синтаксис:
SQLLock
Назначение:
Предназначен для получения новых идентификаторов, кодов справочников, номеров документов.

  
Наверх
ICQ  
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Новые элементы справочника
Ответ #2 - 08. Ноября 2007 :: 06:00
Печать  
Salimbek писал(а) 08. Ноября 2007 :: 05:51:
Цитата:
SQLLock
Синтаксис:
SQLLock
Назначение:
Предназначен для получения новых идентификаторов, кодов справочников, номеров документов.


Спасибо, там даже пример есть со справочником ...

До свиданья OLE!
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Новые элементы справочника
Ответ #3 - 08. Ноября 2007 :: 06:52
Печать  
А SQLLock работает с неродной базой 1С или генерит только для той базы в которой запущена обработка ?
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Новые элементы справочника
Ответ #4 - 08. Ноября 2007 :: 07:05
Печать  
На сколько я понимаю не в базе в которой запушена, а по базе к которой установлено соединение.
  
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Новые элементы справочника
Ответ #5 - 08. Ноября 2007 :: 11:15
Печать  
1) Если тип реквизита справочника неограниченная строка, то в SQL это тип ТЕКСТ, в методе ODBCRecordSet::ДобПараметр/AddParam вторым параметром (nSQLType) что ставить ?

Из базы1 в базу2 выгружается справочник Контрагентов, в базе2 он называется Собственник, но у него есть реквизит ID - это вн. id контрагента в базе1. В базе1 запускается обработка, происходит интерактивный выбор нужных элементов, далее проверяется чтобы в базе2 не было элементов с таким же значением реквизита ID как внутр ID контрагента, если такие есть то исключаем их из списка выгружаемых. Теперь вопрос могу ли я сгенерить внутр ID для новых элементов справочника Собственники. Попробовал с помощью SQQLOCK
Код
Выбрать все
Блокировка.УстановитьТипОбъекта("Справочник","Собственник");
{C:\1C-BASE\BETA\EXTFORMS\ВЫГРУЗКАКОНТРАГЕНТОВ.ERT(185)}: Не верный вид справочника.
 



Блокировка=СоздатьОбъект("SQLLock");

MetaDataWork работает с присоединенным md, ODBCRecordSet может работать с другой базой 1С(запрос в базе2 по поиску возможных дублей отработал нормально), а SQLLOCK не может этого делать ?
« Последняя редакция: 08. Ноября 2007 :: 12:42 - ev-kov »  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Новые элементы справочника
Ответ #6 - 08. Ноября 2007 :: 15:38
Печать  
Пробовал, проблем нет
Берем последний ИД, увеличиваем
Использовал курсор для инкрементации (или как это назвать) ИД
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Новые элементы справочника
Ответ #7 - 09. Ноября 2007 :: 02:09
Печать  
Цитата:
Пробовал, проблем нет
Берем последний ИД, увеличиваем
Использовал курсор для инкрементации (или как это назвать) ИД


А блокировал табличку _SUIDCTL ? как это делал, поподробнее с куском кода можно ?
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Новые элементы справочника
Ответ #8 - 09. Ноября 2007 :: 16:34
Печать  
В базе никого не было - не было необходимости блокировать
Вставлял ИД в свою таблицу, т.к. задача специфическая:

Код
Выбрать все
ТекстЗапроса = "
		|declare @rank int,
		|@id char(9)
		|declare rank_cursor cursor
		|for select id
		|from " + БазаИсточник + ".dbo." + ТаблицаИсточник + " as t
		|where t.id not in (
		|select tid
		|from " + ВремТаблица + ")
		|order by id
		|open rank_cursor
		|fetch next from rank_cursor into @id
		|set @rank = (select maxid from " + БазаПриемник + ".dbo._1suidctl where TYPEID = :ИД)
		|if @rank is null select @rank = 0
		|set @rank = dbo.Convert36To10(@rank)
		|while (@@fetch_status <> -1)
		|begin
		|select @rank, @id
		|set @rank = @rank + 1
		|insert into " + ВремТаблица + " values (dbo.sp_tohex(@rank, 6), @id, 1)
		|fetch next from rank_cursor into @id
		|end
		|close rank_cursor
		|deallocate rank_cursor
		|";
 

  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать