powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Интеграция самописной системы с 1С
27 сообщений из 27, показаны все 2 страниц
Интеграция самописной системы с 1С
    #33548537
Nissa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Планируется разработка учетной системы (Delphi7+MSSQL2000), в которой есть достаочно большая учетно-финансовая часть (ведение прейскурантов, договоров, выписка счетов, контроль платежей, ведение лицевых счетов и т.д.). Собственно вопрос: есть ли смысл писать все это самим или же попытаться релизовать все это на 1С. Есть один нюанс - получается очень много двунаправленных связей между нашей программой и 1С. Т.е. надо не только выгружать данные в 1С, но и постоянно обращаться к даным 1С. Я, собственно говоря, боюсь, что написание нужной конфигурации будет более сложным и менее надежным, чем полностью самописное произведение. Может быть у кого-то есть опыт решение подобных проблем? Была бы очень благодарна за комментарии.
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33548601
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на чтении данных из 1С никаких проблем нет, кроме разве что периодических реквизитов в 7.7
Прямую запись в таблицы 1С не рисковали делать (1С-кие ID...), если требовалась загрузка то через промежуточный слой, загрузка из которого средствами 1С
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33548911
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmна чтении данных из 1С никаких проблем нет, кроме разве что периодических реквизитов в 7.7
и с периодическими тоже нет
iscrafmПрямую запись в таблицы 1С не рисковали делать (1С-кие ID...), если требовалась загрузка то через промежуточный слой, загрузка из которого средствами 1С
уже давно 1С-ими умельцами написаны функции создания ID на T-SQL, саое трудно это механизмы УРБД и Рекистры, с остальным все более или менее просто
на счет промежуточного слоя - плохой подход, т.к. если все поля в 1С и в программе источнике изменить, то при загрузке элемент не сможет быть найден, если же делать синхронизацию по ID - то элемент всегда будет найден корректно
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33548921
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 автор
вопрос сложный, все зависит от ваших знаний и умений в осбласти Delphi+MSSQL и 1С+MSSQL
я бы делал все на 1С+MSSQL, т.к. лучше это знаю
в вашем случае оцените сроки и силы на реализацию на том и на др. продуктах и там уже смотрите по обстоятельством, что будет эффективнее
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33549096
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей84на счет промежуточного слоя - плохой подход, т.к. если все поля в 1С и в программе источнике изменить, то при загрузке элемент не сможет быть найден, если же делать синхронизацию по ID - то элемент всегда будет найден корректно
Возможно. Делалось только разово. Для постоянного обмена скорее всего пришлось конечно бы делать синхронизацию по ID.
Кстати, нет ссылки на разработки по формированию ID в T-SQL?
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33549115
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmна чтении данных из 1С никаких проблем нет, кроме разве что периодических реквизитов в 7.7
Прямую запись в таблицы 1С не рисковали делать (1С-кие ID...), если требовалась загрузка то через промежуточный слой, загрузка из которого средствами 1С

Судя по всем речь шла о прямом доступе к таблицам.

Есть еще один достаточно надежный способ - OLE. Подключаетесь через компоненту v7plus.dll и обращаетесь к данным методами 1С. Никаких проблем в получением периодических значений (речь про 7.7., в 8.0 периодических реквизитов нету)

Что касается самой задачи. Зависит от количества документов и операций, объемов справочников и т.д. Как вариант (подумав о производительности, масштабируемости) написать все самим "с нуля" на 1С 8.0. (подсматривая или целиком копируя из конфигурацйи подходящие блоки).
Написание конфигурации вряд ли будет сложнее чем самописное произведение, поскольку большинство сущностей реальных бизнес процессов уже заложено в систему (справочники, подчиненные справочники, документы с множемтвенными табличными частями, регистры, планы счетов и т.д.). Все таки меньше времени уйдет на прямую реализацию бизнес-модели, чем проектирование такого рода сущностей и реализацию бизнес-модели.

Большинство проблем и несовместимостей и несправедливых наездов на 1С-овцев это "кривость конфигураций", которая результат "быстрой разработки". Но такая кривость встречается везде и повсюду и в большой степени зависит от квалификации и системности проектировщиков.
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33549150
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dinamo
Судя по всем речь шла о прямом доступе к таблицам.

Есть еще один достаточно надежный способ - OLE. Подключаетесь через компоненту v7plus.dll и обращаетесь к данным методами 1С. Никаких проблем в получением периодических значений (речь про 7.7., в 8.0 периодических реквизитов нету)

Да, нужен был прямой доступ чтобы забрать полностью всю БД. Где Вы раньше были.. :)
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33549173
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmДа, нужен был прямой доступ чтобы забрать полностью всю БД. Где Вы раньше были.. :)

В этом плане вам OLE не собо помог бы, поскольку для обращения в метаданным нужно знать их структуру и свойства. OLE полезен для синхронизации разных баз в он-лайне.
Но в свою очередь такое соединение ограничено "техническими возможностями 1С".
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33549228
Nissa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению писать все на 1С не получится - . Рален ли такой вариант: взять клиент-серверную 1С и работать напрямую с её таблицами из своего приложения? Я так поняла, что реален.
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33549297
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NissaК сожалению писать все на 1С не получится - . Рален ли такой вариант: взять клиент-серверную 1С и работать напрямую с её таблицами из своего приложения? Я так поняла, что реален.
реален, но трудоемок, т.к. для его реализации нужно знать процессы 1С на низком уровне, на изучение которых может уйти достаточно много времени.

2 iscrafm
http://www.sinor.ru/~my1c/knowhow/SQLcnvID.html
ID в 1С имеет длину 9 символов
первые 6-ть это 36-ий код представляющий из себя инкремент
правые 3-и символа - это код ИБ создания объетка

теперь пишем 2 ХР используя эти знания и все работает :)
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33549345
Nissa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос не снят :-) - стоит ли связываться, или ну его на фиг?
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33549399
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей84 NissaК сожалению писать все на 1С не получится - . Рален ли такой вариант: взять клиент-серверную 1С и работать напрямую с её таблицами из своего приложения? Я так поняла, что реален.
реален, но трудоемок, т.к. для его реализации нужно знать процессы 1С на низком уровне, на изучение которых может уйти достаточно много времени.

2 iscrafm
http://www.sinor.ru/~my1c/knowhow/SQLcnvID.html
ID в 1С имеет длину 9 символов
первые 6-ть это 36-ий код представляющий из себя инкремент
правые 3-и символа - это код ИБ создания объетка

теперь пишем 2 ХР используя эти знания и все работает :)
спасибо
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33550259
Не дождавшись благих вестей от 1С, народ принялся хакать формат хранения.
Первые попытки зафиксированы 5-7 лет назад :)
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33551662
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну_почему_жеНе дождавшись благих вестей от 1С, народ принялся хакать формат хранения.
Первые попытки зафиксированы 5-7 лет назад :)
А не дешевле бухгалтерию самим написать?..
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33551855
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dogen Ну_почему_жеНе дождавшись благих вестей от 1С, народ принялся хакать формат хранения.
Первые попытки зафиксированы 5-7 лет назад :)
А не дешевле бухгалтерию самим написать?..
Написать может и дешевле. Только поддержка дело гемморойное.
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33552071
NissaВопрос не снят :-) - стоит ли связываться, или ну его на фиг?
А почему на 1с не получится, какие то требования? Если 1с не пролезает, почему не посмотреть вокруг и не рассмотреть известные и менее известные готовые инструментарии.
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33553768
Фотография Комсомолка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NissaВопрос не снят :-) - стоит ли связываться, или ну его на фиг?
Мне кажется, что вы сами должны посчитать и понять, что для Вас приемлемо, а что - нет, поскольку всей информацией владеете только Вы (и что-то не спешите ею с нами делиться :)) :

Во-первых, какие ресурсы отведены Вами под систему, сколько пользователей будет работать с интерфейсами Дельфи и сколько - с 1С? Вы в курсе, что при увеличении рабочих мест под 1С для работы с общими БД придется создавать неслабую терминальную систему? Во-вторых, насколько хорошо Вами изучены возможности стандартных конфигураций 1С? В-третьих, в какой предметной области будет работать Ваша учетная система?

В политике 1С очень четко прослеживается мысль - "ВСЕ должно быть сделано на 1С, а все остальное - превращается в костыли и сильно усложнит жизнь". Кстати, на мой взгляд, это - "красная нить" ЛЮБОЙ системы: все системы тяжело переживают попытки "скрещивания".

Есть два варианта: либо ВСЕ делать на 1С, либо использовать 1С в качестве приложения для печати документации после соотв. выгрузки данных - и не более того (ввод каких-либо данных через 1С запретить полностью или свести к минимуму). Совмещение 1С и чего-то еще (по-крайней мере по моему опыту) идет по следующим сценариям:
1. Работа останавливается и для ее запуска приходится вводить новую должность - "администратор справочников" - это такие девочки, которые постоянно что-то вводят в 1С
2. Самописная система вытесняет 1С в комнату бухов и, в конце-концов, превращает 1С в "печатальщик" накладных, счетов и прочей официальной бумаженцией
3. Система продолжает работать при нечеловеческих усилиях группы техподдержки под постоянные телефонные трели.

P.S. Принципиально, для УЧЕТНОЙ системы возможностей 1С "самой-по-себе" должно хватить, но при попытке создания интегрированной в бизнес-процессы ИНФОРМАЦИОННОЙ системы с помощью 1С ресурсы потребуются очень значительные.
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33554381
GRN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRN
Гость
procedure LoadDefaultRulesOfExchange1C();
var
dsc: TDSDesc;
begin
if not CheckPassw('Требуются привилегии на загрузку правил обмена. Пароль:', '999') then
begin
SMsg('Неверный пароль ! Обратитесь к администратору.');
Exit;
end;

try
try
Dsc := DscQueryCreate('Exchange1C');
Dsc.Clear;
Dsc.Add('DELETE FROM #TABLE');
Dsc.ExecSQL;
Dsc.Close;
CloseDsc(Dsc);

Dsc := MakeInsertDscQuery('Exchange1C');

// >> контрагенты
Dsc.PBN('Sbk', ftInteger, 1); Dsc.PBN('FieldE2', ftString, 'Name'); Dsc.PBN('Field1C', ftString, 'Наименование'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 1); Dsc.PBN('FieldE2', ftString, 'PASSPORTS'); Dsc.PBN('Field1C', ftString, 'ДокументСерия'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 1); Dsc.PBN('FieldE2', ftString, 'PASSPORTN'); Dsc.PBN('Field1C', ftString, 'ДокументНомер'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 1); Dsc.PBN('FieldE2', ftString, 'PASSPORTG'); Dsc.PBN('Field1C', ftString, 'ДокументКемВыдан'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 1); Dsc.PBN('FieldE2', ftString, 'PASSPORTD'); Dsc.PBN('Field1C', ftString, 'ДокументДатаВыдачи'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 1); Dsc.PBN('FieldE2', ftString, 'FName'); Dsc.PBN('Field1C', ftString, 'ПолнНаименование'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 1); Dsc.PBN('FieldE2', ftString, 'Address'); Dsc.PBN('Field1C', ftString, 'ПочтовыйАдрес'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 1); Dsc.PBN('FieldE2', ftString, 'JAddress'); Dsc.PBN('Field1C', ftString, 'ЮридическийАдрес'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 1); Dsc.PBN('FieldE2', ftString, 'Telf'); Dsc.PBN('Field1C', ftString, 'Телефоны'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 1); Dsc.PBN('FieldE2', ftString, 'INN'); Dsc.PBN('Field1C', ftString, 'ИНН'); Dsc.ExecSQL;
// << контрагенты

// >> сотрудники
Dsc.PBN('Sbk', ftInteger, 2); Dsc.PBN('FieldE2', ftString, 'Name'); Dsc.PBN('Field1C', ftString, 'Наименование'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 2); Dsc.PBN('FieldE2', ftString, 'PASSPORTS'); Dsc.PBN('Field1C', ftString, 'ДокументСерия'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 2); Dsc.PBN('FieldE2', ftString, 'PASSPORTN'); Dsc.PBN('Field1C', ftString, 'ДокументНомер'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 2); Dsc.PBN('FieldE2', ftString, 'PASSPORTG'); Dsc.PBN('Field1C', ftString, 'ДокументКемВыдан'); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 2); Dsc.PBN('FieldE2', ftString, 'PASSPORTD'); Dsc.PBN('Field1C', ftString, 'ДокументДатаВыдачи'); Dsc.ExecSQL;
// << сотрудники

// >> Перечисление.Налоги
Dsc.PBN('Sbk', ftInteger, 118); Dsc.PBN('FieldE2', ftString, 'Name'); Dsc.PBN('Field1C', ftString, ''); Dsc.ExecSQL;
Dsc.PBN('Sbk', ftInteger, 118); Dsc.PBN('FieldE2', ftString, 'FName'); Dsc.PBN('Field1C', ftString, ''); Dsc.ExecSQL;
// << Перечисление.Налоги

// >> Места хранения
Dsc.PBN('Sbk', ftInteger, 116); Dsc.PBN('FieldE2', ftString, 'Name'); Dsc.PBN('Field1C', ftString, 'Наименование'); Dsc.ExecSQL;
// << Перечисление.Налоги

SMsg('Загрузка правил обмена с 1С по умолчанию завершена успешно.')
finally
Dsc.CommitDB;
CloseDsc(Dsc);
end;
except
SMsg('Загрузка правил обмена с 1С по умолчанию завершена не успешно.')
end;
end;
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33554383
GRN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRN
Гость
procedure Imp1CDirect(ClickSbk: string); // ИМПОРТ
var
V77, V77Obj, V77RS, V77Bank, V77P: OleVariant;
aSubk, aMSubk, rules: TEraList;
Kod, cnt, i, k: integer;
ObjName, PName, fields: string;
IsDict: boolean; // Является ли данный тип 1C справочником или перечислением
FieldsE2, Fields1C: TStringList;
finded: boolean;

wc: string;
Sbk: integer;
T_Dsc, dscMSubk: TDSDesc;
I_MSubk: TErQuery;
begin
try
MeterOpen('Импорт данных из 1С...');

V77 := Open1C(False);

ClickSbk := SindGetStrings(ClickSbk);
wc := 'SBK IN ('+ClickSbk+')';

aSubk := erLoadDF('Subk', wc, '');

aSubk.First(); // Удаляем поля с пустыми строками в TYPESUBK_1C
while not aSubk.eof do
begin
ObjName := aSubk.fbn('TYPESUBK_1C').AsString;
IsDict := (Pos(UpperCase('Справочник'), UpperCase(ObjName)) > 0) or
(Pos(UpperCase('Перечисление'), UpperCase(ObjName)) > 0);

if not IsDict then aSubk.Del else aSubk.Next;
end;

aSubk.First();
while not aSubk.eof do
begin
Sbk := aSubk.fbn('Sbk').Value;

ObjName := aSubk.fbn('TYPESUBK_1C').AsString;
IsDict := Pos(UpperCase('Справочник'), UpperCase(ObjName)) > 0;
if not IsDict then PName := copy(ObjName, 14, length(ObjName)); // Название вида перечисления

rules := erLoadDF('Exchange1C', 'Sbk='+ITS(Sbk));
if rules.Count <= 0 then
begin
fields := 'Name;FName';
FieldsE2 := TStringList.Create;
Fields1C := TStringList.Create;
FieldsE2.Add('Name');
Fields1C.Add('Наименование'); // ??? GRN 13.07.2004
FieldsE2.Add('FName');
Fields1C.Add('Наименование'); // ??? GRN 13.07.2004
end else
begin
rules.First();
fields := '';
FieldsE2 := TStringList.Create;
Fields1C := TStringList.Create;
while not rules.eof do
begin
fields := fields + rules.fbn('FieldE2').AsString + ';';
FieldsE2.Add(rules.fbn('FieldE2').AsString);
if Trim(rules.fbn('Field1C').AsString) <> '' then
Fields1C.Add(rules.fbn('Field1C').AsString);
rules.Next;
end;
end;
if Sbk = 1 then
fields := fields + 'DefRS;NAMEBANK;BANKCITY;BIK;KS';

FreeAndNil(rules);

aMSubk := erLoadDF('MSubk', 'SBK='+ITS(Sbk), 'Ako;'+fields);

cnt := 1;
if IsDict then
begin
V77Obj := V77.CreateObject(ObjName);
V77Obj.SelectItems;
V77Obj.SelectGroup(0);

if Sbk = 1 then V77RS := V77.CreateObject('Справочник.РасчетныеСчета');

while V77Obj.GetItem > 0 do // Выборка
begin
Kod := V77Obj.GetAttrib('Код');
if V77Obj.IsGroup('') = 1 then
begin
MeterMove('- ' + NumStr(Kod, 4));
Continue;
end;

finded := aMSubk.FindKey(Kod);
if finded then
begin
MeterMove('Выборка субконто ' + ITS(Sbk) + ' :' + ITS(cnt));
inc(cnt);
Continue;
end else aMSubk.Insert;

aMSubk.FBN('Ako').Value := Kod;
for i := 0 to FieldsE2.Count-1 do
if aMSubk.FBN(FieldsE2.Strings ).DataType = ftString then
aMSubk.FBN(FieldsE2.Strings).Value := Trim(V77Obj.GetAttrib(Fields1C.Strings))
else
aMSubk.FBN(FieldsE2.Strings).Value := V77Obj.GetAttrib(Fields1C.Strings);

if Sbk = 1 then
begin
V77RS.ИспользоватьВладельца(V77Obj.Текущийэлемент);
V77RS.ВыбратьЭлементы;
while V77RS.ПолучитьЭлемент = 1 do
begin
if V77RS.ПометкаУдаления = 1 then Continue;

aMSubk.FBN('DefRS').Value := V77RS.Номер;
if (V77.ПустоеЗначение(V77RS.БанкОрганизации) = 0) then
begin
V77Bank := V77RS.БанкОрганизации;
aMSubk.FBN('NAMEBANK').Value := V77Bank.Наименование;
aMSubk.FBN('BANKCITY').Value := V77Bank.Местонахождение;
aMSubk.FBN('BIK').Value := V77Bank.Код;
aMSubk.FBN('KS').Value := V77Bank.КоррСчет;
Break;
end;
end;
end;

aMSubk.Post;
MeterMove('Выборка субконто ' + ITS(Sbk) + ' :' + ITS(cnt));
inc(cnt);
end;
end else
begin
V77Obj := V77.EvalExpr('Перечисление.ПолучитьАтрибут("'+ PName + '")');
for k := 1 to V77Obj.КоличествоЗначений('') do
begin
V77P := V77Obj.ЗначениеПоНомеру(k);

Kod := V77P.ПорядковыйНомер('');

finded := aMSubk.FindKey(Kod);
if finded then
begin
MeterMove('Выборка субконто ' + ITS(Sbk) + ' :' + ITS(cnt));
inc(cnt);
Continue;
end else aMSubk.Insert;

aMSubk.FBN('Ako').Value := Kod;
aMSubk.FBN('Name').Value := Trim(V77P.Идентификатор);
aMSubk.FBN('FName').Value := Trim(V77P.Идентификатор);

aMSubk.Post;
MeterMove('Выборка субконто ' + ITS(Sbk) + ' :' + ITS(cnt));
inc(cnt);
end;
end;

try
T_Dsc := DscQueryCreate('MSUBK');
T_Dsc.StartTransaction;

dscMSubk := OpenDsc('MSUBK');
dscMSubk.LoadNewOrderClause(' ');
dscMSubk.LoadWhereClause('A.SBK=:SBK AND A.AKO=:AKO');
dscMSubk.GenerateQuery;

I_MSubk := MakeInsertErQuery('MSUBK');
if I_MSubk = nil then Exit;

aMSubk.First; cnt := 1;
while not aMSubk.eof do
with aMSubk do begin
MeterMove('Сохранение в БД: ' + ITS(cnt));

Kod := fbn('Ako').Value;

dscMSubk.PBN('SBK', ftInteger, Sbk);
dscMSubk.PBN('AKO', ftInteger, Kod);
dscMSubk.FastReopen;
if not dscMSubk.DataSet.EOF then // Уже есть такая запись
begin
Next;
Inc(cnt);
Continue;
end;

I_MSubk.PBN('SBK', ftInteger, Sbk);
I_MSubk.PBN('AKO', ftInteger, Kod);
for i := 0 to Fields.Count-1 do
I_MSubk.PBN(Fields.FieldName, Fields.DataType, fbn(Fields.FieldName).Value);

I_MSubk.ExecSQL;

aMSubk.Next;
Inc(cnt);
end;
// I_MSubk.CommitDB;
T_Dsc.Commit;
finally
T_Dsc.Rollback;
CloseDsc(dscMSubk);
CloseDsc(T_Dsc);
I_MSubk.Free;
end;

FreeAndNil(FieldsE2);
FreeAndNil(Fields1C);
aSubk.Next;
end;

SMsg('Импорт завершен успешно!');
finally
v77 := UnAssigned; V77Obj := UnAssigned; V77RS := UnAssigned; V77Bank := UnAssigned;
FreeAndNil(aSubk);
FreeAndNil(aMSubk);
if rules <> nil then FreeAndNil(rules);
if FieldsE2 <> nil then FreeAndNil(FieldsE2);
if Fields1C <> nil then FreeAndNil(Fields1C);
MeterClose;
end;
end;
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33554387
GRN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRN
Гость
procedure Exp1CDirect(ClickSbk: string; // Список субконто справочника
ReplaceData: boolean // Заменять существующие данные в 1С или оставить без изменения
); // ЭКСПОРТ

function Key1S(kod: integer): string;
begin
result := LPad(ITS(kod), 9);
end;

var
V77, V77Obj, V77RS, V77Bank: OleVariant;
aSubk, aMSubk, rules: TEraList;
Kod, kod2, cnt, i, kodPC: integer;
ObjName, fields: string;
IsDict: boolean; // Является ли данный тип 1C справочником или перечислением
FieldsE2, Fields1C: TStringList;

wc: string;
Sbk: integer;
begin
try
MeterOpen('Экспорт данных в 1С...');

V77 := Open1C(False);

ClickSbk := SindGetStrings(ClickSbk);
wc := 'SBK IN ('+ClickSbk+')';

aSubk := erLoadDF('Subk', wc, '');

aSubk.First(); // Удаляем перечисления и поля с пустыми строками в TYPESUBK_1C
while not aSubk.eof do
begin
ObjName := aSubk.fbn('TYPESUBK_1C').AsString;
IsDict := Pos(UpperCase('Справочник'), UpperCase(ObjName)) > 0;

if not IsDict then aSubk.Del else aSubk.Next;
end;

aSubk.First();
while not aSubk.eof do
begin
Sbk := aSubk.fbn('Sbk').Value;

ObjName := aSubk.fbn('TYPESUBK_1C').AsString;

rules := erLoadDF('Exchange1C', 'Sbk='+ITS(Sbk));
if rules.Count <= 0 then
begin
fields := 'Name';
FieldsE2 := TStringList.Create;
Fields1C := TStringList.Create;
FieldsE2.Add('Name');
Fields1C.Add('Наименование');
end else
begin
rules.First();
fields := '';
FieldsE2 := TStringList.Create;
Fields1C := TStringList.Create;
while not rules.eof do
begin
fields := fields + rules.fbn('FieldE2').AsString + ';';
FieldsE2.Add(rules.fbn('FieldE2').AsString);
if Trim(rules.fbn('Field1C').AsString) <> '' then
Fields1C.Add(rules.fbn('Field1C').AsString);
rules.Next;
end;
end;
if Sbk = 1 then
fields := fields + 'DefRS;NAMEBANK;BANKCITY;BIK;KS';

FreeAndNil(rules);

aMSubk := erLoadDF('MSubk', 'SBK='+ITS(Sbk), 'Ako;'+fields);

if aMSubk.Count <= 0 then
begin
FieldsE2.Free; Fields1C.Free;
aSubk.Next;
Continue;
end;

cnt := 1;

aMSubk.First();

V77Obj := V77.CreateObject(ObjName);
V77Obj.SelectItems;
V77Obj.SelectGroup(0);

while not aMSubk.eof do // Выборка
begin
Kod := aMSubk.fbn('Ako').Value;

if v77Obj.FindByCode(Key1S(Kod)) then
begin
if ReplaceData then
begin
for i := 0 to FieldsE2.Count-1 do
V77Obj.SetAttrib(Fields1C.Strings , aMSubk.fbn(FieldsE2.Strings).AsString);
v77Obj.Write;
end;
end else
begin
v77Obj.New;
V77Obj.Код := Kod;
for i := 0 to FieldsE2.Count-1 do
V77Obj.SetAttrib(Fields1C.Strings, aMSubk.fbn(FieldsE2.Strings).AsString);
v77Obj.Write;
end;

{ if Sbk = 1 then
begin
if Trim(aMSubk.fbn('DefRS').AsString) <> '' then
begin
V77RS := V77.CreateObject('Справочник.РасчетныеСчета');
V77RS.ИспользоватьВладельца(V77Obj.ТекущийЭлемент);

kodPC := 1;
while V77RS.НайтиПоКоду(ITS(kodPC)) > 0 do inc(kodPC);

V77RS.Новый;
V77RS.Код := kodPC;
V77RS.Наименование := 'Основной';
V77RS.Номер := aMSubk.fbn('DefRS').AsString;

V77Bank := V77.CreateObject('Справочник.Банки');
V77Bank.Новый;

V77Bank.Наименование := aMSubk.fbn('NAMEBANK').AsString;
V77Bank.Местонахождение := aMSubk.fbn('BANKCITY').AsString;
V77Bank.КоррСчет := aMSubk.fbn('KS').AsString;

try
kod2 := STI(aMSubk.fbn('BIK').Value);
except
kod2 := -1;
end;

if kod2 <> -1 then V77Bank.Код := kod2;

// V77RS.БанкОрганизации := V77Bank; // ??????????? КАК ?????
// ПроверкаБанка()
V77Bank.Записать;
V77RS.Записать;
end;
end;
}

aMSubk.Next;
MeterMove('Выгрузка в 1С субконто ' + ITS(Sbk) + ' :' + ITS(cnt));
inc(cnt);
end;

FreeAndNil(FieldsE2); FreeAndNil(Fields1C);
aSubk.Next;
end;

SMsg('Экспорт завершен успешно!');
finally
v77 := UnAssigned; V77Obj := UnAssigned; V77RS := UnAssigned; V77Bank := UnAssigned;
FreeAndNil(aSubk);
FreeAndNil(aMSubk);
if rules <> nil then FreeAndNil(rules);
if Assigned(FieldsE2) then FreeAndNil(FieldsE2);
if Assigned(Fields1C) then FreeAndNil(Fields1C);
MeterClose;
end;
end;
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33554391
GRN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRN
Гость
Работаем так года 4-ре

1 - В 1С блокируем добавление новых контраагентов, персонал, мест хранения и пр
2 - ввод новых идет только в наших программах
3 - модуль экспорта приведен выше
4 - структуры для связи с 1С имеют вид

Subk
Номер субконто, Имя субконто, Имя субконто в 1С
MSubk
Номер субконто. Код аналитики, Имя, ..........
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33554394
GRN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRN
Гость
PS: При некртрой смекалке проблем больших не возникает.
Проблема одна - скорость записи в 1С.
На чтение скорость более -менее.
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33556701
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GRNPS: При некртрой смекалке проблем больших не возникает.
Проблема одна - скорость записи в 1С.
На чтение скорость более -менее.
Используется v7plus.dll ???
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33561749
GRN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GRN
Гость
Валентин К GRNPS: При некртрой смекалке проблем больших не возникает.
Проблема одна - скорость записи в 1С.
На чтение скорость более -менее.
Используется v7plus.dll ???

Если COM-сервер находится в ней , то.
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33598139
serge_b77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Валентин К
Используется v7plus.dll ???

v7plus.dll для COM не используется.Это расширение для работы с XML Parser
и еще кое чего...
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33598953
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GRNPS: При некртрой смекалке проблем больших не возникает.
Проблема одна - скорость записи в 1С.
На чтение скорость более -менее.
а что мешает гнать напрямую данные?
у меня 10 тыс позиций номенклатуры пролетает за пару минут :)
...
Рейтинг: 0 / 0
Интеграция самописной системы с 1С
    #33598964
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это из 1С в др. 1С средствами MSSQL
но я уже приводил пример, как ID типа int привести к ID 1С
так же задав код несуществующей ИБ - всегда в 1С можно будет отличить данные созданые самой 1С от импортированных данных.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
CREATE PROCEDURE MigrateDataFromTORG 
	@ID		char( 9 ),
	@VID 		int
AS

SET NOCOUNT ON

IF @VID =  33  
BEGIN
	IF not exists(select ID from SC156 (NOLOCK) where ID = @ID)
	BEGIN
		insert into SC156 (ID, PARENTID, CODE, DESCR, ISFOLDER, ISMARK, VERSTAMP, SP137, SP10965, SP140, SP148, SP138, SP139, SP141, SP15933, SP142, SP143, SP40398) 
		select
			_SC33.ID, 									-- ID
			_SC33.PARENTID, 								-- ГРУППА
			_SC33.CODE, 									-- КОД
			_SC33.DESCR, 									-- НАИМЕНОВАНИЕ
			_SC33.ISFOLDER, 								-- фл ПАПКИ
			_SC33.ISMARK,									-- фл ПОМЕТКИ НА УДАЛЕНИЕ 
			_SC33.VERSTAMP, 								-- ???
			'    CU   ', 									-- ТИП ТОВАРА (ПО УМОЛЧАНИЮ - СОБСТВЕННЫЙ)								
			CASE 	WHEN _SC33.SP689 = '    J2   '   THEN '    CG   '         			-- ТОВАР
				WHEN _SC33.SP689 = '    J4   '   THEN '    CI   '				-- УСЛУГА
				WHEN _SC33.ISFOLDER =  1  	THEN '     0   ' END,			-- ЕСЛИ ГРУППА - ТОГДА НЕ ВЫСТАВЛЯЕМ
			CASE 	WHEN _SC131.SP3748 = '    UH   ' THEN '     1   ' 			-- МЕТР 
				WHEN _SC131.SP3748 = '     3   '   THEN '     7   '				-- КИЛОГРАММ
				WHEN _SC131.SP3748 = '     1   '   THEN '     G   '			-- ШТУКА
				WHEN _SC131.SP3748 = '    V110 ' THEN '     I   '				-- КОМПЛЕКТ
				WHEN _SC131.SP3748 = '    UK   ' THEN '     E   '				-- РУЛОН
				WHEN _SC131.SP3748 = '    V410 ' THEN '     8   '			-- ТОННА
				WHEN _SC131.SP3748 = '    UI   ' THEN '     F   '				-- УПАКОВКА
				WHEN _SC33.ISFOLDER =  1  	THEN  '     0   ' END,			-- ЕСЛИ ГРУППА - ТОГДА НЕ ВЫСТАВЛЯЕМ
			ISNULL(_SC5241.DESCR,''), 							-- СТРАНА ПРОИСХОЖДЕНИЯ
			SP3024,									-- ПОЛНОЕ НАИМЕНОВАНИЕ
			'     0   ', 0 , 0 , 0 ,'     1   ', 0 
		from
			DB_TEST..SC33 _SC33 (NOLOCK) 	LEFT OUTER JOIN DB_TEST..SC5241 _SC5241 (NOLOCK) ON _SC33.SP4091  = _SC5241.ID
								LEFT OUTER JOIN DB_TEST..SC131   _SC131   (NOLOCK)  ON _SC33.SP3753  = _SC131.ID
		where
			_SC33.ID = @ID

		insert into _1SCONST(OBJID, ID, DATE, VALUE, ACTNO, LINENO_, TVALUE, TIME, DOCID)	-- УСТАНАВЛИВАЕМ СТАВКУ НДС
		select 
			__1SCONST.OBJID,  144 , DATE,
			CASE 	WHEN VALUE = '    L9   '    THEN '     3   '		-- без НДС
				WHEN VALUE = '    LB   '    THEN '     2   '		-- НДС 10%
				WHEN VALUE = '   4WB   ' THEN '     1   '		-- НДС 18%
				WHEN VALUE = '    LA   '    THEN '     0   '		-- НДС 20% (а такое есть?)
				WHEN ISNULL(VALUE, 0 ) =  0  THEN '     3   ' END,	-- Если не установлено, тогда без НДС
			ACTNO, LINENO_, TVALUE,  0 , '     0   '
		from
			DB_TEST.._1SCONST __1SCONST (NOLOCK) 
		where
			OBJID = @ID and ID =  599 
	END
	ELSE
	BEGIN
		update SC156 SET 
			SC156.PARENTID 	= _SC33.PARENTID,					-- ГРУППА 
			SC156.CODE 		= _SC33.CODE, 					-- КОД
			SC156.DESCR 		= _SC33.DESCR, 					-- НАИМЕНОВАНИЕ
			SC156.ISMARK 		= _SC33.ISMARK,					-- ПОМЕТКА УДАЛЕНИЯ 
			SP10965 = CASE 	WHEN _SC33.SP689 = '    J2   '   THEN '    CG   '              	-- ТОВАР
						WHEN _SC33.SP689 = '    J4   '   THEN '    CI   '		-- УСЛУГА
						WHEN _SC33.ISFOLDER =  1  	THEN '     0   ' END,	-- ЕСЛИ ГРУППА - ТОГДА НЕ ВЫСТАВЛЯЕМ
			SC156.SP140 = CASE 	WHEN _SC131.SP3748 = '    UH   ' THEN '     1   ' 	-- МЕТР 
						WHEN _SC131.SP3748 = '     3   '   THEN '     7   '		-- КИЛОГРАММ
						WHEN _SC131.SP3748 = '     1   '   THEN '     G   '	-- ШТУКА
						WHEN _SC131.SP3748 = '    V110 ' THEN '     I   '		-- КОМПЛЕКТ
						WHEN _SC131.SP3748 = '    UK   ' THEN '     E   '		-- РУЛОН
						WHEN _SC131.SP3748 = '    V410 ' THEN '     8   '	-- ТОННА
						WHEN _SC131.SP3748 = '    UI   ' THEN '     F   '		-- УПАКОВКА
						WHEN _SC33.ISFOLDER =  1  	THEN  '     0   ' END,	-- ЕСЛИ ГРУППА - ТОГДА НЕ ВЫСТАВЛЯЕМ
			SC156.SP148 		= ISNULL(_SC5241.DESCR,''), 				-- СТРАНА ПРОИСХОЖДЕНИЯ
			SC156.SP138 		= _SC33.SP3024					-- ПОЛНОЕ НАИМЕНОВАНИЕ
		from
			DB_TEST..SC33 _SC33 (NOLOCK) 	LEFT OUTER JOIN DB_TEST..SC5241 _SC5241 (NOLOCK) ON _SC33.SP4091  = _SC5241.ID
								LEFT OUTER JOIN DB_TEST..SC131   _SC131   (NOLOCK)  ON _SC33.SP3753  = _SC131.ID
		where 
			SC156.ID = _SC33.ID AND _SC33.ID=@ID

		/*delete from _1SCONST where OBJID = @ID and ID = 144						-- ОЧИЩАЕМ СТАВКУ НДС

		insert into _1SCONST(OBJID, ID, DATE, VALUE, ACTNO, LINENO_, TVALUE, TIME, DOCID)	-- УСТАНАВЛИВАЕМ СТАВКУ НДС
		select 
			__1SCONST.OBJID, 144, DATE,
			CASE 	WHEN VALUE = '    L9   '    THEN '     3   '		-- без НДС
				WHEN VALUE = '    LB   '    THEN '     2   '		-- НДС 10%
				WHEN VALUE = '   4WB   ' THEN '     1   '		-- НДС 18%
				WHEN VALUE = '    LA   '    THEN '     0   '		-- НДС 20% (а такое есть?)
				WHEN ISNULL(VALUE,0) = 0 THEN '     3   ' END,	-- Если не установлено, тогда без НДС
			ACTNO, LINENO_, TVALUE, 0, '     0   '
		from
			TEST.._1SCONST __1SCONST (NOLOCK) 
		where
			OBJID = @ID and ID = 599*/
	END
END
ELSE  IF @VID =  46 
BEGIN
	IF not exists(select ID from SC133 (NOLOCK) where ID = @ID)
	BEGIN
		insert into SC133 (ID, PARENTID, CODE, DESCR, ISFOLDER,  ISMARK, VERSTAMP, SP121, SP123, SP124, SP125, SP126, SP127, SP128, SP129, SP131, SP37027, SP122, SP130)
		select 
			_SC46.ID,							-- ID
			_SC46.PARENTID,						-- ГРУППА 
			_SC46.CODE,							-- КОД
			_SC46.DESCR,							-- НАИМЕНОВАНИЕ
			_SC46.ISFOLDER,						-- фл ПАПКИ
			_SC46.ISMARK,							-- ПОМЕТКА УДАЛЕНИЯ 
			_SC46.VERSTAMP,
			CASE 	WHEN SP2884 = '   14D   ' THEN '    C4   '		-- ОРГАНИЗАЦИЯ
				WHEN SP2884 = '   14E   ' THEN '    C5   '		-- ЧАСТНОЕ ЛИЦО
				WHEN SP2884 = '   5MY   ' THEN '   BNZ   ' 		-- ФИЛИАЛ
				ELSE '    C4   ' END,					
			UrAdress, --SP3145,						-- ЮРИДИЧЕСКИЙ АДРЕС
			PochAdress, --SP50,						-- ПОЧТОВЫЙ АДРЕС
			'',								-- ТЕЛЕФОНЫ
			ltrim(rtrim(SP56)) + '\' + KPP, --SP6195),			-- ИНН\КПП
			'', '', '', '     0   ', '     0   ',
			FullName,--SP48,						-- ПОЛНОЕ НАИМЕНОВАНИЕ
			SP3148
		from 
			DB_TEST..SC46 _SC46 (NOLOCK),
			(select 
				ltrim(rtrim(VALUE)) KPP
			 from 
				DB_TEST.._1SCONST (NOLOCK)
			 where
				DATE = (select max(DATE) from DB_TEST.._1SCONST (NOLOCK) where ID =  6195  and OBJID = @ID)
				and
				ROW_ID = (select max(ROW_ID) from DB_TEST.._1SCONST (NOLOCK) where ID =  6195  and OBJID = @ID)
				and
				ID =  6195 
				and
				OBJID = @ID
			) s1,
			(select 
				ltrim(rtrim(VALUE)) UrAdress
			 from 
				DB_TEST.._1SCONST (NOLOCK)
			 where
				DATE = (select max(DATE) from DB_TEST.._1SCONST (NOLOCK) where ID =  3145  and OBJID = @ID)
				and
				ROW_ID = (select max(ROW_ID) from DB_TEST.._1SCONST (NOLOCK) where ID =  3145  and OBJID = @ID)
				and
				ID =  3145 
				and
				OBJID = @ID
			) s2,
			(select 
				ltrim(rtrim(VALUE)) PochAdress
			 from 
				DB_TEST.._1SCONST (NOLOCK)
			 where
				DATE = (select max(DATE) from DB_TEST.._1SCONST (NOLOCK) where ID =  50  and OBJID = @ID)
				and
				ROW_ID = (select max(ROW_ID) from DB_TEST.._1SCONST (NOLOCK) where ID =  50  and OBJID = @ID)
				and
				ID =  50 
				and
				OBJID = @ID
			) s3,
			(select 
				ltrim(rtrim(VALUE)) FullName
			 from 
				DB_TEST.._1SCONST (NOLOCK)
			 where
				DATE = (select max(DATE) from DB_TEST.._1SCONST (NOLOCK) where ID =  48  and OBJID = @ID)
				and
				ROW_ID = (select max(ROW_ID) from DB_TEST.._1SCONST (NOLOCK) where ID =  48  and OBJID = @ID)
				and
				ID =  48 
				and 
				OBJID = @ID
			) s4
		where
			ID = @ID
	END
	ELSE
	BEGIN
		update SC133 SET
			SC133.PARENTID 	= _SC46.PARENTID,						-- ГРУППА 
			SC133.CODE 		= _SC46.CODE, 						-- КОД
			SC133.DESCR 		= _SC46.DESCR, 						-- НАИМЕНОВАНИЕ
			SC133.ISMARK 		= _SC46.ISMARK,						-- ПОМЕТКА УДАЛЕНИЯ 
			SC133.VERSTAMP 	= _SC46.VERSTAMP,
			SC133.SP121		= CASE WHEN SP2884 = '   14D   ' THEN '    C4   '		-- ОРГАНИЗАЦИЯ
							WHEN SP2884 = '   14E   ' THEN '    C5   '		-- ЧАСТНОЕ ЛИЦО
							WHEN SP2884 = '   5MY   ' THEN '   BNZ   ' 
							ELSE '    C4   ' END,	-- ФИЛИАЛ 	
			SC133.SP123		= UrAdress,--_SC46.SP3145,					-- ЮРИДИЧЕСКИЙ АДРЕС
			SC133.SP124		= PochAdress,--_SC46.SP50,					-- ПОЧТОВЫЙ АДРЕС
			SC133.SP126		= ltrim(rtrim(_SC46.SP56)) + '\' + KPP,--_SC46.SP6195),		-- ИНН\КПП
			SC133.SP122		= FullName--_SC46.SP48					-- ПОЛНОЕ НАИМЕНОВАНИЕ
		from	
 			DB_TEST..SC46  _SC46 (NOLOCK),
			(select 
				ltrim(rtrim(VALUE)) KPP
			 from 
				DB_TEST.._1SCONST (NOLOCK)
			 where
				DATE = (select max(DATE) from DB_TEST.._1SCONST (NOLOCK) where ID =  6195  and OBJID = @ID)
				and
				ROW_ID = (select max(ROW_ID) from DB_TEST.._1SCONST (NOLOCK) where ID =  6195  and OBJID = @ID)
				and
				ID =  6195 
				and
				OBJID = @ID
			) s1,
			(select 

				ltrim(rtrim(VALUE)) UrAdress
			 from 
				DB_TEST.._1SCONST (NOLOCK)
			 where
				DATE = (select max(DATE) from DB_TEST.._1SCONST (NOLOCK) where ID =  3145  and OBJID = @ID)
				and
				ROW_ID = (select max(ROW_ID) from DB_TEST.._1SCONST (NOLOCK) where ID =  3145  and OBJID = @ID)
				and
				ID =  3145 
				and
				OBJID = @ID
			) s2,
			(select 
				ltrim(rtrim(VALUE)) PochAdress
			 from 
				DB_TEST.._1SCONST (NOLOCK)
			 where
				DATE = (select max(DATE) from DB_TEST.._1SCONST (NOLOCK) where ID =  50  and OBJID = @ID)
				and
				ROW_ID = (select max(ROW_ID) from DB_TEST.._1SCONST (NOLOCK) where ID =  50  and OBJID = @ID)
				and
				ID =  50 
				and
				OBJID = @ID
			) s3,
			(select 
				ltrim(rtrim(VALUE)) FullName
			 from 
				DB_TEST.._1SCONST (NOLOCK)
			 where
				DATE = (select max(DATE) from DB_TEST.._1SCONST (NOLOCK) where ID =  48  and OBJID = @ID)
				and
				ROW_ID = (select max(ROW_ID) from DB_TEST.._1SCONST (NOLOCK) where ID =  48  and OBJID = @ID)
				and
				ID =  48 
				and 
				OBJID = @ID
			) s4
		where
			SC133.ID = _SC46.ID AND _SC46.ID = @ID	
	END
END
ELSE  IF @VID =  3760 
BEGIN
	IF not exists(select ID from SC10951 (NOLOCK) where ID = @ID)
	BEGIN
		insert into SC10951 (ID, CODE, DESCR, ISFOLDER, ISMARK, VERSTAMP, PARENTID, SP10954, SP27275)
		select
			ID,				-- ID
			SP6212,			-- КОД
			DESCR,			-- НАИМЕНОВАНИЕ
			ISFOLDER,			-- фл ПАПКИ
			ISMARK,			-- ПОМЕТКА УДАЛЕНИЯ
			VERSTAMP,			-- ???
			'     0   ', '     0   ', '     0   '
		from
			DB_TEST..SC3760
		where
			ID = @ID
	END
	ELSE
	BEGIN
		update SC10951 SET
			SC10951.CODE 	= _SC3760.SP6212,	-- КОД
			SC10951.DESCR	= _SC3760.DESCR,	-- НАИМЕНОВАНИЕ
			SC10951.ISMARK	= _SC3760.ISMARK	-- ПОМЕТКА УДАЛЕНИЯ
		from
			DB_TEST..SC3760 _SC3760
		where
			SC10951.ID = _SC3760.ID and _SC3760.ID = @ID
	END
END
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Интеграция самописной системы с 1С
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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