powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Обмен с внешним приложением
25 сообщений из 82, страница 2 из 4
Обмен с внешним приложением
    #36269209
VladimirKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimЗдравствуйте. Подскажите решение. Есть внешнее приложение, по мере ввода данных там они должны попадать в 1с версия 7.7 OLE не подходит по причине того, что ввод данных интенсивный, а загрузка объекта V77s.Application занимет несколько секунд , причем данные во внешней программе вводятся многими пользователями одновременно. Желаемое условие - on-line обмен.

Может быть есть способ как-то сгенерировать какое-нибудь событие в самой 1с из внешней программы, чтоб она посмотрела в такую-то папочку например...

А кто вам мешает создать ОЛЕ объект всего один раз и использовать его потом в различных операциях обмена без пересоздания?
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36269239
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladimirKrDinDimЗдравствуйте. Подскажите решение. Есть внешнее приложение, по мере ввода данных там они должны попадать в 1с версия 7.7 OLE не подходит по причине того, что ввод данных интенсивный, а загрузка объекта V77s.Application занимет несколько секунд , причем данные во внешней программе вводятся многими пользователями одновременно. Желаемое условие - on-line обмен.

Может быть есть способ как-то сгенерировать какое-нибудь событие в самой 1с из внешней программы, чтоб она посмотрела в такую-то папочку например...

А кто вам мешает создать ОЛЕ объект всего один раз и использовать его потом в различных операциях обмена без пересоздания?

Я не представляю, как это можно реализовать. Приложение распределенное. Клиентов море. Всего один раз на каждом клиенте?
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36269264
VladimirKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimVladimirKrDinDimЗдравствуйте. Подскажите решение. Есть внешнее приложение, по мере ввода данных там они должны попадать в 1с версия 7.7 OLE не подходит по причине того, что ввод данных интенсивный, а загрузка объекта V77s.Application занимет несколько секунд , причем данные во внешней программе вводятся многими пользователями одновременно. Желаемое условие - on-line обмен.

Может быть есть способ как-то сгенерировать какое-нибудь событие в самой 1с из внешней программы, чтоб она посмотрела в такую-то папочку например...

А кто вам мешает создать ОЛЕ объект всего один раз и использовать его потом в различных операциях обмена без пересоздания?

Я не представляю, как это можно реализовать. Приложение распределенное. Клиентов море. Всего один раз на каждом клиенте?

Ну если так - тады ой. Ничего не могу придумать кроме сервера приложений, удерживающего 1С-ОЛЕ, к которому обращаются клиенты. Тогда проще действительно писать напрямую в базу 1С, а потом отдельной обработкой 1С проводить записанные документы.
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36269275
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так пусть будет еще один клиент "робот" и у него как раз будет подключение к 1с. И ему и сливайте все задачи.
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36269303
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1сТак пусть будет еще один клиент "робот" и у него как раз будет подключение к 1с. И ему и сливайте все задачи.

Это как?
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36269388
VladimirKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimПрограммист 1сТак пусть будет еще один клиент "робот" и у него как раз будет подключение к 1с. И ему и сливайте все задачи.

Это как?

Программист 1с +1

например все данные, требующие экспорта в 1С клиенты связывают по ссылкам с некоей таблицей, которую мониторит робот с каким-то интервалом времени и экспортирует появляющиеся данные, выставляя в таблице отметки о выполнении (ну или удаляя оттуда выполненные).
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36269558
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladimirKrDinDimПрограммист 1сТак пусть будет еще один клиент "робот" и у него как раз будет подключение к 1с. И ему и сливайте все задачи.

Это как?

Программист 1с +1

например все данные, требующие экспорта в 1С клиенты связывают по ссылкам с некоей таблицей, которую мониторит робот с каким-то интервалом времени и экспортирует появляющиеся данные, выставляя в таблице отметки о выполнении (ну или удаляя оттуда выполненные).

Ну а чем это лучше ОбработкиОжидания - которая будет лезть в каталог с указанным интервалом времени и забирать от туда файлы. Тут вопрос в другом я ищу лучшее решение.
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36269646
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimНу а чем это лучше ОбработкиОжидания - которая будет лезть в каталог с указанным интервалом времени и забирать от туда файлы. Тут вопрос в другом я ищу лучшее решение.Лучшее - для 7 это терминал. Но раз вы не хотите туда пускать пользователей, то смотрите в сторону 8 с веб интерфейсом.
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36269734
DinDim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1с,

Причем тут терминал. Приложение из которого нужно передавать данные не принадлежит к продуктам семейства 1с
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36269848
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--очищаем справочник единицы
DELETE FROM SC75

Ну вот и примерчики подоспели:

--заполняем справочник единицы
INSERT INTO sc75 (id
,PARENTEXT
,ismark
,verstamp
,SP79
,SP76
,SP78
,SP80
)
Select единицы.SprEdId
,единицы.SprNomId
,единицы.ismark
,единицы.verstamp
,SP79=единицы.SprOKEIId
,SP76=единицы.SP76
,SP78=единицы.SP78
,SP80=единицы.SP80

From
#TranzOKEI единицы
--DBCC DBREINDEX(sc75)


--очищаем справочник ОКЕИ
DELETE FROM SC41
--заполняем справочник единицы
INSERT INTO SC41 (id
,CODE
,DESCR
,ismark
,verstamp
,SP42
)
SELECT q.SprOKEIId id
,ОКЕИ.CODE
,SUBSTRING(ОКЕИ.DESCR,1,25) DESCR
,ОКЕИ.ismark
,ОКЕИ.verstamp
,ОКЕИ.SP5482 FROM(
select SprOKEIId
from #TranzOKEI
right join (SELECT * FROM #остатки товары WHERE товары.isfolder=2) товары on #TranzOKEI.SprNomId = товары.id
group by SprOKEIId)q
inner join trade2002..SC4890 ОКЕИ with (nolock) on ОКЕИ.id = q.SprOKEIId
--DBCC DBREINDEX(SC41)
--select * from sc41
--заполняем справочник номенклатура
INSERT INTO sc84 (id
,parentid
,code
,descr
,isfolder
,ismark
,verstamp
,SP85
,SP86
,SP208
,SP2417
,SP97
,SP5066
,SP5013
,SP94
,SP4427
,SP103
,SP104
,SP5012
,SP95
,SP101
)
Select товары.id
,товары.parentid
,товары.code
,SUBSTRING(товары.descr,1,50) descr
,товары.isfolder
,товары.ismark
,товары.verstamp
,SP85=товары.SP85--' '
,SP86=товары.SP86--' 0 '
,SP208=0
,SP2417=' 2Q2 '--' 0 '
,SP97=0.000
,SP5066=0
,SP5013=' 0 '
,SP94=товары.SP94--' 0 '
,SP4427=' 0 '
,SP103=' OHE '--' 0 '
,SP104=' 8 '--' 0 '
,SP5012=' 0 '
,SP95=''
,SP101=товары.sp101--''

From
#остатки товары
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36269878
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDim,
Если подождеш до понедельника, могу еще Хранимку выслать которая ID генерирует (автор не я).
Но работает в нескольких местах без проблем.

Обрати внимание на то как ты будеш связывать объекты в обеих базах.
Может понадобится если ты будеш сливать измененные объекты.
Или тебе потребуется разделить один документ из своей БД на два одного вида в БД 1С.
Скачать документацию по ToySQL там есть описание предопределенных полей в таблицах 1С.
Еще сам ID шестисимвольный, остальные символы используются для УРИБа, т.е. для индетефикации того с какой базы данный объект. Если у тебя база 1Ц не распределенная эти три символа можеш использовать на свое усмотрение :)
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36270723
Enot5467
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Писать в базу на прямую? Не советовал бы такого - чревато последствиями. Сишники не пишут в MDF файлы не потому что это сложно, а потому что это чревато. Так что, автор, подумайте 10 раз и посмотрите уже рабочие системы, особенно проблемы с ними.
ИМХО, лучшим вариантом со всем 1эсами, это через промежуточное хранилище (файловое, SQL, в зависимости от желаемой скорости, надёжности и функционала). Скорости огромные, отсутствие привязанности к платформе и (самое главное) можно обновлять/сопровождать все это безболезненно
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36271015
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Enot5467
ИМХО, лучшим вариантом со всем 1эсами, это через промежуточное хранилище (файловое, SQL, в зависимости от желаемой скорости, надёжности и функционала). Скорости огромные, отсутствие привязанности к платформе и (самое главное) можно обновлять/сопровождать все это безболезненно
+1
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36271355
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Enot5467,
Можно в кртатце, чем черевато?
Сишники пожет и не пишут в таблицы напрямую (кстати как и 1С ники), зато SQL щики пишут.
Временное хранилище имеет смысл использовать для хранения связей ID базы 1С и ID второй базы(1С или не 1С). Но еще раз повторюсь если БД не распределенная можно три последних символа в ID использовать для собственных нужд, в том числе и для хранения связей.
Вообще лучший (как наиболее простой) в реализации вариант - это из 1Ц лезть в таблицы второй БД, а в 1Ц создавать объекты средстванми 1Ц, но не всегда данный метод подходит.
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36271866
Егоров Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Enot5467,

"Прямого доступа в mdf" сишникам и не требуется, если считать mdf базой mssql-я, сишникам вполне хватает и OLEDB\ODBC\ADO и скорость работы этих механизмов вполне их устраивает :) Тут суть больше в том, предоставляет ли приложение определенное API для работы со структурой данных без прямой записи в таблицы, или же предоставлет описание схемы БД для возможности "штатной" прямой записи. 1С предоставлет API - через запуск соотв. OLE-объетка и работы штатно через объекты конфигурации, при этом схема БД - закрыта. Медлительность такой работы и толкает на "прямую запись". Согласен с тем, что надо очень хорошо подумать стоит ли оно того, но писать на прямую в таблицы 1С не особо проблематично, особенно если использовать прямую запись только для создания объектов. А проводить документы уже вызовом самой 1С. Другое дело что проблематично сделать универсальный механизм.
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36271900
Егоров Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhvDinDim,
Если подождеш до понедельника, могу еще Хранимку выслать которая ID генерирует (автор не я).
Но работает в нескольких местах без проблем.
Я автор. :) Только это не совсем хранимка, это пара функций работы с 1Сными ID:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE FUNCTION [dbo].[GetIDInt] (@id int)                 
/*** преобразует число в 1С-36 char(9) с тремя пробелами в конце ***/
RETURNS char( 9 ) AS  
BEGIN 
  declare @Res varchar( 9 ), @Mul int, @Chars char( 36 ), @i int 
  if @id= 0 
    set @res='     0   '
  else begin
    select @Res='', @Mul= 60466176 , @Chars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
    while (@id<> 0 ) or (len(@res)< 6 ) begin
      set @i=floor(@id/@Mul)
      if (@i= 0 ) and (ltrim(@res)='') 
        set @Res=@Res+' '
      else
        set @Res=@Res+substring(@Chars, @i+ 1 ,  1 )
      set @id=@id-(@i*@Mul)
      set @Mul=@Mul/ 36 
    end
  end
  return convert(char( 9 ), @Res)
END
и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE FUNCTION [dbo].[GetIntID] (@ID char( 9 ))            
/*** преобразует 1С-36 char(9) в число. передние пробелы НЕ значимы ***/
RETURNS bigint AS  
BEGIN 
  declare @Res bigint, @Mul bigint, @Chars char( 36 ), @Ch char( 1 ), @Len smallint
  select @Mul= 1 , @ID=substring(@ID,  1 ,  6 ), @Len=Len(@ID)- 1 , @Res= 0 , @Chars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  while @Len> 0  select @Mul=@Mul* 36 , @Len=@Len- 1 
  while @ID<>'' begin
    set @ch=substring(@Id,  1 ,  1 )
    if @Ch<>' ' set @Res=@Res+(charindex(@Ch, @Chars)- 1 )*@Mul
    select @Mul=@Mul/ 36 , @ID=substring(@ID,  2 ,  6 )
  end
  return @Res
END
и соотв. хранимка, например, для документов содержит
Код: plaintext
1.
2.
3.
...
declare @newID char( 9 )
...
select @newID=dbo.GetIDInt(dbo.GetIntId(max(ID))+ 1 ) from _1SJOURN
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36271956
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Егоров Александр,
Саша спасибо.
А то пренебрежительное отношение к 1С уже немного напрягает.
Тут криво - там криво, первое нельзя - второе нельзя.
Зачастую без аргументов.
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36272077
Егоров Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhv,

Верблюда спросили: "Почему у тебя шея кривая?"
-"А что у меня прямое?" - удивился верблюд.
(с) Народная мудрость :)

Но это не значит, что верблюд - бесполезное животное :) В пустыне - так без него вообще никак :)
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36272127
Егоров Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinDimТут вопрос в другом я ищу лучшее решение.

На мой взгляд - пишется сервис, который умеет получать данные из Вашей системы "напрямую", возможно и как реакция на какое-либо событие Вашей системы. Сервис при старте поднимает по OLE единственный экземпляр 1Ски. А по событию запускает в 1Ске необходимые обработки. Обработки делаются внешними ert-шками, чтобы не "портить" конфигурацию. При наличии массового ввода объектов одним событием, и при наличии тормозов в обработках - механизм переноса объектов в ert меняется из 1Сного на компилируемый в sql-ые процедуры. До этого уровня конфигурация остается нетронутой. Минус - обновление конфигурации потребует остановки сервиса (или реализации дополнительных методов Load1c()\Unload1c()) и буферизации работы с 1С. Если массовый ввод объектов требует массового же проведения документов, и оно начнет торомозить - без оптимизации проведения документов не обойтись. Это уже требует изменения конфигурации 1С и открывает поле для творчества "работы напрямую". Хотя и переносит конфигурацию в разряд "самописок".
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36272222
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Егоров АлександрDinDimТут вопрос в другом я ищу лучшее решение.

На мой взгляд - пишется сервис, который умеет получать данные из Вашей системы "напрямую", возможно и как реакция на какое-либо событие Вашей системы. Сервис при старте поднимает по OLE единственный экземпляр 1Ски. А по событию запускает в 1Ске необходимые обработки. Обработки делаются внешними ert-шками, чтобы не "портить" конфигурацию. При наличии массового ввода объектов одним событием, и при наличии тормозов в обработках - механизм переноса объектов в ert меняется из 1Сного на компилируемый в sql-ые процедуры. До этого уровня конфигурация остается нетронутой. Минус - обновление конфигурации потребует остановки сервиса (или реализации дополнительных методов Load1c()\Unload1c()) и буферизации работы с 1С. Если массовый ввод объектов требует массового же проведения документов, и оно начнет торомозить - без оптимизации проведения документов не обойтись. Это уже требует изменения конфигурации 1С и открывает поле для творчества "работы напрямую". Хотя и переносит конфигурацию в разряд "самописок".

+1
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36272275
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Егоров Александр,

описанный Вами вариант с сервисом очень тормознутый. Из предложденного выше, лучше всего работает вариант с интерфейсными таблицами. Надежно, быстро и независимо друг от друга. Ну и просто конечно же.
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36272453
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,
А где тормознутость в примере Егорова Александра?
Ведь 1С по OLE поднимается только для того чтоб документы создавать/проводить, а сами объекты тянуться из нужной БД прямыми запросами, в том числе с использованием интерфейсных таблиц в которых храним связи.
А создаются/проводятся либо средствами 1С либо, опять же напрямую.
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36272590
Егоров Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

Почему тормознутый? Автору, как я понял, основные тормоза дает как раз дает время запуска 1С по событию внешнего приложения: "OLE не подходит по причине того, что ввод данных интенсивный, а загрузка объекта V77s.Application занимет несколько секунд, причем данные во внешней программе вводятся многими пользователями одновременно. Желаемое условие - on-line обмен". Запись одного элемента (или одного документа) через уже запущенный OLE-экземпляр немногим дольше прямой записи этого элемента непосредственно в таблицу. проведение - другое дело, но эмуляция проведения документов извне - чревато. :) Как минимум - синхронизации обновления конфигурации 1С и собственных процедур проведения. И давайте тогда определимся с интерфейсными таблицами, дабы не возникло "терминологической путаницы" :)
Я предполагаю таблицы соответствий ID объектов 1С неким представлениям (или напрямую PK) объектов внешней системы. Без этого не обойтись, но это дело лучше поручить либо самой внешней системе, либо сервису обмена. Хранить какие-то внешние связи в 1С - дорогое удовольствие. Соотв. и скорость формирования этих таблиц тогда лежит вне 1С. Держать в собственной системе представление элементов "так, как это сделано в 1С" - опять таки, а с какой именно конфигурацией 1С Вы хотите держать соответствие? А если в этой конкретной конфе потребуются элементы (или их связь), которых в нашей системе вообще нет? В общем у меня пока путанница по поводу "интерфесных таблиц" :)
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36273037
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Егоров Александр,
насчет интерфейсных таблиц...
внешняя программа выполняет выгрузку требуемых данных в таблицы на SQL сервере. 1С при помощи обработки читает данные из этих таблиц, создает необходимые объекты в своей БД, выполняет их проведение... Это просто шлюз о структуре которого договариваются две стороны. При массовых загрузках, имхо, более живучий вариант, чем общение с объектами 1С через OLE
...
Рейтинг: 0 / 0
Обмен с внешним приложением
    #36273339
Enot5467
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1С и структура 1С, то же самое, что и SQL и его MDF с LDF файлами. Туда на прямую не пишут не потому что хватает, а потому что это не рекомендуют создатели SQL. Сейчас это табу дошло до того, что многие принимают как должное. Если промежуточный слой SQL быстро пишет, то это не значит, что простым API будет медленнее. Кто не верит, пробуйте.
----------------
Про прямую запись в базу 1С: так же как и с SQL, пишите без проблем. Просто когда встанет вопрос по стоимости сопровождения, поймете, чем чревато. Любое изменение в конфигурации может ненароком разрушить всю базу. К сожалению такие моменты наблюдал лично. Именно по этому настоятельно рекомендую поискать контору, где такой обмен налажен и работает. Просто посмотрите как это обновляется/сопровождается/изменяется.
Ну а по существу:
- Зависимость от платформы (ни кто не знает, что будет со следующим релизом 1С)
- Зависимость от версии SQL
- Зависимость от версии конфигурации
- Сложность разработки разработчиком
- Сложность найти помощника/замену разработчику
В итоге как только подойдет руководитель с архиважным планом по изменению каких-нибудь контрагентов, разработчик от бессилия начинает обвинять 1С. Руководитель смотрит на это пару месяцев и вызывает самый задрипаный франч, что бы тот поставил что-то стандартное
-----------------
Про скорость в 1С: при помощи промежуточного хранилища у меня работает связка баз 1С на одном предприятии. Скорости удовлетворяют на 100% всех. Работают не зависимо от активности сотрудников. Бухи даже не понимают, что есть где-то обмен. Вообще скорость зависит не от 1С (можно и на асме и на С# таких тормозов написать...), а от того кто туда руки прикладывал.
...
Рейтинг: 0 / 0
25 сообщений из 82, страница 2 из 4
Форумы / [игнор отключен] [закрыт для гостей] / Обмен с внешним приложением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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