1C vs. Nexus

1C vs. Nexus

Напишите интересна ли тема?

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

1C плюха

1C плюха
Не уверен, но может кто знает решение?

ИМХО, Category из

ИМХО, Category из sysdatabases тут не причем. Если верить сообщению, то ты пытаешься из копии каталога с метаданными, подключиться к БД, у которой прописан другой каталог.
У тебя метаданные 1С где лежат - на диске или в БД на SQL?

Да я ошибся

Да я ошибся Category тут ни при чем, а проблема в опубликовании таблицы _1SCONNECT. Если ее не опубликовывать, то все ок, вроде. Дело в том, что схему опубликованной базы менять нельзя, а 1С видимо чтото меняет, но ответ ее абсолютно не адекватен.

select * from _1SCONNECT

use [torg_planeta]
exec sp_addmergearticle
@publication = N'torg_planeta',
@article = N'_1SCONNECT',
@source_owner = N'dbo',
@source_object = N'_1SCONNECT',

А ты обрати

А ты обрати внимание, что делает 1С 7.7, когда запускается.
Она проверяет все объекты своей БД, и если они отличаются от ее описания, то как раз и выдает такое сообщение.
sp она, ИМХО, тупо пересоздает, а вот с таблицами видимо так постпать не может.
А сравнивает она структуру скорее всего тупо: по символьно скрипт у себя и скрипт из базы.

Это так

Это так почему-то пересоздается одна таблица _1SConnect. Ну и ладно, я ее просто вычеркнул из репликации. Теперь репликация и 1С клиенты работают совместно. Тебе случайно не надо, чтобы несколько 1С версией 7.7 собирались в одной базе данных, например, 1С 8.1?

Хм, может и

Хм, может и вправду не то делаю?
Вначале я создаю пустой каталог и в этом каталоге размещаю файлы БД db.mdf and db.ldf. Далее запускаю конфигуратор и добавляю новую бд, указывая этот пустой каталог с файлами базы. В диалоге идет запрос а какую версию 1С хотите? Я говорю сиквельную. Мне говорят ок. Далее я заполняю информацию доступа к сиквелу и загружаю данные из файловой конфигурации. Все с такой бд и работаю.

Все прекрасно работает с несколькими пользователями до тех пор пока я не сделаю эту базу данных опубликованной на сервере, чтобы данные реплицировать (это майкрософтовская репликация и никакого отношения к 1С не имеет). Как только я базу опубликовал так сразу появляется ошибка. Убрал репликацию - ошибка пропала.

Я посмотрел в каталог там лежат файлы *.md and *.dds, *.dba, *.cfg
Не понял про метаданные в БД.

*.md - метаданные

*.md - метаданные 1С

md - metadata я понял.

md - metadata я понял. Вопрос как их хранить в БД?

Не знаю, может и

Не знаю, может и нет такой опции.

прецендент обхода 1С API

прецендент обхода 1С API
Дописал сегодня решение и хочу сказать, что получил большое удовольствие. Все работает как часы. Могу предложить свои услуги в разработке прямых запросов к 1С версия 77 базе данных. Да в принципе и 8.1. А также решении задач, требующих групповых операций в рамках сиквела.

Считаю, что заявлен прецендент обхода 1С API разработчиков с целью повышения производительности системы 1С.

Единственно, что я поменял в ядре nexus так это задокументировал 'Документ уже открыт!!!'. Понятно, что последствия могут быть, но мешает.

Еще вариант может быть такой добавить вместо задокументированного
if exists(select * from Detailed where u=@@spid and UDN=@UDN )
and not exists (select * from Detailed where u=@@spid and UDN=@UDN and ValueType=8)
begin raiserror('Документ уже открыт!!!', 11, 11) return 1 end

ALTER procedure [dbo].[PreDetailEx]
@UDN integer,
@ViewMode varchar(32), -- название моды
@IsEdit int -- 1 просмотр, 2 - редактирование delete detailed
AS
declare @iRet int

--if exists(select * from Detailed where u=@@spid and UDN=@UDN )
--begin raiserror('Документ уже открыт!!!', 11, 11) return 1 end

exec @iRet=PreDetail @UDN, @ViewMode, @IsEdit
if @iRet <> 0 return @iRet
select * from ProcParam (nolock) where u=@@spid and UDN=@UDN

Расскажи, как

Расскажи, как это мешало?

ValueType=8 - это

ValueType=8 - это ускоренный вывод грида только для просмотра. Я использую его в виде отчета.Теперь, если сейчас попытаться воспользоваться для этого же документа любым методом, скажем, посмотреть информацию, то тебе дадут по рукам и скажут, что документ уже открыт. Но я то его открыл только для чтения, а потом посмотрел отчет и захотел чтото посмотреть или изменить. А мне сообщение, что документ уже открыт. Вот это и мешает.

Очень

Очень интересно.
Трюк с "имя папки = имя таблицы" не понял как устроен, но впечатляет. Магия!!!

Добавил

Добавил информацию о трюке. Это все класс "код", который был написан лет 5 назад. Теперь уже и не вспомнить как, но работает.
Самое интересное, что он дает наглядное представление, как можно сделать конвертацию классов. То есть класс объекта - это не абсолют и его можно спокойно поменять.

А что за нексус?

А что за нексус? Гугол даёт много ссылок, непонятно, какой именно имеется в виду. Поэтому непонятен контекст всего этого.

Вот этот

СТ я забыл как

СТ я забыл как делать ссылку активной как у тебя. Напомни плз.

Стандартно

Стандартно: <a href="http://www.arbinada.com">Arbinada</a>

Шарман

Заполнение из таблицы впечатляет :) Осталось добавить настраиваемую схему отображения любой таблицы на панельку справа.

Но "толстый" клиент, который сейчас принято называть "умным" (smart), вовсе не означает большой трафик, скорее, наоборот: у толстяка многократно большие возможности кешировать данные и обрабатывать их локально. Другое дело, что нерадивые разработчики этим не умеют пользоваться

Если кто-то

Если кто-то обижен, то прошу извинить и буду называть Сеню умным:). Конечно это альтернативное направление, когда умный клиент использует базу как склад. Пришел взял, что надо, положил, что решил сам, и теперь сам работает у себя. Я не сторонник такого подхода так как с несколькими умными клиентами групповой работы не получается. Толпа мозгов и мозг толпы - это не одно и то же.

Тут мой сын придумал афоризм.
С голых по нитке, налоговой рубашка.:)

Кэширование на

Кэширование на клиенте пораждает такую мощную и сложную систему оповещения, что ни кто с этим связываться не хочет.

Кеширование есть всегда

Кеширование есть всегда (для тонких клиентов - в неких буферах сервера), система оповещений принципиально не отличается. Другое дело, что ее далеко не всегда реализуют. Для клиентского кеша есть разработанные механизмы на уровне DataSet. В ORM/ОРП также есть встроенные механизмы хотя бы на уровне проверки timestamp объекта при записи данных в базу.