Переключение на Главную Страницу Страницы: 1 [2] 3 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Перехват Объект.Записать() (число прочтений - 12028 )
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: Перехват Объект.Записать()
Ответ #15 - 26. Сентября 2007 :: 16:08
Печать  
Посмотрел я эту библиотеку. Действительно, не промышленная  Печаль Забавно, правда, что сам автор тоже ругается на МОД  Улыбка

Похоже. не только у меня мысли про обмен возникают. Ведь в семерке выбор невелик в случае территориально разнесенных офисов - либо УРБД (назовитесь, кто пользуется этим чудом технологии Подмигивание) либо МОД, либо старый добрый терминал-сервер. Либо - клаву тебе в руки и 1С навстречу- пиши обмен самостоятельно Улыбка Похоже, что придется все-таки сесть и написать.
  
Наверх
 
IP записан
 
Alister
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Перехват Объект.Записать()
Ответ #16 - 26. Сентября 2007 :: 18:36
Печать  
Привет ! Я видел (но не разбирался) еще такую вещь - migrate3.dll как написано в описании " система по управлению обменом данными для 1С 7.7. Сайт указан http://www.info-tecs.ru
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Перехват Объект.Записать()
Ответ #17 - 27. Сентября 2007 :: 05:29
Печать  
freagle писал(а) 26. Сентября 2007 :: 16:08:
Посмотрел я эту библиотеку. Действительно, не промышленная  Печаль Забавно, правда, что сам автор тоже ругается на МОД  Улыбка

Похоже. не только у меня мысли про обмен возникают. Ведь в семерке выбор невелик в случае территориально разнесенных офисов - либо УРБД (назовитесь, кто пользуется этим чудом технологии Подмигивание) либо МОД, либо старый добрый терминал-сервер. Либо - клаву тебе в руки и 1С навстречу- пиши обмен самостоятельно Улыбка Похоже, что придется все-таки сесть и написать.

Зря  ты так про УРБД.
ИХМО в v77 УРБД очень надежное и продуманное решение.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехват Объект.Записать()
Ответ #18 - 27. Сентября 2007 :: 08:18
Печать  
Z1 писал(а) 27. Сентября 2007 :: 05:29:
Зря  ты так про УРБД.
ИХМО в v77 УРБД очень надежное и продуманное решение.

Оно надежное и простое. Этакий топор. Однако кое-кому иногда нужно выпиливать лобзиком.
  
Наверх
www  
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Перехват Объект.Записать()
Ответ #19 - 27. Сентября 2007 :: 08:55
Печать  
Страшноподумать, сколько "нетленок" выпилено нашим братом.. И у меня есть своя такая, тоже "перенос", будь он неладен.
Цитата:
Похоже, что придется все-таки сесть и написать.

Я тоже так подумал, попинав RocketLauncher и не возбудившись на идею "третьей базы 1С", которая занимается переносом данных между парами БД. Потом пожалел 315 раз Печаль
По ходу выясняется столько всяких моментов, что просто полный вперед. Закладывай большой срок (не знаю, какая у тебя производительность труда, я заложивши 1 месяц, колупался 3).
  
Наверх
ICQ  
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: Перехват Объект.Записать()
Ответ #20 - 27. Сентября 2007 :: 09:35
Печать  
А можешь назвать грабли, на которые наступал? - чтобы я постарался их обойти. Вроде обменные системы давно пользую, но не льшу себе надеждой, что знаю все места, где грабли лежат. Улыбка
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Перехват Объект.Записать()
Ответ #21 - 27. Сентября 2007 :: 10:35
Печать  
• Перенос между каким количеством баз? Готов ли ты сказать "Только между этими двумя"? Я не решился, поэтому инфо о соответствиях - вынес во внешний ДБФ. Унаследовал его от XBASE, когда понадобились сложные индексы - огреб по полной странных молчаливых глюков, но переделывать на другой движок в тот момент сил уже не было, теперь при открытии файла тормозим без нужного индекса... Даихренсним. Если выберешь внешнее хранилище - с XBASE не связывайся ни в коем случае.

• Сделал класс для работы с понятием "соответствие" (Найти, ЗаписатьНовое, Установить...) унаследовав его от движка хранилища. Возможно проще было бы жить с внедренными во все базы справочниками соответствий...

• Исходно все базы произошли от одной, то есть (бОльшая) часть объектов появилась в них в те времена, когда это была ОДНА база. По сему забился, в качестве ключевого поля, на ВнутрИД = ЗначениеСтрокуВнутр( Объ ). При первичном составлении таблицы соответствий, прошелся по сараю с граблями при Объ = ЗначениеИзСтрокиВнутр( ВнутрИД ) для объектов, созданных уже после разделения баз. Впрочем, другого решения кроме СтрокиВнутр, я до сих пор не признаю.

• у объектов в базах нет отборов, позволяющих выбрать только те, которые еще не имеют соответствия (база DBF, прямых запросов не использую), соответственно каждый раз происходит просмотр всего спр.Номенклатура, Единицы, ЮрЛица, ФизЛица, Контрагенты, Договоры... Тормоза. С документами проще, диапазон дат, и всё. Но, с учетом, что планировалось более двух баз, отбор по реквизиту и не сделать, только прямые запросы.

• Перенос происходит в интерактивном режиме, данные получаются через OLE, для переноса новых объектов (а их обычно не оч много) получаем их текстовые описания довольно быстро, не смотря на тормознутость OLE. Но тут же есть "Просмотр соответствий", и, поскольку сделать ПоставщикДанных для ТП, который подгребал бы данные только для отображаемых строк, я не могу - то тяну по ОЛЕ весь ниипический объем сразу. Сделал прокладку, которая прозрачно делит/сращивает строки запроса и ответа на небольшие куски (предел строки у ОЛИ примерно 1.2 мегабайта). Но без пакетных запросов\ответов не обойтись - запрашивать данные на каждый объект отдельно - накладные расходы на ОЛЕ приводят к ещё большим тормозам (спр.Номенклатура 10т строк). Начал лепить замену ОЛЕ на TCP/IP используя Rik_Inet, не доделал, хотя был близок. Хотя стоило сделать сравнительный тест.

Что ещё сказать... Спрашивай, если что интересно.
  
Наверх
ICQ  
IP записан
 
mdzen
Junior Member
**
Отсутствует


Копм вам не для того чтоб
орехи колоть!

Сообщений: 35
Местоположение: Набережные Челны
Зарегистрирован: 18. Сентября 2006
Пол: Мужской
Re: Перехват Объект.Записать()
Ответ #22 - 27. Сентября 2007 :: 16:52
Печать  
Очень нужен перехват, а то приходится каждый раз изголяться встраивая вот этот перл http://infostart.ru/projects/402/ . А хотелось бы иметь возможность платформо, пардон, конфигурационно-независимо переватывать изменения объектов  развернуто, а не так куцо и бестолково как в стандартном журнале регистрации.
  
Наверх
ICQ  
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: Перехват Объект.Записать()
Ответ #23 - 27. Сентября 2007 :: 20:19
Печать  
Цитата:
XBASE не связывайся ни в коем случае


Только под дулом пистолета. Нет. Крупнокалиберного пулемета. Спаренного. Нет. Счетверенного. Причем их должно быть два. Нет. Три. Слева. Справа - больше.  Смех

Огреб от xBase граблей по полной, когда пользовал МОД. У меня было 69 удаленных баз. Ежедневный лог транзакций на SQL-нике - 5 Гб. О! Плакал, даже не плакал, а рыдал я от него до тех пор, пока все нафиг не переписал, заточив под работу с прямыми запросами.

Там "соответствие объектов" простое - по IDD, уникальных во всем пространстве обмена. Правда, тоже периодически наступаешь на грабли - с какого-то афанасия idd может присвоиться не тому типу объекта. Я этот баг даже не пытался отслеживать, на моих объемах. Просто исправлял, и все.

Цитата:
Впрочем, другого решения кроме СтрокиВнутр, я до сих пор не признаю

А если тестирование/исправление конфигурации тебе перепишет DOCID, к примеру? Как, сталкивался с такими ситуациями? Как выкручивался?

Цитата:
база DBF, прямых запросов не использую... отбор по реквизиту и не сделать, только прямые запросы


Угу, только прямые. Причем - без вариантов. Пользуюсь случаем высказать признательность всем, кто мне помог тогда здесь, на форуме, особенно DmitrO. Без его помощи я бы долго еще блуждал по сараю с граблями...

Цитата:
Но тут же есть "Просмотр соответствий"...


Вот с этого места я перестал тебя понимать... Можешь чуть понятнее? Зачем весь объем?

  
Наверх
 
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: Перехват Объект.Записать()
Ответ #24 - 27. Сентября 2007 :: 20:29
Печать  
А вообще, мнится мне, что если писать обмен для 1С, то ни в коем случае не в
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехват Объект.Записать()
Ответ #25 - 27. Сентября 2007 :: 20:56
Печать  
freagle писал(а) 27. Сентября 2007 :: 20:29:
А вообще, мнится мне, что если писать обмен для 1С, то ни в коем случае не в

Зачем так категорично? Может быть 1С +не1С ?
  
Наверх
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Перехват Объект.Записать()
Ответ #26 - 28. Сентября 2007 :: 02:38
Печать  
freagle писал(а) 27. Сентября 2007 :: 20:19:
Цитата:
Но тут же есть "Просмотр соответствий"...

Вот с этого места я перестал тебя понимать... Можешь чуть понятнее? Зачем весь объем?

В моем случае базы - это не "Центр и периферия", это черно-белый учет. То есть обе базы активные, элементы могут создаваться в любой базе, правила пользователям объяснены, но иногда они забывают\ошибаются\бывают не в курсе\ещё что-нибудь... Тогда пользователю нужно вручную соответствие поставить, разорвать, изменить. Иногда бывает нужно просмотреть имеющиеся соответствия, разные косяки бывают. Типа - обличенный полномочиями, "особо умный" пользователь, слегка переименовал несколько элементов номенклатуры. Для такого просмотра, возможно, весь объем и не нужен, но это уже на выходе, а на входе, чтобы решить показывать строку или нет,  данные об объекте таки нужно по OLE вытянуть. В последнее время фича используется всё реже, так что просто забил.

Цитата:
А если тестирование/исправление конфигурации тебе перепишет DOCID, к примеру? Как, сталкивался с такими ситуациями? Как выкручивался?

Знаешь... Чтобы у объекта сменился IDDOC/ID -- я не встречал.
Если логически поразмышлять о возможности, причинах и последствиях такого события... Мне кааца, что ТиИ не сделает этого ни когда, причину придумать не могу, последствия Ужас
Если на объект были ссылки, то ТиИ исходный ИД должна сохранить, к примеру создать новую запись с ним. Тогда логически объект останется тем же, хотя наполнение в записи будет утеряно. Вот, кстати, тогда мой "просмотр соответствий" может помочь Улыбка Цепляемся к неповрежденной базе и смотрим - кто же это на самом деле был? Но если в базе с переIDованным объектом ссылок на него не было - то в соответствиях будет битая "ссылка". Придется делать свою "ТиИ" для Соответствий Улыбка

Но, согласись, что IDDOC/ID надежнее любого пользовательского реквизита? Или нет? Что думаешь использовать в качестве ключа?

Цитата:
А вообще, мнится мне, что если писать обмен для 1С, то ни в коем случае не в 1С
Что имеется ввиду, не уже ли "Переносчик работает вне контекстов 1С соединяемых баз, а является самостоятельным приложением"? Ужос. Хотя, в контексте "69 баз", может быть лучшим решением.

Хранение соответствий объектов куда думаешь поместить?

ЗЫ: Последние три вопроса тесно связаны, ответ на один может сделать другой бессмысленным, это я понимаю.
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Перехват Объект.Записать()
Ответ #27 - 28. Сентября 2007 :: 06:27
Печать  
freagle писал(а) 27. Сентября 2007 :: 20:29:
А вообще, мнится мне, что если писать обмен для 1С, то ни в коем случае не в

А чем не устраивает УРБД + резать самому
( уменьшать число записей ) в _1DWNLDS перед выгрузкой ???
  
Наверх
 
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: Перехват Объект.Записать()
Ответ #28 - 28. Сентября 2007 :: 08:29
Печать  
Цитата:
Что имеется ввиду, не уже ли "Переносчик работает вне контекстов 1С соединяемых баз, а является самостоятельным приложением"?


Угу. примерно так. Есть такая мысль, и я ее думаю. Причем лучше даже не приложением, а системным сервисом. А задача 1С - только оповещать этот сервис об изменениях объектов. Нафига? Да очень просто:
1. Вынести всю логику обмена куда-нибудь подальше из 1С. Это позволит при меньших затратах получить доступ ко всему многообразию методов и компонент репликации данных, которые сегодня уже есть.
2. 1С будет заниматься чем ей и положено - обработкой бизнес-объектов.
3. Такое решение позволит раздельно менять бизнес-логику и логику обмена.
4. Если решение окажется удачным, его можно будет использовать на других системах с минимальными доработками - только на участках уведомления об изменениях объектов и загрузки объектов.

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

- Алло, Вася, ты мне какой последний пакет направил?
- 105-й.
- А у меня 104 только загрузился.
- Не знаю, смотри почту.
- Да смотрел я, ничего нет

... наконец, нашли пакет, и опять:

- А почему в нем нет документа №xxxx? (марья ивановна сказала, что отгрузила на нас товар...)

А в это время система находится в середине списка из 69 баз. И прерывать обмен сейчас - просто глупо ради какого-то Пети Пупкина с его е...м документом. Только разобрались, и Петя понял, куда он должен вставить себе документ марьи ивановны,  - второй звонок, третий, четвертый...

Я никогда не думал что выучусь так многоколенно материться.

После трех дней подряд подобного "обмена" хочется собрать пользователей всех периферийных баз в одной комнате, усадить поплотнее, и кинуть туда пару гранат... Потом застрелиться самому.

Именно поэтому я и говорю - желательно оформить сервисом. Если пользователю позарез нужен документ и абсолютно нехрен кроме этого делать - пусть сидит и дыргает кнопочку "Обмен". Сервис, если нет для него данных будет стабильно возвращать ответ "А нету, родной, для тебя ничего..." А как только появятся - начнет отрабатывать передачу. Но! это будет только по запросу клиента, а не "по расписанию"

Теперь представим, что одновременно хотя бы двум  пользователям вставило именно сейчас получить данные. А это сразу же - параллельная обработка, то есть - диспетчеры запросов, очереди, потоки... То есть то, что на 1С, даже с применением 1С++ (простите, разработчики, не гневайтесь на правду...) нормально не сделаешь.

Поэтому и "внешнее приложение", точнее, сервис...

Цитата:
А чем не устраивает УРБД + резать самому
( уменьшать число записей ) в _1DWNLDS перед выгрузкой ???


А можешь подсказать как в УРБД реализовать следующее: документ "Реализация (комиссия)" должен в периферийной БД стать "Поступлением ТМЦ (комисиия)", и создать для себя партии, а не хватать те, которые пришли по обмену?

  
Наверх
 
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: Перехват Объект.Записать()
Ответ #29 - 28. Сентября 2007 :: 09:00
Печать  
Цитата:
Но, согласись, что IDDOC/ID надежнее любого пользовательского реквизита? Или нет? Что думаешь использовать в качестве ключа?


Вообще-то да... Я не думал именно о DOCID/ID в качестве ключа. Но то, что не хочется завязываться на пользовательский реквизит - это точно.

Ведь объекты в двух базах могут быть эквивалентны (попарное сравнение полей), но не идентичны - (сравнение ссылок, в нашем случае - сравнение IDDOC/ID)

Надо помараковать.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 
ОтправитьПечать