powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / из 1с 8.1 в Navision с чего начать?
13 сообщений из 13, страница 1 из 1
из 1с 8.1 в Navision с чего начать?
    #36888254
rasswet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поставлена задача сделать выгрузку данных из 8ки в Navision. Без промежуточного файла. т.е. напрямую в sql таблицу. Как выбрать данные в 1с я знаю. а вот дальше затык. Надо подключиться к Navision используя ADO (либо иначе)? Где про это можно почитатьа также Интересен пример, как из 1с помещать данные в SQL
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36888368
Volochkova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rasswetпоставлена задача сделать выгрузку данных из 8ки в Navision. Без промежуточного файла. т.е. напрямую в sql таблицу. Как выбрать данные в 1с я знаю. а вот дальше затык. Надо подключиться к Navision используя ADO (либо иначе)? Где про это можно почитатьа также Интересен пример, как из 1с помещать данные в SQL

Ой чета я очкую Славик
в Аксапте ( Навижен думаю такая же байда) есть тема с уникальными/ ключевыми полями, которые генерируются ( каким макаром тупо влом сидеть курить) системой.

Как вариант - сделать рядом стоящую SQL базу. В нее вливать данные ( ADO)
А Навижен пущай из нее сосет данные.

Хотя если не очкуете завалить целостность данных ( например в Навижене это временные таблицы), то чистый ADO

con ADOConnection
...
cmd.Execute ("Insert into ...") и т.д.

Но лично я за - хранимки. Ими вливать проще.
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36888525
s_ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rasswetпоставлена задача сделать выгрузку данных из 8ки в Navision. Без промежуточного файла. т.е. напрямую в sql таблицу.
начать лучше с мыслей о том, как вы планируете контролировать корректность данных с точки зрения навжина. насколько я помню, там куча проверок данных на корректность, и выполняются они на уровне приложения, а не БД (написаны не на sql, а на языке навижина).
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36888584
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У нас SAP стоит (база на Oracle). Никому в голову не приходило напрямую данные в базу пихать. Действительно, много нюансов - проверка целостности, дублирование в разные таблицы и пр. - и за всеми не уследишь. Это все на уровне [функционала, методов] системы делается. Для массовой загрузки чего-либо используем типовые механизмы (IDOC, LSMW и пр.). Уверен, что в Navision тоже есть такие.
PS
А вот считывать данные из Oracle считываем. Не редно это эффективнее раличных отчетов и ABAP-а.
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36888728
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rasswet,

С такими вопросами Вам надо на форум Мази .

По опыту рядом сидящих коллег, могу сказать, что они напрямую не льют даже в случае Nav-Nav.
Люьт в темповые таблицы и из них учитывают. С ключевыми полями особых проблем нету, но есть СИФТы и прочие подводные камешки.
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36889467
rasswet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AHDP,
значить буду лить в темповые. спасибо.
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36889589
oleg_shishkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот пример работы с ADO через OLEDB и ODBC провайдеров
там есть примеры чтения и записи данных с поддержкой транзакций
все для 1с 8.2 - если надо кину конфигурацию

// Процедура создания соединения с БД
Procedure CreateConnection(Form) export
// создаем соединение c БД
if isnull(Form.Connection) then
try
Form.Connection = Новый COMОбъект("ADODB.Connection");
if isnull(Form.ConnectionString) = true then
if Form.Provider = "SQLNCLI" then
if Form.Trusted_Connection = false then
Form.ConnectionString = "Provider = SQLNCLI;DRIVER=SQL Native Client;server="+Form.server+";uid="+Form.uid+";pwd="+Form.pwd+";Database="+Form.database+";Trusted_Connection=no;";
else
Form.ConnectionString = "Provider = SQLNCLI;DRIVER=SQL Native Client;server="+Form.server+";Database="+Form.database+";Trusted_Connection=yes;";
endif;
else
Form.Provider = "SQLOLEDB";
if Form.Trusted_Connection = false then
Form.ConnectionString = "Provider=SQLOLEDB;Driver=SQL Server;server="+Form.server+"; uid="+Form.uid+";pwd="+Form.pwd+";Database="+Form.database+";Trusted_Connection=no;";
else
Form.ConnectionString = "Provider=SQLOLEDB;Driver=SQL Server;server="+Form.server+";Database="+Form.database+";Trusted_Connection=yes;";
endif;
endif;
endif;
Form.Connection.ConnectionTimeout = 10;
Form.Connection.CommandTimeout = 0;
Form.Connection.CursorLocation = 3;
except
Form.Connection = NULL;
Предупреждение("Невозможно создать соединение. " + ОписаниеОшибки(),0,"Внимание !");
endtry;
endif;
endprocedure

// Процедура соединения с БД
Procedure Connect(Form) export
if not isnull(Form.Connection) then
// проверяем соединение
if Form.Connection.State = 0 and not isnull(Form.ConnectionString) then
try
// Соединяемся с БД
Form.Connection.Open(Form.ConnectionString);
except
Form.Connection = NULL;
Предупреждение("Невозможно установить соединение. " + ОписаниеОшибки(),0,"Внимание !");
endtry;
endif;
endif;
endprocedure

// Проседура разрыва соединения
Procedure Disconnect(Form,DWP) export
// разрываем соединение при закрытии окна
if Form.CloseConnection = true then
if not isnull(DWP.Recordset.Source) then
DWP.Recordset.close();
endif;
if not isnull(Form.Connection) then
try
Form.Connection.close();
except
Предупреждение("Невозможно разорвать соединение. "+ОписаниеОшибки(),0,"Внимание !");
endtry;
endif;
endif;

Form.Connection = NULL;
DWP.Recordset = NULL;
endprocedure

Procedure RollbackSQLTransaction(Connection) export
cnt = 0;
ТЗ = Выполнить_Запрос_SQL("select @@TRANCOUNT",Connection,false);
if ТЗ.count() > 0 then
if ТЗ.ВыгрузитьКолонку(0)[0] > 0 then
Connection.Execute("Rollback");
endif;
endif;
endprocedure

Procedure BeginSQLTransaction(Connection) export
Connection.Execute("BEGIN TRANSACTION");
endprocedure

Procedure CommitSQLTransaction(Connection) export
cnt = 0;
ТЗ = Выполнить_Запрос_SQL("select @@TRANCOUNT",Connection,false);
if ТЗ.count() > 0 then
if ТЗ.ВыгрузитьКолонку(0)[0] > 0 then
Connection.Execute("Commit");
endif;
endif;
endprocedure

// Функция выполняет SQL запрос без параметров и возвращает Таблицу Значений
Function Выполнить_Запрос_SQL(val ТекстЗапроса,Connection,Transactional) export
ТаблицаЗначенийРезультата = Новый ТаблицаЗначений;

if isnull(ТекстЗапроса) or isnull(Connection) then
return ТаблицаЗначенийРезультата;
endif;

try
ADODBError = false;

Cmd = Новый COMОбъект("ADODB.Command");
Cmd.ActiveConnection = Connection;

Cmd.CommandText = ТекстЗапроса;
if isnull(Cmd.CommandType) then
Cmd.CommandType = КонстантаCommandType("adCmdUnknown");
endif;

RecordSet = Новый COMОбъект("ADODB.RecordSet");

if Transactional then
Connection.Execute("BEGIN TRANSACTION");
Connection.Execute("set implicit_transactions off");
endif;

RecordSet = Cmd.Execute(); //Выполнение и получение набора данных

if Transactional then
Connection.Execute("Commit");
endif;

if RecordSet.State = 1 then
// заполняем ТЗ
for i = 0 to RecordSet.Fields.Count - 1 do //Создание и добавление колонок
ColumnName = RecordSet.Fields.Item(i).Name;
ColumnType = GetTypeColumn(RecordSet.Fields.Item(i).Type,RecordSet.Fields.Item(i).ActualSize);

if isnull(ColumnType) then
ТаблицаЗначенийРезультата.Колонки.Добавить(ColumnName);
else
ТаблицаЗначенийРезультата.Колонки.Добавить(ColumnName,ColumnType);
endif;
enddo;

while RecordSet.EOF = 0 do // Заполнение созданной таблицы
НоваяСтрока = ТаблицаЗначенийРезультата.Добавить();
for НомерСтолбца = 0 По RecordSet.Fields.Count - 1 do
НоваяСтрока.Установить(НомерСтолбца,RecordSet.Fields(НомерСтолбца).Value);
enddo;
RecordSet.MoveNext();
enddo;
RecordSet.close();
endif;

Cmd = NULL;
RecordSet = NULL;
except
ADODBError = true;
if Transactional then
RollbackSQLTransaction(Connection);
endif;
Предупреждение("Невозможно выполнить запрос: "+ТекстЗапроса+". " + ОписаниеОшибки(),0,"Внимание !");
Message("Невозможно выполнить запрос: "+ТекстЗапроса);
endtry;
return ТаблицаЗначенийРезультата;
endfunction

// Функция выполняет SQL запрос с параметрами и возвращает Таблицу Значений
Function Выполнить_Запрос_SQL_Параметры(val ТекстЗапроса,Connection,Параметры) export
ТаблицаЗначенийРезультата = Новый ТаблицаЗначений;

if isnull(ТекстЗапроса) or isnull(Connection) then
return ТаблицаЗначенийРезультата;
endif;

try
ADODBError = false;

Cmd = Новый COMОбъект("ADODB.Command");
Cmd.ActiveConnection = Connection;

Cmd.CommandText = ТекстЗапроса;
if isnull(Cmd.CommandType) then
Cmd.CommandType = КонстантаCommandType("adCmdUnknown");
endif;

if Параметры.Count() > 0 then
ПараметрЗапроса = Новый COMОбъект("ADODB.Parameter");

for each КлючИЗначение in Параметры do
if isnull(КлючИЗначение.Значение) then
Cmd = NULL;
return ТаблицаЗначенийРезультата;
endif;
P = ParameterADO(КлючИЗначение);
ПараметрЗапроса = Cmd.CreateParameter(P.Name,P.Type,P.Direction,P.Size,P.Value);
Cmd.Parameters.Append(ПараметрЗапроса)
enddo;
endif;

RecordSet = Новый COMОбъект("ADODB.RecordSet");
RecordSet = Cmd.Execute(); //Выполнение и получение набора данных

// заполняем ТЗ
if RecordSet.State = 1 then
for i = 0 to RecordSet.Fields.Count - 1 do //Создание и добавление колонок
ColumnName = RecordSet.Fields.Item(i).Name;
ColumnType = GetTypeColumn(RecordSet.Fields.Item(i).Type,RecordSet.Fields.Item(i).ActualSize);

if isnull(ColumnType) then
ТаблицаЗначенийРезультата.Колонки.Добавить(ColumnName);
else
ТаблицаЗначенийРезультата.Колонки.Добавить(ColumnName,ColumnType);
endif;
enddo;

while RecordSet.EOF = 0 do // Заполнение созданной таблицы
НоваяСтрока = ТаблицаЗначенийРезультата.Добавить();
for НомерСтолбца = 0 По RecordSet.Fields.Count - 1 do
НоваяСтрока.Установить(НомерСтолбца,RecordSet.Fields(НомерСтолбца).Value);
enddo;
RecordSet.MoveNext();
enddo;
RecordSet.close();
endif;

Cmd = NULL;
RecordSet = NULL;
except
ADODBError = true;

Предупреждение("Невозможно выполнить запрос: "+ТекстЗапроса+". " + ОписаниеОшибки(),0,"Внимание !");
Message("Невозможно выполнить запрос: "+ТекстЗапроса);
endtry;
return ТаблицаЗначенийРезультата;
endfunction
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36889631
rasswet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
oleg_shishkin,
мегареспект! буду на выходных прорабоатывать.
если можно, то скиньте на dimabdn(ат)gmail.com
я так понимаю наиболее простым на данном этапе для меня будет создать на скуле базу с одной таблицей. и вливать из 1с в неё. а далее пусть тот, кто навижином занимается, из этой таблицы всё забирает себе.
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36889683
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rasswet,

Пусть тогда лучше навиженцы из вашей базы читают. А то как будете разбираться, какие данные откатить в Навижене, когда 1Ску из резервной копии восстановите?
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36889707
rasswet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AHDP,
прежде чем они смогут читать, мне нужно им данные подготовить. т.е. выбрать из базы проводки преобразовать их многократно, заменяя там аналитику по определенным правилам и т.п.
в 1с готовых данных нет, которые бы они могли раз и взять.
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36889864
1С ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rasswet,

Тогда с тем же успехом можно создать регистр в 1с-е, чтобы с АДО не заморачиваться, и туда данные лить, а (не)навиженцы будут напрямую оттуда тянуть данные куда им вздумается
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36890256
oleg_shishkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Послал конфигурацию - что непонятно - пишите
...
Рейтинг: 0 / 0
из 1с 8.1 в Navision с чего начать?
    #36890423
rasswet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1С ник,

думаю навиженцы не захотят копаться в регистре 1с. они хотят работать с тем, что им знакомо.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / из 1с 8.1 в Navision с чего начать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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