Имя: Пароль:
1C
1C 7.7
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 тогда
олеСчет=олеДок.ТекущийДокумент();

ругается- неверное имя реквизита! Проверил, имя такое же как и указал.
Закон Брукера: Даже маленькая практика стоит большой теории.