![]() |
|
v7: OLE-Обмен между базами, помогите наладить | ☑ | ||
---|---|---|---|---|
0
Aldnepr
05.04.16
✎
12:29
|
Здравствуйте. Конфигурации ТИС-Комплексная .
Требуется из ТиС одновременно работать в Комплексной.Главная задача- одновременно создавать определенный документ сразу в двух базах. Подскажите 1. Как сделать, чтобы при входе один раз подключиться к базе-приемнику и в ней работать.Я прописал в глобальном функцию подключения и в принципе, подключаюсь, но при записи каждого документа приходиться вновь подключаться. Вот код который прописан в глобальном ПриНачалеРаботыСистемы(). Как из документа обращаться к уже открытой базе? БазаИсточник = СоздатьОбъект("V77.Application"); Путь=Строка("D:\1C_Base\Копия\"); Пользователь=""; пароль=""; Открыта = БазаИсточник.Initialize(БазаИсточник.RMTrade, "/D" + СокрЛП(Путь) + " /N" + Пользователь + "/P" + Пароль, ""); Если Открыта = 0 Тогда Предупреждение("Ошибка открытия информационной базы "); Иначе Сообщить("База доступна"); КонецЕсли |
|||
1
Mikeware
05.04.16
✎
12:30
|
БазаИсточник.БлаБлаБла()
|
|||
2
Aldnepr
05.04.16
✎
12:37
|
(1) Я извиняюсь,не совсем силен в "арифметике", самоучка. Обращение в процедуре модуля документа, который надо перенести, напрямую БазаИсточник не распознается. Т.е. БазаИсточник.СоздатьОбъект("РасходнаяНакладная")не работает.
|
|||
3
Mikeware
05.04.16
✎
12:37
|
(2) почему решили, что не работает?
|
|||
4
Mikeware
05.04.16
✎
12:38
|
может, надо БазаИсточник.СоздатьОбъект("Документ.РасходнаяНакладная")
? |
|||
5
Смотрящий
05.04.16
✎
12:38
|
БазаИсточник объявил в глобальнике как переменную экспортную ?
|
|||
6
Aldnepr
05.04.16
✎
12:41
|
(5) Нет, не объявлял. Вот это я именно и хотел уточнить. Я еще не совсем соображаю, как модуль в документе "понимает" что эту переменную надо вытягивать из Глобального. Т.е. Надо прописать В начале процедуры перем БазаИсточник(Экспорт) и все?))
|
|||
7
Mikeware
05.04.16
✎
12:43
|
(6) надо объявить ее в глобальнике. и объявить экспортной, чтоб была доступна из других модулей
|
|||
8
Builder
05.04.16
✎
12:53
|
Еще одна тонкость - у каждого пользователя будет своя БазаИсточник.
|
|||
9
Aldnepr
05.04.16
✎
13:22
|
(8) Спасибо всем! Заработало)).Т.е. формально можно наоткрывать "кучу" баз и таким образом затормозить работу БазыПриемника в частности? Подскажите, насколько это глючная/неглючная тема таким вот образом работать через ОЛЕ (планирую четыре разных дока синхронизировать)
|
|||
10
Mikeware
05.04.16
✎
13:40
|
(9) это очень плохая идея.
|
|||
11
Aldnepr
05.04.16
✎
14:17
|
(10) Чем плохая проясните? Просто на другом форуме рекомендовали именно такой путь, либо изучать КД (что так же весьма нетривиально, т.к. реквизиты весьма разнятся, боюсь упустить что-нибудь). Можно еще через ДБФ выгрузка-загрузка, но тогда отлавливать любителей покопаться в заднем числе прийдется, это тоже засада еще та. Что посоветуете то?
|
|||
12
Mikeware
05.04.16
✎
14:20
|
(11) тетя оля - страшный тормоз. причем с обоих сторон.
КД вполне нормален. не так и страшен |
|||
13
Aldnepr
05.04.16
✎
14:26
|
(12) А подскажите, как в плане оперативности обстоит в случае с КД, и не надо ли дописывать что-то в конфигурацию, из которой планируется выгружать доки, я ж так понимаю КД этой надо как то знать, поменял ли чел что-то в "заднем числе". Или на удаление может док. какой поставили, ну или номер поменяли?
|
|||
14
Mikeware
05.04.16
✎
14:31
|
(13) я ж не знаю ваших задач...
|
|||
15
ДенисЧ
05.04.16
✎
14:31
|
(13) Для это существует такая штука, как планы обмена...
(14) А как же скилл телепатии? |
|||
16
Mikeware
05.04.16
✎
14:33
|
(15) 1. Это клюшки
2. телепатия уходит на снеговика. Вместе с нервами |
|||
17
ДенисЧ
05.04.16
✎
14:37
|
(16) а шо, в клюшках уже отменили планы обмена? Ну, я имею УРБД...
|
|||
18
Mikeware
05.04.16
✎
14:39
|
(17) а если базы разные? ну, типа обмен Тис-комплексная?
да вообще, есть 100500 вариантов... |
|||
19
Aldnepr
05.04.16
✎
14:40
|
(14) Задачи в принципе не архи сложные.Перекидывать из Комплексной в ТиС новые элементы спр.Контрагенты и спр.ТМЦ а так же БанковскуюВыписку, а в обратном порядке- доки: счет,счетВходящий,ПрихНакл,РасхНакл.
|
|||
20
Mikeware
05.04.16
✎
14:40
|
+(18) гы, у него действительно ТиС-Комплекная :-)
|
|||
21
ДенисЧ
05.04.16
✎
14:40
|
(18) Мне тебя учить использованию УРБД? Не смеши мои тапки...
|
|||
22
Aldnepr
05.04.16
✎
14:41
|
Блин, меня научите )
|
|||
23
Mikeware
05.04.16
✎
14:42
|
(21) ТС научи...
|
|||
24
ДенисЧ
05.04.16
✎
14:42
|
(23) А у него деньги есть?
|
|||
25
Aldnepr
05.04.16
✎
14:44
|
(24) А "по любви" уже не бывает?))
|
|||
26
Aldnepr
05.04.16
✎
14:44
|
Сейчас я наладил пока обмен с помощью ДБФ. Но это гемор конечно же еще тот. Постоянно все изменения под запись, запрет редактирования "снимите пожалуйста" и т.д...
|
|||
27
Mikeware
05.04.16
✎
14:44
|
(24) Остап Бендер говорил: "Если по стране ходят денежные знаки, то у кого-то их должно быть много..."
|
|||
28
ДенисЧ
05.04.16
✎
14:46
|
(25) Бывает. Но дороже.
(27) Вот я и ищу этого кого-то. (26) Какие изменения, какую запись? А с датой запрета - у тебя всегда будут. Ибо нефиг лазить в прошлые тысячелетия. |
|||
29
Aldnepr
05.04.16
✎
14:46
|
Мне вот такое насоветовали- но не потяну, тут за деньги только прийдется:
Подсказка: УРБД. Таблица 1supdts содержит список ИД измененных объектов данных. Каждую из двух баз сделать центральной. Для каждой создать базу - только приемник. Настроить мирацию объектов данных как надо (для каждой миграция чего надо только в эту самую периферийку - как будто в другую базу данных). Когда надо - читать из 1supdts список "чего надо вігружать", "раскручивать" по ID объектов до примитивных значений реквизитов и в нужном формате выгружатью Каковую выгрузку - загружать в приемник. И чистить 1supdts. Плюс опциональн (и возможно) крутить в прочих урбд-кишочках маркеры-номра-признаки выполненных обменов. А в-общем, задача далеко не тривиальная. Хотя и вполне решаемая. Лично я - делал, по каковой причине с этими глупостями сюда и вылезаю. |
|||
30
ДенисЧ
05.04.16
✎
14:48
|
"Хотя и вполне решаемая. Лично я - делал, по каковой причине с этими глупостями сюда и вылезаю."
У меня возник когнитивный диссонанс. Если делал - зачем вопросы задаёшь? |
|||
31
Aldnepr
05.04.16
✎
14:50
|
(30) ну нет же- это цитата для меня была с другого форума, извини в кавычки не взял))
|
|||
32
Aldnepr
05.04.16
✎
14:51
|
тут по-моему единственное место, где и ученичкам типа меня подскажут. Везде как-то если видят , что не в "теме"- сразу отворачиваются.
|
|||
33
Mikeware
05.04.16
✎
14:56
|
(32) ну дык подсказали же...
|
|||
34
HawkEye
05.04.16
✎
14:57
|
(2) эта...
так пиши База.CreateObject("Документ.ТребованиеНакладная"); |
|||
35
Il19
05.04.16
✎
14:59
|
ну раньше для лентяев было такое: Книга знаний: FAQ по Менеджеру обмена данными (МОД), но не он-лайн
|
|||
36
Aldnepr
05.04.16
✎
15:00
|
(34) Не не... это я уже знал ДО того как сюда влезть с вопросами. Пока тут слушаю, уже прописал выгрузку для одного дока- работает)
|
|||
37
HawkEye
05.04.16
✎
15:01
|
(36) тогда чего у тебя не получается?
|
|||
38
Aldnepr
05.04.16
✎
15:01
|
(35) ну так это МОД. Его и хрен найдешь уже. Я с него и начал собственно изучение вопроса
|
|||
39
Mikeware
05.04.16
✎
15:01
|
(35) ну это еще и мод нужен...
а если надо искать и учить дибо мод, либо КД - уж ллучше КД... |
|||
40
ДенисЧ
05.04.16
✎
15:02
|
Зачем вам МОД, если есть УРБД?
|
|||
41
ДенисЧ
05.04.16
✎
15:03
|
(39) КД - для выгрузки. УРБД - для регистрации.
|
|||
42
Aldnepr
05.04.16
✎
15:03
|
(37) да получается в том то и дело. Аж самому интересно стало). Но вот же старшие говорят, что тормоза замучают. Это ж я один колупаюсь, а если человека три хотя бы и начнут лупашить доки?
|
|||
43
HawkEye
05.04.16
✎
15:03
|
зачем вам МОД, КД, УРБД и т.д. если есть OLE )))
ole.... ole ole ole.... ну и т.д. )) |
|||
44
ДенисЧ
05.04.16
✎
15:04
|
(43) А как ты по ОЛЕ поймёшь, какие документы и/или справочники были изменены?
|
|||
45
HawkEye
05.04.16
✎
15:04
|
(42) тогда вообще не надо так делать... )))
|
|||
46
HawkEye
05.04.16
✎
15:05
|
(44) я? )))
в сабже: "Главная задача- одновременно создавать определенный документ сразу в двух базах"... - зачем понимать что, что-то изменилось? |
|||
47
Aldnepr
05.04.16
✎
15:06
|
(44) Док=БазаИсточник.CreateObject("Документ.Т_ПриходнаяНакладная");
Док.ВыбратьДокументы(НачГода(ДатаДок),КонГода(ДатаДок)); Если Док.НайтиПоНомеру(СтарыйНомер,ДатаДок,)=0 тогда Док.Новый(); КонецЕсли; Док.НомерДок=НомерДок; Док.ДатаДок=ДатаДок; Док.Фирма=БазаИсточник.Константа.БазФирма; Док.Примечание=Комментарий; Док.Записать(); я так пока нарисовал |
|||
48
ДенисЧ
05.04.16
✎
15:06
|
(46) см (13)
"надо как то знать, поменял ли чел что-то в "заднем числе"" |
|||
49
HawkEye
05.04.16
✎
15:07
|
(48) у меня страница с 29 начинается ))))
|
|||
50
ДенисЧ
05.04.16
✎
15:07
|
(47) Мда... Лучше бы ты кому денег заплатил...
А не стал колбасить всю базу за год... Потом будешь удивляться, а что это у нас месяцы раскрылись и обороты изменились... |
|||
51
HawkEye
05.04.16
✎
15:07
|
(47) тьфу на вас... выбрать и найтиПономеру - кто так делает?
|
|||
52
Aldnepr
05.04.16
✎
15:07
|
(48) я думаю (если осилю)- тупо, если НАЙДЕН такой док в приемнике- то все перезаписвываем по новой
|
|||
53
ДенисЧ
05.04.16
✎
15:07
|
(49) внизу есть ссылочка с 3мя полосками...
|
|||
54
ДенисЧ
05.04.16
✎
15:08
|
(52) Мда... Как мне повезло, что я не работаю в твоей конторе..
|
|||
55
Il19
05.04.16
✎
15:08
|
(48) во-во, потом-то все и начнется...
|
|||
56
HawkEye
05.04.16
✎
15:09
|
(53) это слишком сложно для меня... мне двух полосок - нормально уже )))
в любом случае... изменили - выгрузили... нафиг не надо никаких хххД |
|||
57
HawkEye
05.04.16
✎
15:09
|
(52) зачем Выбрать и Найти друг за другом к одному объекту?
|
|||
58
Aldnepr
05.04.16
✎
15:11
|
(57) ну на скорую руку набросал простите...
|
|||
59
HawkEye
05.04.16
✎
15:12
|
(58) набросай на медленную руку... потом смотреть будем...
|
|||
60
Aldnepr
05.04.16
✎
15:13
|
(54)ну не знаю. Пока по дбф перекидываю (давно уже) - ничего нигде не "вылазит" и не прет. Но ментовской работы много- за всем следить, вот и хочу избавиться
|
|||
61
Mikeware
05.04.16
✎
15:15
|
(41) ага. но можно и перехватчик для регистрации.
|
|||
62
Mikeware
05.04.16
✎
15:15
|
(59) он тебе на глаз насыпет.....
|
|||
63
Aldnepr
05.04.16
✎
15:16
|
(62) ))))))))
|
|||
64
Mikeware
05.04.16
✎
15:17
|
(60) дык за чем ты следишь, если не за чем не следишь, а тупо переписываешь?
|
|||
65
HawkEye
05.04.16
✎
15:18
|
(62) не очкуй... я строительные очки уже заготовил )
|
|||
66
Mikeware
05.04.16
✎
15:19
|
(65) хоть очкуй, хоть не очкуй -все равно .....©
|
|||
67
Aldnepr
05.04.16
✎
15:20
|
(64) чтоб ничего не украли без меня ;)
|
|||
68
Mikeware
05.04.16
✎
15:22
|
(67) ту так укради ВСЕ, и работы будет гораздо меньше.
|
|||
69
Ёпрст
гуру
05.04.16
✎
15:23
|
Самое простое - МОД, поставил, настроил и забыл.
Всё остальное - пилить и пилить + нужно оно, знание, че пилить и где. Ну и, для гурманов, регистрация урибом, обмен мод-ом или кд, холтя мод-ом проще и гибче. |
|||
70
Mikeware
05.04.16
✎
15:28
|
(69) самое простое - этот то, что знаешь.
|
|||
71
Aldnepr
05.04.16
✎
15:30
|
(69) Ну так МОД этот уже не поддерживается, и его только украсть можно насколько я понимаю?
|
|||
72
Il19
05.04.16
✎
15:35
|
(71) походу да, уже у разрабы о нем молчат.. увы.
|
|||
73
Il19
05.04.16
✎
15:37
|
а сами базы то хоть на одном серваке?
|
|||
74
Aldnepr
05.04.16
✎
15:38
|
(73) да
|
|||
75
Aldnepr
05.04.16
✎
15:38
|
и они ДБФ-ные
|
|||
76
Il19
05.04.16
✎
15:39
|
ну мучай олю, просто глючновата она.
|
|||
77
Mikeware
05.04.16
✎
15:40
|
(76) да не особо глючновата. просто тормознута.
гемора столько же, сколько в КД |
|||
78
Aldnepr
05.04.16
✎
15:43
|
(77) А каким образом можно время дока синхронизировать? в приемнике 12:00:00 первый док становится, потом 12:00:10 и т.д.
|
|||
79
Mikeware
05.04.16
✎
15:48
|
(78) а СП тоже украли?
|
|||
80
HawkEye
05.04.16
✎
15:48
|
(76) чего в ней глючного?
|
|||
81
Aldnepr
05.04.16
✎
15:59
|
(79) УстановитьВремя() знаю. А как извлечь у записываемого дока-нет. СП- не видел не знаю, видимо таки украли(
|
|||
82
Mikeware
05.04.16
✎
16:08
|
(81) а ты поставь курсор на УстановитьВремя() , и нажми контрол-ф1. мужик_в_кепке™ тебе кое чо подскажет. И посмотри в окрестностях....
|
|||
83
ДенисЧ
05.04.16
✎
16:09
|
(82) Ну сколько раз повторять - не ношу я кепку...
|
|||
84
Mikeware
05.04.16
✎
16:11
|
(83) тебя никто носить и не просит... ты ее одень, и пусть висит...
|
|||
85
Il19
05.04.16
✎
16:15
|
(80) давно было .. подзабыл, но при интенсивной работе с базой + записью через олю - вешалась она, приходилось мутить примочки, чтобы отследить сообщения системы о падении и перезапускать 1с, делать систему очередей и пр., тонкостей и деталей не помню
|
|||
86
Смотрящий
05.04.16
✎
16:17
|
(0) А тебе непременно через олю надо ? Т.е. вот прям щаз дублировать документ или он проsто должен возникнуть в другой базе sо временем и позицией как первой ?
|
|||
87
Aldnepr
05.04.16
✎
16:20
|
(82)Так мужик сказал- БазаПриемник.док.УстановитьВремя(ч,м,с), это я понял, но как извлечь эти ч,м,с из БазаИсточник.Док не говорит
|
|||
88
aka AMIGO
05.04.16
✎
16:26
|
Оля нормальная. Просто Вы не умеете её готовить © :)
Отлаживается нормально, только при попытке ввести переменную в табло отладчика - она тут-же виснет окончательно и бесповоротно. Потому, если надо смотреть значения - позаботьтесь ввести нужные переменные в табло отладчика до запуска обработки.. Или, по крайней мере, до старта оператора CreateObject. |
|||
89
Aldnepr
05.04.16
✎
16:36
|
(88) ВО! Я на этом уже попался- зависло все к чертям, пришлось сеанс РДП сбрасывать принудительно. Спасибо, а я думал это ОЛЕ так нагружает сервак
|
|||
90
Mikeware
05.04.16
✎
16:37
|
(88) а зачем там отладчик?
|
|||
91
aka AMIGO
05.04.16
✎
16:38
|
(90) Чтобы не вслепую шарить по кишочкам 1С-программы :)
|
|||
92
Mikeware
05.04.16
✎
16:44
|
(91) дык пишешь нормально, на крайняк в текст вставляешь сообстчить(). ну а после - выкашиваешь их
|
|||
93
aka AMIGO
05.04.16
✎
16:45
|
(92) Есть разные способы, друже! :)
И все они имеют право на существование |
|||
94
Mikeware
05.04.16
✎
16:47
|
(93) согласен. но как-то принято выбирать наименее геморройные способы...
хотя... "Каждый - сам кузнец своего геморроя..."© |
|||
95
ДенисЧ
05.04.16
✎
16:52
|
отладчик придумали трУсы!!
|
|||
96
aka AMIGO
05.04.16
✎
16:56
|
(95) А смелые люди придумали метод научного тыка :)
|
|||
97
Mikeware
05.04.16
✎
16:56
|
(96) а храбрые - убирают слово "научный" :-)
|
|||
98
ДенисЧ
05.04.16
✎
17:01
|
(96) (97) Ага... Вчера в НИИ цитологии и генетики методом научного тыка было получено удовольствие...
|
|||
99
Mikeware
05.04.16
✎
17:02
|
(98) это там, где недавно ученые скрестили слона с верблюдом? не науки ради, а чисто поржать?
|
|||
100
ДенисЧ
05.04.16
✎
17:03
|
100
(99) нет. Это там, где ежа с ужом скрещивали.... |
|||
101
Mikeware
05.04.16
✎
17:06
|
(100) у нас в миассе, видимо, скрещивают... Егоза получается...
|
|||
102
ДенисЧ
05.04.16
✎
17:06
|
(101) Кого за что??
|
|||
103
mingw
05.04.16
✎
17:08
|
||||
104
Mikeware
05.04.16
✎
17:09
|
(102) ежей со змеями в пробышленных масштабах
|
|||
105
ДенисЧ
05.04.16
✎
17:09
|
(104) у тебя буква Ё сломалась? ))
|
|||
106
Mikeware
05.04.16
✎
17:11
|
(105) нет. точки кончились
|
|||
107
ДенисЧ
05.04.16
✎
17:12
|
(106) Хочешь, продам точек над Ё? И ещё галочек над Й....
|
|||
108
Mikeware
05.04.16
✎
17:13
|
(107) не надо, я от i точек наковыряю...
|
|||
109
ДенисЧ
05.04.16
✎
17:14
|
(108) А не на Майдане ли ты пойдёшь их ковырять??
|
|||
110
Mikeware
05.04.16
✎
17:15
|
(109) а тебе что, майдановцев жалко?
|
|||
111
Mikeware
05.04.16
✎
17:16
|
(109) или ты там уже все отковырял?
|
|||
112
ДенисЧ
05.04.16
✎
17:20
|
(111) А ты думал, откуда я столько точек набрал? )))
|
|||
113
HawkEye
05.04.16
✎
17:53
|
(87) ты не поверишь... ПолучитьВремя()!
неожиданно, да? |
|||
114
ДенисЧ
05.04.16
✎
18:39
|
(113) Да ты гений!!
|
|||
115
HawkEye
05.04.16
✎
18:47
|
(114) :-[ да... я знаю :-[:-[
|
|||
116
ДенисЧ
05.04.16
✎
18:50
|
(115) Причем Гений 1С! )))))))))
|
|||
117
Aldnepr
05.04.16
✎
19:43
|
(113) Да, а получу я время интересно, еще не записанного Дока? Планируется то в ПриЗаписи() вставлять (скорее всего) обработку Выгрузить(), которая и будет орудовать через ОЛЕ в Базе2. Или в этом случае это невыполнимая задача?
|
|||
118
HawkEye
05.04.16
✎
19:50
|
(116) не... чужие ники мне не зачем )))
(117) не надо ни в при записи ни, тем более, в припроведении такие вещи делать |
|||
119
Aldnepr
05.04.16
✎
20:05
|
(118) А как правильно тогда?
|
|||
120
Смотрящий
05.04.16
✎
20:22
|
(119) Ты (86) - оголовочек-то зирни
|
|||
121
Aldnepr
05.04.16
✎
23:14
|
(120) в принципе, подошел бы и такой вариант (86). Что то предложите?
|
|||
122
Aldnepr
10.04.16
✎
14:30
|
возникла проблемка при подключении к БАЗЕ2. Т.к. функция подключения прописана в глобальном в ПриНачалеРаботыСистемы(), то при запуске главной базы она подвисает на несколько секунд, затем появляется окно логин/пароль от второй базы. И если в этот момент юзер просто клацнет по уже открытому окну ГЛАВНОЙ базы, то маленькое окошко с логин/пароль прячется как бы за основное, и его никак не достать, не свертыванием всех окон никак- только через дмиспетчер задач с принудительной остановкой. Как это исправить, ну или поставить тайм-аут на вход во вторую базу - если логин/пароль не вводится за 5 сек., то завершаем работу в главной базе. Повторю код инициализации подключения
Открыта = БазаИсточник.Initialize(БазаИсточник.RMTrade, "/D" + СокрЛП(Путь) + " /N" + СокрЛП(Пользователь) + "/P" + Пароль, ""); Если Открыта = 0 Тогда Предупреждение("Ошибка открытия информационной базы"); глПодклОЛЕ=0; Иначе глПодклОЛЕ=1; КонецЕсли; глУстИмяОкна(); |
|||
123
HawkEye
10.04.16
✎
14:39
|
(122) вариант правильно прописать логин и пароль для доступа ко второй базе, не предлагать?
|
|||
124
Aldnepr
10.04.16
✎
14:45
|
(123) Немного не поняли меня. Я пароли не хочу прописывать- планирую, чтобы сам юзер вводил его.Вот на моменте этого ввода и возникает трабла
|
|||
125
HawkEye
10.04.16
✎
14:48
|
(124) это ты не понял, когда тебе говорили, что не надо так делать.
тем более применять такой "гениальный" ход как в (122) |
|||
126
Mikeware
10.04.16
✎
14:51
|
(125) "обходя грабли - ты теряешь драгоценный опыт!"©
|
|||
127
HawkEye
10.04.16
✎
15:00
|
(126) так известно же кто на чьих граблях учится...
|
|||
128
Aldnepr
10.04.16
✎
15:05
|
(125) подскажи тогда, как правильно
|
|||
129
Mikeware
10.04.16
✎
15:50
|
(127) но детские грабли - лучше все-таки обходить..
|
|||
130
Aldnepr
10.04.16
✎
16:07
|
(129) так значит подключаться при начале работы системы это теперь по -децки? А в начале советовали именно в глобальном прописать. Каким образом тогда прописать подключение? я все таки рхочу попробовать делать обмен онлайн. тем более там три дока всего
|
|||
131
Mikeware
10.04.16
✎
16:10
|
(130) прописать в глобальном советовали переменную, хранящую подключение.
-------- запрашивай у юзверя логин и пароль (ну, или только пароль), и подключай строкой из (122) зы. чем неприятны детские грабли - у них ручка короткая. до лба не достает, достает лишь до ... |
|||
132
Aldnepr
10.04.16
✎
17:58
|
(131) так я же именно так и сделал.
перем БазаИсточник Экспорт; и юзвери подключаются , но иногда окошко ввода пароля "прячется" как описал выше. потому чтг не дождавшись появления этого запроса пароля клацнут мышкой. |
|||
133
ДенисЧ
10.04.16
✎
18:42
|
Сделай проще...
Запроси пароль у пользователя из своей 1с. Оттуда оно уже не спрччется (если не опубликованное приложение) |
|||
134
Andreyyy
10.04.16
✎
19:08
|
(0) Зачем под каждым сеансом открывать новую копию по OLE...Все равно бесполезная задача в части тормозов при создании документов по OLE в обработчиках событий, юзеры жаловаться начнут.
Создай один сеанс для робота, тот пусть по журналу регистрации собирает события или придумай справочник регистрации событий, далее по расписанию, хоть каждую минуту выгружает нужные документы/справочники. |
|||
135
Aldnepr
11.04.16
✎
10:31
|
(133) Вот это дельный совет, без тыканья в какашки. Спасибо добрый человек!
Создал обработку "ПодключитьОЛЕ" только с одной переменной "ВводПароля",т.к. ИмяПользователя легко передать (имена есс-но одинаковые) перенес процедуру подключения из глобального в модуль обработки, в глобальном же только ПриНачалеРаботыСистемы()вызываю нужному юзверю эту обработку, где ему предлагается только ввести пароль и вуаля, все подключено и ничего не прячется)). |
|||
136
Mikeware
11.04.16
✎
10:33
|
(135) дык я об этом в (131) сказал :-)
|
|||
137
Aldnepr
11.04.16
✎
13:10
|
(134) Робот- наверное круто, но и сложновато для меня. Попробую топором пока поработать). У меня всего 10/12 подключений + 2/3сессии планируются по ОЛЕ. Плюс переносить 3-4 дока всего. Надеюсь что сильно не затормозит. По крайней мере без ОЛЕ все летает, только в конце месяца бывает притормаживает и то слегка.
|
|||
138
HawkEye
11.04.16
✎
13:13
|
(137) зачем вообще нужно практически олнлайн создание документа в другой базе?
|
|||
139
Aldnepr
11.04.16
✎
13:16
|
(138) Та оно то может и не нужно, просто в противном случае надо отслеживать все изменения, в т.ч. и задним числом. А в случае "он-лайн" планируется не только новые создавать, но и уже записанные находить по какому-нибудь ID и перезаписывать, в случае этих самых изменений
|
|||
140
HawkEye
11.04.16
✎
13:17
|
(139) т.е. оно не нужно, но ты будешь делать.... все ясно )
|
|||
141
Aldnepr
11.04.16
✎
13:21
|
(140)нужно/ненужно надо отбросить думаю. Главная задача- не пропустить какие то изменения. Вот (134) подсказывает создать журнал регистраций изменений или справочник- но я не совсем понимаю как туда записать эти изменения, особенно в справочник...
|
|||
142
Mikeware
11.04.16
✎
13:33
|
(141) Подними УРБД, и автоматом получишь эту регистрацию :-)
|
|||
143
HawkEye
11.04.16
✎
13:47
|
(141) журнал регистраций не подходит для сливания ВСЕХ действий...
проще при открытии документа/элемента - писать все значения его реквизитов в файл... при необходимости будешь сравнивать, что в файле, что в базе и быстрее и проще |
|||
144
Mikeware
11.04.16
✎
13:50
|
(143) жуть какая... кто тебя укусил?
|
|||
145
HawkEye
11.04.16
✎
13:54
|
(144) всяко лучше чем забивать ЖР или на каждый чих - писать по оле в другую базу...
|
|||
146
Mikeware
11.04.16
✎
13:57
|
(145) ну, это да.
можно, в принципе, писать только изменения. Программные только не отследить без дополнительных телодвижений. |
|||
147
Aldnepr
11.04.16
✎
14:00
|
(142) Есть такой вариант, подсказывали мне на другом форуме. И я так понимаю нужно мониторить только файл 1SUPDTS.DBF и оттуда "вытягивать" какой док изменили? При переводе на распределенку в доки и элементы справочников какой то реквизит прописывается на автомате, типа ID, или каким способом эти доки ищутся, сопоставляются?
|
|||
148
Mikeware
11.04.16
✎
14:01
|
(147) Нет, ид и тип измененного элемента пишется в апдейтс. а уж оттуда бери,изи объект и записывай хоть тетей олей, хоть кд, хоть карандашом...
|
|||
149
Aldnepr
11.04.16
✎
14:05
|
(148) попробую покурить уриб этот, может чего и выкурю. Надо сперва глянуть в каком формате в апдейтс этот записывается. остальные два файла не понадобятся я так понимаю?
|
|||
150
Aldnepr
11.04.16
✎
14:08
|
(148) т.е. простыми словами- понятно ли в ДБФнике, что делали с этим доком- просто изменили, пометили на удаление или сделали непроведенным например?
|
|||
151
Mikeware
11.04.16
✎
14:12
|
(150) простыми словами - если след этогообъекта есть в апдейтсе - то с этим объектом что-то делали. Либо изменяли, либо как минимум просто перезаписали
|
|||
152
Aldnepr
11.04.16
✎
14:17
|
(151) Эт я понял ). Мыслю как обработать этот объект. Наверное- сперва перезаписать заново в любом случае, а потом уже проверить и проставить статус- Если Док.ПометкаУдаления()=1 тогда БазаИсточник.Док.ПометкаУдаления()=1 . Верно?
|
|||
153
Mikeware
11.04.16
✎
14:19
|
(152) чиво?
|
|||
154
Aldnepr
11.04.16
✎
14:31
|
(153) Т.к. переносить собираюсь только доки, то и пишу применительно к докам.
1.Находим нужный док по меткам в апдейтсе. 2.Перезаписываем его в База2 с изменениями какие там были. 3.Проверяем статус дока (проведен/удален/снят с проводки)- делаем тоже самое в База2 |
|||
155
Mikeware
11.04.16
✎
14:35
|
(154) ну дык и
1)делаешь регистрацию толко доков нужного вида 2) читаешь апдейтс, по иду ищешь док. 3)пишешь его по оле, или отправляешь КД, или еще как. 4)ну и удаляешь (либо сказу, либо по квитанции) |
|||
156
Aldnepr
11.04.16
✎
14:40
|
(155) 4)ну и удаляешь (либо сказу, либо по квитанции)
Не совсем понял, но догадываюсь- апдейтс этот удалять? А "по квитанции" это если обратную выгрузку из подчиненной базы сделать, что бы главная поняла, что изменения на данный момент внесены и в следующий раз не отправляла то же самое? |
|||
157
Mikeware
11.04.16
✎
14:42
|
(156) 1.строчку из апдейтса удалять. с идом объекта (документа в данном случае)
2.да |
|||
158
HawkEye
11.04.16
✎
14:43
|
(154) после всего этого, у тебя в двух базах два одинаковых документа и зачем все эти пляски с бубнами?
|
|||
159
Aldnepr
11.04.16
✎
14:44
|
Ага, то-бишь, обратную выгрузку из базы-приемника так же делать обязательно, иначе Головная база не поймет записаны изменения или нет и будет слать одно и то же каждый раз?
|
|||
160
Aldnepr
11.04.16
✎
14:45
|
(158) в каких двух? тех что по урбд спарены?
|
|||
161
Mikeware
11.04.16
✎
14:48
|
(159) да.
Зато эта хрень сработает на уровне платформы при любом изменении объекта (перепроведении пр восстановлении последовательности, например) |
|||
162
HawkEye
11.04.16
✎
14:48
|
(160) да.
|
|||
163
Aldnepr
11.04.16
✎
14:55
|
(161) Да, это неоспоримый плюс этой хрени. Хоть над этим голову ломать не прийдется, кто чего поменял там. Единственно- надо все делать в четкой последовательности- Выгрузка из головной базы-перенос в БАЗА2- выгрузка из подчиненной в головную с заменой апдейтс. Если нарушить последовательность- то куку.
|
|||
164
Mikeware
11.04.16
✎
14:58
|
(163) всегда нужно понимать, что делаешь (что происходит "у нее унутре"©). тогда последовательность сама складывается...
|
|||
165
Aldnepr
11.04.16
✎
15:06
|
(164) Само собой, но бывают и на старуху... Вот например- есть у меня обработка одна (не моя-скачал) удаляет все что надо. Хотел удалить только помеченные на удаление доки, а в запаре удалил все за один день. Потом восстанавливал с бумаги(((. Я к тому, что в идеале конечно, чтобы даже самый тупой юзверь нажав на одну кнопочку,получил нужный результат. Но это уже сторониие проги надо задействовать наверное- скрипты или х.з. что еще?
|
|||
166
Aldnepr
12.04.16
✎
13:31
|
Покрутил вариант УРБД->ОЛЕ, в принципе алгоритм понятен. Здесь же на мисте нашел обработку, которую хороший человек выложил Книга знаний: Нетипичное использование компоненты УРБД в системе 1С:Предприятие 7.7 . Она позволяет вытянуть из 1SUPDTS.DBF в табло в текстовом варианте перечень измененных объектов в виде таких вот строк "Объект: Счет-фактура АА-0000769 (11.04.16)" реализовано так:
стр="{""O"",""0"",""0"","""+тип+""",""0"",""0"","""+объ+"""}"; о=ЗначениеИзСтрокиВнутр(стр); //документ Сообщить("Объект: "+о); Как бы эту инфу засунуть в удобоваримый формат, а? Например в ДБФник какой со столбцами ВидДока и НомерДока или еще как |
|||
167
Aldnepr
13.04.16
✎
09:42
|
(166) Апну, может кто поможет всё-таки, прописать данные в ДБФ-файл?
|
|||
168
Mikeware
13.04.16
✎
09:57
|
вопрс-то в чем?
|
|||
169
Aldnepr
13.04.16
✎
10:06
|
(168) в (166). Не могу разложить данные, которые вытягиваются из АПДЕЙТС в файл ДБФ, для их дальнейшей аналитики иэкспорту соотв. доков по ОЛЕ
|
|||
170
ДенисЧ
13.04.16
✎
10:07
|
(169) А зачем тебе использовать всякие левые форматы, если нормальный кошерно-халяльный 1с++:
|
|||
171
Aldnepr
13.04.16
✎
10:08
|
(168) вот полный код тогда, чтоб не "нагружать" вас лишними движениями
/////////////////////////////////////////////////////////////////////// Процедура Выполнить() dbf=СоздатьОбъект("XBASE"); ИмяФайла=КаталогИБ()+"1SUPDTS.DBF"; Если фс.СуществуетФайл(ИмяФайла)=0 Тогда Сообщить("Таблица 1SUPDTS.DBF не найдена. Возможно, не установлена компонента УРБД.", "!"); Возврат; КонецЕсли; dbf.ОткрытьФайл(ИмяФайла,,1); Если dbf.Открыта()=0 Тогда Сообщить("Таблица 1SUPDTS.DBF заблокирована. Запустите 1С в разделенном (не монопольном) режиме.", "!"); Возврат; КонецЕсли; Если dbf.Первая()=0 Тогда Сообщить("Файл 1SUPDTS.DBF пустой."); Возврат КонецЕсли; Пока 1=1 Цикл TYPEID=dbf.TYPEID; стр=dbf.OBJID; //Отделяем идентификатор базы (последние 3 символа) ИДБазы=Прав(стр,3); стр=Лев(стр, СтрДлина(стр)-3); стр=СокрЛП(стр); //Переводим в формат базы 1С OBJID=_StrToID(стр); тип=_StrToId(TYPEID); //Дополняем пробелами слева Пока СтрДлина(OBJID)<10 Цикл OBJID=" "+OBJID; КонецЦикла; //Дополняем идентификатором базы объ=""+OBJID+ИДБазы; стр="{""B"",""0"",""0"","""+тип+""",""0"",""0"","""+объ+"""}"; о=ЗначениеИзСтрокиВнутр(стр); //справочник Если ПустоеЗначение(о)=1 Тогда стр="{""O"",""0"",""0"","""+тип+""",""0"",""0"","""+объ+"""}"; о=ЗначениеИзСтрокиВнутр(стр); //документ КонецЕсли; //выводит ссылки на объекты (например, названия товаров) Сообщить("Объект: "+о); Если dbf.Следующая()=0 Тогда Прервать; КонецЕсли; КонецЦикла; //по записям DBF dbf.ЗакрытьФайл(); КонецПроцедуры |
|||
172
Mikeware
13.04.16
✎
10:14
|
(169) TypeId - это который тип, пятый параметр во внутреннем представлении. Objid - ид объекта, надо взять первые 6 символов, перевести из 36-ричной, и добавить последние три.
Первый параметр - показывает, документ это или справочник или еще что. O- документ, B-справочник, если память не изменяет |
|||
173
Aldnepr
13.04.16
✎
10:15
|
(170) С этим не общался даже)). Осилю ли я такое- это главный вопрос для меня. с ДБФ уже как сос воей рубашкой. Спасибо за наводку. Попробую по свободе вникнуть
|
|||
174
Aldnepr
13.04.16
✎
10:23
|
(172) Верно, человек, который составил этот (171) код так и сделал- тип=_StrToId(TYPEID); Но в итоге там у него выводится только сообщение в окно, я попробовал хотя бы в текстовый загнать вот этим- ЗначениеВФайл("111.txt",о,1); где
стр="{""O"",""0"",""0"","""+тип+""",""0"",""0"","""+объ+"""}"; о=ЗначениеИзСтрокиВнутр(стр);//документ но выводится такое - {"S","0","0","0","0","0",""}, а хотелось бы в ДБФ получить два/три столбца "тип","НомерДок", "датаДок" |
|||
175
Mikeware
13.04.16
✎
10:26
|
(174) чо за бред?
|
|||
176
Aldnepr
13.04.16
✎
10:35
|
(175) может и бред, не знаю как объяснить еще проще. Тогда так: есть АПДЕЙТС, нужно расшифровать оттуда данные и перенести их в ДБФ в том виде, в котором указал. Потом уже этот ДБФ анализировать сторонней обработкой. По крайней мере ДБФ можно и визуально просмотреть.
|
|||
177
Mikeware
13.04.16
✎
11:17
|
(176) как получить объект из тайпид и обжид - сказали. как из объекта получить данные - ну дык как всегда: объект.ДатаДок, объект.НомерДок...
|
|||
178
Aldnepr
13.04.16
✎
11:33
|
(172) //Objid - ид объекта, надо взять первые 6 символов, перевести из 36-ричной, и добавить последние три. //
Не совсем понял- ОБЖИД у доков такой "OJYET00" (7символов), у справочников-7XWT00 (6символов). Что за последние 3 символа, откуда брать? |
|||
179
Mikeware
13.04.16
✎
12:32
|
(178) Ид - всегда 9 символов. из них первые 6 (они в 36-ричной системе) - это порядковый номер(в ИБ создания), грубо говоря... а последние 3 символа - префикс ИБ от УРБД.
зы. есличо - пробел тоже символ |
|||
180
Aldnepr
15.04.16
✎
17:56
|
Во блин, засада какая-то. Хочу время поназначать докам и никак не устанавливается((. Что не так подскажите?
//============================= Перем Ч,М,С; Счет=СоздатьОбъект("Документ.Счет"); олеСчет=БазаИсточник.CreateObject("Документ.Счет"); Для н=1 по Кво Цикл ТВ=ТекущееВремя(); Ч = Число(Лев(ТВ,2)); М = Число(Сред(ТВ,4,2)); С= Число(Прав(ТВ,2)); Счет.Новый(); Счет.ДатаДок=ДатаОтчета; Счет.Фирма=ТОВ; Счет.УстановитьВремя(Ч,М,С); Счет.Записать(); олеСчет.Новый(); олеСЧЕТ.НомерДок=Счет.НомерДок; олеСЧЕТ.Фирма=БазаИсточник.Константа.БазФирма; олеСчет.ДатаДок=ДатаОтчета; олеСчет.УстановитьВремя(Ч,М,С); олеСчет.Записать(); С=С+10; н=н+1; КонецЦикла; |
|||
181
Aldnepr
15.04.16
✎
18:23
|
(180) На этот раз успел быстро грабли убрать
Счет.Записать(); Счет.УстановитьВремя(Ч,М,С); Счет.Записать(); |
|||
182
Aldnepr
20.04.16
✎
13:34
|
Теперь не могу найти док через ОЛЕ по реквизиту.(нужно сравнить доки в текущей базе и в БазаИсточник по реквизиту "олеид"- общий реквизит документов.
Сделал следующее- /////////////////////////// олеДок=БазаИсточник.CreateObject("Документ"); Если олеДок.ВыбратьПоЗначению(НачГода(ТекущаяДата()),ТекущаяДата(),"олеид",Док.олеид)=1 тогда олеСчет=олеДок.ТекущийДокумент(); ругается- неверное имя реквизита! Проверил, имя такое же как и указал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |