|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
Есть самописное специализированное ПО по учету заказов и покупок товаров нашей фирмой через INet. Ведется простенький реестр учета купленных товаров. В настоящее время возникла необходимость динамично заливать данные из нашего ПО в 1С: Предприниматель 7.7. т.е. формировать документы (получать печатные формы) ПоступлениеТМЦ, Реализация, Счет, С/Ф выданный, при этом производить проверку данных справочников номенклатуры, контрагентов, ... Остановлись на следующем варианте: Delphi: Код: 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.
1С (ОбработкаФормированияДокумента.ert): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Этот вариант работает, но очень не стабильно и очеееень медленно. Работа через Ole с 1С вообще одна большая ошибка. Господа программисты поделитесь практическим опытом, кто как организовывает такие вещи. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 09:55 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
А слабо через ОЛЕ сразу документ нужного типа создать и значениями его заполнить и провести? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 09:59 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
йцукен2А слабо через ОЛЕ сразу документ нужного типа создать и значениями его заполнить и провести? Почему не слабо: - Отлаживать обработку легче чем delphi приложение - При каких либо изменениях, поправках, доработках в документах мне не нужно компилить приложение заново, в конфигураторе поправил ert. От Delphi требуется слить данные из DataSet в ТаблЗначений и передать в обработку, а уж что я буду с этими данными в обработке делать .... Мой вопрос принципиальный, как еще организовать динамичную связь с 1С? через ole документ формирую или в обработке это не суть то и важно, тоже самое только в профиль. Еще интересует именно работоспособность связи, мы через OLE попробовали - получился не рабочий вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 10:15 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
чудак человек. у 1С етсь замер производительности.. сделай скриншот и нам дай. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 10:21 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
гость1010От Delphi требуется слить данные из DataSet в ТаблЗначений и передать в обработку, а уж что я буду с этими данными в обработке делать .... Уважаемый, неужели не видно, что при реализованной Вами схеме использование ОЛЕ нужно как собаке пятая нога? Неужели не видно, что таблицу значений можно легко заменить на "файл на диске"? Мое имхо заключается в вопросах: 1)А можно ли данный DataSet получить напрямую из 1С? 2)А почему Вы уверены, что тормозит именно 1С? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 11:08 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
йцукен2Уважаемый, неужели не видно, что при реализованной Вами схеме использование ОЛЕ нужно как собаке пятая нога? Неужели не видно, что таблицу значений можно легко заменить на "файл на диске"? Инциатором создания документов в 1С является Delphi программа для этого и нужно OLE, чтобы не только ТаблЗначений сформировать, но сказать 1С - загружай эти данные. В случае "файл на диске" нужно выносить операцию загрузки этого файла либо в ручную загрузку, либо во внешнюю компоненту "прослушивание каталога". йцукен21)А можно ли данный DataSet получить напрямую из 1С? Можно, только нафиг этот DataSet нужен в 1С (см выше) йцукен22)А почему Вы уверены, что тормозит именно 1С? Это четко видно пользуясь Delphi отладчиком, но скорость работы в данной ситуации вторична, глючнотось Ole работы с 1С - вот главная фишка. Резюмирую: все работают через OLE или ручных загрузок/выгрузок и все работает прекрасно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 15:30 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
гость1010 В случае "файл на диске" нужно выносить операцию загрузки этого файла либо в ручную загрузку, либо во внешнюю компоненту "прослушивание каталога". зачем вам нужна внешняя компонента, что мешает "прослушивать каталог" 1С ? йцукен22)А почему Вы уверены, что тормозит именно 1С? Это четко видно пользуясь Delphi отладчиком, но скорость работы в данной ситуации вторична, глючнотось Ole работы с 1С - вот главная фишка. как определили "глючнотось Ole работы с 1С" ? "Это четко видно пользуясь Delphi отладчиком" - и что вы там могли увидеть? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 15:41 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
гость1010 йцукен2Уважаемый, неужели не видно, что при реализованной Вами схеме использование ОЛЕ нужно как собаке пятая нога? Неужели не видно, что таблицу значений можно легко заменить на "файл на диске"? Инциатором создания документов в 1С является Delphi программа для этого и нужно OLE, чтобы не только ТаблЗначений сформировать, но сказать 1С - загружай эти данные. В случае "файл на диске" нужно выносить операцию загрузки этого файла либо в ручную загрузку, либо во внешнюю компоненту "прослушивание каталога". Формирем файл на диске, после чего по ОЛЕ в 7.7 вызываем процедуру загрузки из файла ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 15:45 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
гость1010Инциатором создания документов в 1С является Delphi программа для этого и нужно OLE, чтобы не только ТаблЗначений сформировать, но сказать 1С - загружай эти данные. В случае "файл на диске" нужно выносить операцию загрузки этого файла либо в ручную загрузку, либо во внешнюю компоненту "прослушивание каталога". Ну например, так: 1) Делфи формирует файл на диске 2) Делфи запускает 1С с определнным параметром командной строки либо под определенным пользователем 3) 1с = модуль "ПриНачалеРаботыСистемы" определяет параметры командной строки/ имя пользователя и в случае совпадения - запускает обработку формирования документов из файл, сформированного дельфами гость1010Можно, только нафиг этот DataSet нужен в 1С (см выше) А он нужен для того, чтобы не возится с разными программами посредниками. гость1010Это четко видно пользуясь Delphi отладчиком, но скорость работы в данной ситуации вторична, глючнотось Ole работы с 1С - вот главная фишка. Всегда думал, что для определения тормознутости профайлеры существуют, а не отладчики... И еще насчет тормознутости - сформированный документ проводите? гость1010Резюмирую: все работают через OLE или ручных загрузок/выгрузок и все работает прекрасно. Эт Вы типа съязвили, да? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 16:18 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
- Отлаживать обработку легче чем delphi приложение - При каких либо изменениях, поправках, доработках в документах мне не нужно компилить приложение заново, в конфигураторе поправил ert. И смысл тогда писать на дельфях? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 16:52 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
йцукен2И еще насчет тормознутости - сформированный документ проводите? Да провожу, основные тормоза как раз на данной операции йцукен2Всегда думал, что для определения тормознутости профайлеры существуют, а не отладчики... отладчиком можно увидеть на какой операции прога подвисает на минуту-другую и какой процесс жреть память и ЦП йцукен2Эт Вы типа съязвили, да? да какой там съязвил, написал все, отладил 4 месяца все ок было, сейчас пошли проблемы. Понял что такая канитель постоянно будет. Система требует постоянного контроля ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 17:46 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
гость1010 йцукен2И еще насчет тормознутости - сформированный документ проводите? Да провожу, основные тормоза как раз на данной операции В таком случае зачем на ОЛЕ наезжать? Оптимизируйте алгоритм формирования движений. гость1010 йцукен2Всегда думал, что для определения тормознутости профайлеры существуют, а не отладчики... отладчиком можно увидеть на какой операции прога подвисает на минуту-другую и какой процесс жреть память и ЦП А профайлером это еще лучще можно увидеть. Более того, результат будет гораздо более достоверный нежели чем "отладчиком посмотреть". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2007, 20:12 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
гость1010 Этот вариант работает, но очень не стабильно и очеееень медленно. Работа через Ole с 1С вообще одна большая ошибка. Господа программисты поделитесь практическим опытом, кто как организовывает такие вещи. Спасибо. Если коротко - НИКАК. Одинэс не предназначен для интеграции с чем либо кроме как через жо. Я так посмотрел, местные обитатели предлагают заливать файлы... ну-ну, когда потребуется интегрировать одинэс не с одной софтиной, а с несколькими, я на вас посмотрю господа одинэсеры: "Ой, а че эт у меня не залилось", "Ой а тут вот данные старые". Прибавьте сюда отствие штатного журнала (да да - самого банального - который в файлик пишет). Ладно, неконструктивные наезды закончились, теперь по сущетсву. Интегрироваться с поделкой на чтение довольно просто, по крайней мере с семеркой - нужен DDS парсер и макропроцессор, который запрос вида: select * from $SC_НОМЕНКЛАТУРА переведет в select * from SC104 Можно объединить это все в одном флаконе, например ввиде JDBC драйвера, чтобы все было можно было сразу писать запросы в человеческом виде (подо всем этим должен лежать реальный драйвер к MSSQL). Это работает только на 7.7, на 8.0 я так и не понял как можно автоматически вытаскивать DDS. Кроме того это работает только на чтение - писать средствами SQL что-то в одинэсную базу - это чистое самоубийство. Второй варинт (подходит для восьмерки), реализуется по тому же принципу который вы использовали - через COM. Вы его использовали для одного частного случая, но можно ведь и сделать универсальную вещь, по схеме: 1Cv8 <-> COM <-> ЗатычкаНаДельфи <- сеть -> КлиентНаЖабе <-> JDBCИнтерфейсКклиенту Такая схема позволяет работать с 1с как с обычным источником данных (в данном случае в качестве источника выступает внешняя информационная система), только язык запросов там будет не SQL, а либо 1СQL (для селектов): ВЫБРАТЬ ЗоныЦен.Цена КАК PRICE, ЗоныЦен.ДТС как DTS ИЗ Справочник.Номенклатура.ЦеныПродажи КАК ЗоныЦен, Справочник.Номенклатура КАК Номра ГДЕ (Номра.Ссылка = ЗоныЦен.Ссылка) и (Номра.Код<1000) и ((ЗоныЦен.ЗонаЦен.Код>0) ) УПОРЯДОЧИТЬ ПО ЗоныЦен.ДТС Убыв либо встроенный язык 1С (для модификации аля insert/update/delete): #EXECUTE ~ НачатьТранзакцию()~ спрСсылка = Справочники.Номенклатура.НайтиПоКоду(124)~ Если спрСсылка <> Справочники.Номенклатура.ПустаяСсылка() Тогда спрОбъект = спрСсылка.ПолучитьОбъект()~ спрОбъект.Наименование = "1с - отстой"~ спрОбъект.Записать()~ КонецЕсли~ ЗафиксироватьТранзакцию()~ Если удалось сделать такую конструкцию для JDBC, очевидно можно и для ADO.NET. Такая схема позволит обращаться как на чтение так и на запись. Только вот надежностью здесь и не пахнет. Затычка будет периодически вылетать, хреновато работают транзакции (по крайней мере у нас на данном этапе), так что использовать ее массово не получится в принципе (в лучшем случае для каких-то служебных вещей). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2007, 17:46 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
Всё получится, токмо нужно действовать через серви з ы и с версии 8.1 и выше, SOA новомодная вещь, кто тут хочет посметь не следовть моде? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 02:14 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
mini_rootИнтегрироваться с поделкой на чтение довольно просто, по крайней мере с семеркой - нужен DDS парсер Не совсем верно. из DDS не вытащишь id периодических реквизитов и id перечислений. Так что только DDS парсером не обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 09:06 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
1ЭснегВсё получится, токмо нужно действовать через серви з ы и с версии 8.1 и выше, SOA новомодная вещь, кто тут хочет посметь не следовть моде? Я посмею ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2007, 10:44 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
авторИнциатором создания документов в 1С является Delphi программа для этого и нужно OLE, чтобы не только ТаблЗначений сформировать, но сказать 1С - загружай эти данные. И нафига тут ОЛЕ В Дельфях достаточно создать данные определенного формата (как насчет ХМL? ) и дать команду 1С запуститься и принять данный файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2007, 19:53 |
|
Объединить 1C и фирменное ПО
|
|||
---|---|---|---|
#18+
Murash И нафига тут ОЛЕ В Дельфях достаточно создать данные определенного формата (как насчет ХМL? ) и дать команду 1С запуститься и принять данный файл. Ну так дать команду 1С можно либо из командной строки или через Ole. Если таких операция много то лучше через оле чтобы не грузить 1С постоянно, а пользовать созданный. В результате получилось следующее: Создаем dbf Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
в 1C в функции "глВыполнить" открываем dbf и выполняем по нему какие либо операции ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2007, 09:17 |
|
|
start [/forum/search_topic.php?author=AndyG&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 10662ms |
total: | 10805ms |
0 / 0 |