Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема сделать общую нумерацию документа для двух разных SQL баз 1С (число прочтений - 1288 )
Murik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 1
Зарегистрирован: 01. Февраля 2011
сделать общую нумерацию документа для двух разных SQL баз 1С
01. Февраля 2011 :: 08:28
Печать  
  Ребята, подскажите, как сделать общую нумерацию документа, например НалоговаяНакладная, в двух SQL базах 1C.
  База, нумерация которой будет ведущей, та, у которой налоговых за месяц больше (назовем ее ведущей).
  Следовательно подключаюсь я к ней из ведомой базы. Делаю я это вот так:

Функция глСоединениеСБД() Экспорт
     Попытка
           База = СоздатьОбъект("ODBCDatabase");
           База.Attach1C();
           Соединение = СокрЛП(Константа.СтрокаСоединенияСSQL); // соединяется нормально, проверено
           Рез = База.Соединение(Соединение);
           
           глРекордсет = СоздатьОбъект("ODBCRecordSet");
           глРекордсет.SetDatabase(База);
     Исключение
           Предупреждение("Нет соединения с БД Талонов!");
           Возврат 0;
     КонецПопытки;
     Возврат 1;
КонецФункции

// а потом в процедуре ВводНового() я хочу присвоить номер документу
  .....
       Если глСоединениеСБД() = 0 Тогда
           Возврат;
     КонецЕсли;

     ТаблицаНалоговых = СоздатьОбъект("SQLLock");
     ТаблицаНалоговых.УстановитьТипОбъекта("Документ","НалоговаяНакладная");
     ТаблицаНалоговых.УстановитьДатуНомера(РабочаяДата());
     //ТаблицаНалоговых.УстановитьТаймаут(10);
   НовыйНомерДокумента = ТаблицаНалоговых.НовыйНомер();
.........

  Но вот меня смущает объект SQLLock и его метод НовыйНомер(). Может это как раз то, что мне нужно, но почему-то не получается. Он постоянно формирует номер 000000001. Хотя я уже создал вручную в базах НН с номерами от 00000001 до 00000005.
  Причем мне нужно получить просто новый номер из ведущей базы, и зарезервировать его, чтобы ведущая база знала, что этот номер уже занят и т.д.
  Может кто работал с SQLLock подскажите, что я делаю неправильно и вообще, возможно ли это.
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: сделать общую нумерацию документа для двух разных SQL баз 1С
Ответ #1 - 03. Февраля 2011 :: 13:59
Печать  
Примерно так:

Код
Выбрать все
"
SELECT MAX(TMP.НомерДок)
FROM(
SELECT
MAX(DOCNO) AS НомерДок
FROM _1SJOURN  WITH (NOLOCK)
WHERE IDDOCDEF = $ВидДокумента.НалоговаяНакладаная
UNION ALL
SELECT
MAX(DOCNO)  AS НомерДок
FROM _1SDNLOCK WITH (NOLOCK)
WHERE CAST(LEFT(DNPREFIX,10) AS Int) = $ВидДокумента.НалоговаяНакладаная
) AS TMP" 


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