|
|
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
DinDimЗдравствуйте. Подскажите решение. Есть внешнее приложение, по мере ввода данных там они должны попадать в 1с версия 7.7 OLE не подходит по причине того, что ввод данных интенсивный, а загрузка объекта V77s.Application занимет несколько секунд , причем данные во внешней программе вводятся многими пользователями одновременно. Желаемое условие - on-line обмен. Может быть есть способ как-то сгенерировать какое-нибудь событие в самой 1с из внешней программы, чтоб она посмотрела в такую-то папочку например... А кто вам мешает создать ОЛЕ объект всего один раз и использовать его потом в различных операциях обмена без пересоздания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 14:38 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
VladimirKrDinDimЗдравствуйте. Подскажите решение. Есть внешнее приложение, по мере ввода данных там они должны попадать в 1с версия 7.7 OLE не подходит по причине того, что ввод данных интенсивный, а загрузка объекта V77s.Application занимет несколько секунд , причем данные во внешней программе вводятся многими пользователями одновременно. Желаемое условие - on-line обмен. Может быть есть способ как-то сгенерировать какое-нибудь событие в самой 1с из внешней программы, чтоб она посмотрела в такую-то папочку например... А кто вам мешает создать ОЛЕ объект всего один раз и использовать его потом в различных операциях обмена без пересоздания? Я не представляю, как это можно реализовать. Приложение распределенное. Клиентов море. Всего один раз на каждом клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 14:47 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
DinDimVladimirKrDinDimЗдравствуйте. Подскажите решение. Есть внешнее приложение, по мере ввода данных там они должны попадать в 1с версия 7.7 OLE не подходит по причине того, что ввод данных интенсивный, а загрузка объекта V77s.Application занимет несколько секунд , причем данные во внешней программе вводятся многими пользователями одновременно. Желаемое условие - on-line обмен. Может быть есть способ как-то сгенерировать какое-нибудь событие в самой 1с из внешней программы, чтоб она посмотрела в такую-то папочку например... А кто вам мешает создать ОЛЕ объект всего один раз и использовать его потом в различных операциях обмена без пересоздания? Я не представляю, как это можно реализовать. Приложение распределенное. Клиентов море. Всего один раз на каждом клиенте? Ну если так - тады ой. Ничего не могу придумать кроме сервера приложений, удерживающего 1С-ОЛЕ, к которому обращаются клиенты. Тогда проще действительно писать напрямую в базу 1С, а потом отдельной обработкой 1С проводить записанные документы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 14:55 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Так пусть будет еще один клиент "робот" и у него как раз будет подключение к 1с. И ему и сливайте все задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 14:57 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Программист 1сТак пусть будет еще один клиент "робот" и у него как раз будет подключение к 1с. И ему и сливайте все задачи. Это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 15:06 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
DinDimПрограммист 1сТак пусть будет еще один клиент "робот" и у него как раз будет подключение к 1с. И ему и сливайте все задачи. Это как? Программист 1с +1 например все данные, требующие экспорта в 1С клиенты связывают по ссылкам с некоей таблицей, которую мониторит робот с каким-то интервалом времени и экспортирует появляющиеся данные, выставляя в таблице отметки о выполнении (ну или удаляя оттуда выполненные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 15:26 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
VladimirKrDinDimПрограммист 1сТак пусть будет еще один клиент "робот" и у него как раз будет подключение к 1с. И ему и сливайте все задачи. Это как? Программист 1с +1 например все данные, требующие экспорта в 1С клиенты связывают по ссылкам с некоей таблицей, которую мониторит робот с каким-то интервалом времени и экспортирует появляющиеся данные, выставляя в таблице отметки о выполнении (ну или удаляя оттуда выполненные). Ну а чем это лучше ОбработкиОжидания - которая будет лезть в каталог с указанным интервалом времени и забирать от туда файлы. Тут вопрос в другом я ищу лучшее решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 16:18 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
DinDimНу а чем это лучше ОбработкиОжидания - которая будет лезть в каталог с указанным интервалом времени и забирать от туда файлы. Тут вопрос в другом я ищу лучшее решение.Лучшее - для 7 это терминал. Но раз вы не хотите туда пускать пользователей, то смотрите в сторону 8 с веб интерфейсом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 16:50 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Программист 1с, Причем тут терминал. Приложение из которого нужно передавать данные не принадлежит к продуктам семейства 1с ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 17:14 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
--очищаем справочник единицы 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 #остатки товары ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 18:00 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
DinDim, Если подождеш до понедельника, могу еще Хранимку выслать которая ID генерирует (автор не я). Но работает в нескольких местах без проблем. Обрати внимание на то как ты будеш связывать объекты в обеих базах. Может понадобится если ты будеш сливать измененные объекты. Или тебе потребуется разделить один документ из своей БД на два одного вида в БД 1С. Скачать документацию по ToySQL там есть описание предопределенных полей в таблицах 1С. Еще сам ID шестисимвольный, остальные символы используются для УРИБа, т.е. для индетефикации того с какой базы данный объект. Если у тебя база 1Ц не распределенная эти три символа можеш использовать на свое усмотрение :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 18:18 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Писать в базу на прямую? Не советовал бы такого - чревато последствиями. Сишники не пишут в MDF файлы не потому что это сложно, а потому что это чревато. Так что, автор, подумайте 10 раз и посмотрите уже рабочие системы, особенно проблемы с ними. ИМХО, лучшим вариантом со всем 1эсами, это через промежуточное хранилище (файловое, SQL, в зависимости от желаемой скорости, надёжности и функционала). Скорости огромные, отсутствие привязанности к платформе и (самое главное) можно обновлять/сопровождать все это безболезненно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 21:08 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Enot5467 ИМХО, лучшим вариантом со всем 1эсами, это через промежуточное хранилище (файловое, SQL, в зависимости от желаемой скорости, надёжности и функционала). Скорости огромные, отсутствие привязанности к платформе и (самое главное) можно обновлять/сопровождать все это безболезненно +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 09:46 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Enot5467, Можно в кртатце, чем черевато? Сишники пожет и не пишут в таблицы напрямую (кстати как и 1С ники), зато SQL щики пишут. Временное хранилище имеет смысл использовать для хранения связей ID базы 1С и ID второй базы(1С или не 1С). Но еще раз повторюсь если БД не распределенная можно три последних символа в ID использовать для собственных нужд, в том числе и для хранения связей. Вообще лучший (как наиболее простой) в реализации вариант - это из 1Ц лезть в таблицы второй БД, а в 1Ц создавать объекты средстванми 1Ц, но не всегда данный метод подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 19:53 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Enot5467, "Прямого доступа в mdf" сишникам и не требуется, если считать mdf базой mssql-я, сишникам вполне хватает и OLEDB\ODBC\ADO и скорость работы этих механизмов вполне их устраивает :) Тут суть больше в том, предоставляет ли приложение определенное API для работы со структурой данных без прямой записи в таблицы, или же предоставлет описание схемы БД для возможности "штатной" прямой записи. 1С предоставлет API - через запуск соотв. OLE-объетка и работы штатно через объекты конфигурации, при этом схема БД - закрыта. Медлительность такой работы и толкает на "прямую запись". Согласен с тем, что надо очень хорошо подумать стоит ли оно того, но писать на прямую в таблицы 1С не особо проблематично, особенно если использовать прямую запись только для создания объектов. А проводить документы уже вызовом самой 1С. Другое дело что проблематично сделать универсальный механизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 10:38 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 11:00 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Егоров Александр, Саша спасибо. А то пренебрежительное отношение к 1С уже немного напрягает. Тут криво - там криво, первое нельзя - второе нельзя. Зачастую без аргументов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 11:26 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
vitkhv, Верблюда спросили: "Почему у тебя шея кривая?" -"А что у меня прямое?" - удивился верблюд. (с) Народная мудрость :) Но это не значит, что верблюд - бесполезное животное :) В пустыне - так без него вообще никак :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 12:11 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
DinDimТут вопрос в другом я ищу лучшее решение. На мой взгляд - пишется сервис, который умеет получать данные из Вашей системы "напрямую", возможно и как реакция на какое-либо событие Вашей системы. Сервис при старте поднимает по OLE единственный экземпляр 1Ски. А по событию запускает в 1Ске необходимые обработки. Обработки делаются внешними ert-шками, чтобы не "портить" конфигурацию. При наличии массового ввода объектов одним событием, и при наличии тормозов в обработках - механизм переноса объектов в ert меняется из 1Сного на компилируемый в sql-ые процедуры. До этого уровня конфигурация остается нетронутой. Минус - обновление конфигурации потребует остановки сервиса (или реализации дополнительных методов Load1c()\Unload1c()) и буферизации работы с 1С. Если массовый ввод объектов требует массового же проведения документов, и оно начнет торомозить - без оптимизации проведения документов не обойтись. Это уже требует изменения конфигурации 1С и открывает поле для творчества "работы напрямую". Хотя и переносит конфигурацию в разряд "самописок". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 12:30 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрDinDimТут вопрос в другом я ищу лучшее решение. На мой взгляд - пишется сервис, который умеет получать данные из Вашей системы "напрямую", возможно и как реакция на какое-либо событие Вашей системы. Сервис при старте поднимает по OLE единственный экземпляр 1Ски. А по событию запускает в 1Ске необходимые обработки. Обработки делаются внешними ert-шками, чтобы не "портить" конфигурацию. При наличии массового ввода объектов одним событием, и при наличии тормозов в обработках - механизм переноса объектов в ert меняется из 1Сного на компилируемый в sql-ые процедуры. До этого уровня конфигурация остается нетронутой. Минус - обновление конфигурации потребует остановки сервиса (или реализации дополнительных методов Load1c()\Unload1c()) и буферизации работы с 1С. Если массовый ввод объектов требует массового же проведения документов, и оно начнет торомозить - без оптимизации проведения документов не обойтись. Это уже требует изменения конфигурации 1С и открывает поле для творчества "работы напрямую". Хотя и переносит конфигурацию в разряд "самописок". +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 13:07 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Егоров Александр, описанный Вами вариант с сервисом очень тормознутый. Из предложденного выше, лучше всего работает вариант с интерфейсными таблицами. Надежно, быстро и независимо друг от друга. Ну и просто конечно же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 13:31 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
iscrafm, А где тормознутость в примере Егорова Александра? Ведь 1С по OLE поднимается только для того чтоб документы создавать/проводить, а сами объекты тянуться из нужной БД прямыми запросами, в том числе с использованием интерфейсных таблиц в которых храним связи. А создаются/проводятся либо средствами 1С либо, опять же напрямую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 14:26 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
iscrafm, Почему тормознутый? Автору, как я понял, основные тормоза дает как раз дает время запуска 1С по событию внешнего приложения: "OLE не подходит по причине того, что ввод данных интенсивный, а загрузка объекта V77s.Application занимет несколько секунд, причем данные во внешней программе вводятся многими пользователями одновременно. Желаемое условие - on-line обмен". Запись одного элемента (или одного документа) через уже запущенный OLE-экземпляр немногим дольше прямой записи этого элемента непосредственно в таблицу. проведение - другое дело, но эмуляция проведения документов извне - чревато. :) Как минимум - синхронизации обновления конфигурации 1С и собственных процедур проведения. И давайте тогда определимся с интерфейсными таблицами, дабы не возникло "терминологической путаницы" :) Я предполагаю таблицы соответствий ID объектов 1С неким представлениям (или напрямую PK) объектов внешней системы. Без этого не обойтись, но это дело лучше поручить либо самой внешней системе, либо сервису обмена. Хранить какие-то внешние связи в 1С - дорогое удовольствие. Соотв. и скорость формирования этих таблиц тогда лежит вне 1С. Держать в собственной системе представление элементов "так, как это сделано в 1С" - опять таки, а с какой именно конфигурацией 1С Вы хотите держать соответствие? А если в этой конкретной конфе потребуются элементы (или их связь), которых в нашей системе вообще нет? В общем у меня пока путанница по поводу "интерфесных таблиц" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 15:00 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
Егоров Александр, насчет интерфейсных таблиц... внешняя программа выполняет выгрузку требуемых данных в таблицы на SQL сервере. 1С при помощи обработки читает данные из этих таблиц, создает необходимые объекты в своей БД, выполняет их проведение... Это просто шлюз о структуре которого договариваются две стороны. При массовых загрузках, имхо, более живучий вариант, чем общение с объектами 1С через OLE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 17:10 |
|
||
|
Обмен с внешним приложением
|
|||
|---|---|---|---|
|
#18+
1С и структура 1С, то же самое, что и SQL и его MDF с LDF файлами. Туда на прямую не пишут не потому что хватает, а потому что это не рекомендуют создатели SQL. Сейчас это табу дошло до того, что многие принимают как должное. Если промежуточный слой SQL быстро пишет, то это не значит, что простым API будет медленнее. Кто не верит, пробуйте. ---------------- Про прямую запись в базу 1С: так же как и с SQL, пишите без проблем. Просто когда встанет вопрос по стоимости сопровождения, поймете, чем чревато. Любое изменение в конфигурации может ненароком разрушить всю базу. К сожалению такие моменты наблюдал лично. Именно по этому настоятельно рекомендую поискать контору, где такой обмен налажен и работает. Просто посмотрите как это обновляется/сопровождается/изменяется. Ну а по существу: - Зависимость от платформы (ни кто не знает, что будет со следующим релизом 1С) - Зависимость от версии SQL - Зависимость от версии конфигурации - Сложность разработки разработчиком - Сложность найти помощника/замену разработчику В итоге как только подойдет руководитель с архиважным планом по изменению каких-нибудь контрагентов, разработчик от бессилия начинает обвинять 1С. Руководитель смотрит на это пару месяцев и вызывает самый задрипаный франч, что бы тот поставил что-то стандартное ----------------- Про скорость в 1С: при помощи промежуточного хранилища у меня работает связка баз 1С на одном предприятии. Скорости удовлетворяют на 100% всех. Работают не зависимо от активности сотрудников. Бухи даже не понимают, что есть где-то обмен. Вообще скорость зависит не от 1С (можно и на асме и на С# таких тормозов написать...), а от того кто туда руки прикладывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 19:10 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=36269848&tid=1523163]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
86ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 499ms |

| 0 / 0 |
