|
Гуру 1С, помогите определиться: Com или Ole соединение? | ☑ | ||
---|---|---|---|---|
0
bard666
31.08.13
✎
15:26
|
Итак, задача такова. Есть две базы на 8.2 (8.2.17): УТ и БП. Данные перегружаются из УТ в БП. После этой операции нужно провести сверку остатков и оборотов по складам. Нужно эту самую сверку автоматизировать. Идея такая: обработка, которая запускается, например в БП, подключается к УТ, формирует таблицу по движениям и сравнивает с оборотами 41 счета. Теперь вопрос: как лучше подключаться (по ole или через com или ещё как-то) - чтобы была оптимальная скорость получения и обработки данных и возможность получить необходимые для сравнения данные из таблиц партионного регистра? Обе базы файл-серверные. Подскажите, какой вариант больше подойдет для задачи и желательно объяснить разницу и почему лучше)
|
|||
1
shuhard
31.08.13
✎
15:31
|
(0) ком
без комментариев |
|||
2
Rie
31.08.13
✎
15:32
|
(0) А почему бы не выгрузить остатки, к примеру, в текстовый файл - а затем этот текстовый файл в другой базе загрузить?
|
|||
3
bard666
31.08.13
✎
15:34
|
(2) Этот вариант на случай, если не получится соединяться напрямую
|
|||
4
Pashkaa
31.08.13
✎
15:34
|
(3) интересно а что может этому помешать?
|
|||
5
Rie
31.08.13
✎
15:35
|
(3) А почему нужно именно прямое соединение?
|
|||
6
Pashkaa
31.08.13
✎
15:36
|
||||
7
SnarkHunter
31.08.13
✎
15:37
|
Потому что оно лучше кривого.
|
|||
8
Кип Калм
31.08.13
✎
15:37
|
(4) Например, использование не Виндоуз на серверах 1с.
|
|||
9
bard666
31.08.13
✎
15:39
|
(4) Например, не получится. Не работал с этим, не писал таких обработок
(5) Через текстовый или ексель дольше: выгрузить, загрузить, сравнить.. |
|||
10
SnarkHunter
31.08.13
✎
15:39
|
(8)В условии: "Обе базы файл-серверные". Стало быть, серверов 1С нет.
|
|||
11
hhhh
31.08.13
✎
15:43
|
(9) у нас через com написана такая обработка. Три базы. Работает быстро.
|
|||
12
Pashkaa
31.08.13
✎
15:43
|
https://dl.dropboxusercontent.com/u/12484308/СверкаНоменклатуры_УТ_БП82.epf
на и не мучайся. Лишнее выкинешь из обработки. Запускай из под УТ |
|||
13
bard666
31.08.13
✎
15:44
|
(11) Спасибо, какие базы? Какие функции выполняет обработка, что значит быстро? Замечали за какое время полный цикл проходит, примерно, какая операционка?
|
|||
14
mehfk
31.08.13
✎
15:45
|
>>как лучше подключаться (по ole или через com или ещё как-то
) пример на первые два варианта приведите. |
|||
15
bard666
31.08.13
✎
15:45
|
(12) Спасибо, посмотрю
|
|||
16
bard666
31.08.13
✎
15:46
|
(14) не понял вопрос
|
|||
17
DEVIce
31.08.13
✎
15:52
|
(1) А теперь вспоминаем что есть OLE и что с COM у них общего. :)
|
|||
18
bard666
31.08.13
✎
15:57
|
(17) что?
|
|||
19
DEVIce
31.08.13
✎
16:01
|
(18) Что, что? Ты почитай. Двумя словами. COM - это некая модель, вполне себе абстрактная, а OLE частная реализация этой модели. Т.е. OLE - это и есть COM. :)
|
|||
20
DEVIce
31.08.13
✎
16:03
|
Можно например почитать вот это: wiki:Microsoft_Component_Object_Model
|
|||
21
bard666
31.08.13
✎
16:05
|
(19) благодарю за разъяснение
|
|||
22
Pashkaa
31.08.13
✎
16:05
|
В данном случае человеку достаточно COM соединения для вытягивания остатков, нет смысла использовать возможность OLE для работы с интерфейсными объектами базы источника.
|
|||
23
DEVIce
31.08.13
✎
16:06
|
(9) "Через текстовый или ексель дольше: выгрузить, загрузить, сравнить.." Отлаживать зато проще. Сразу видно в каком месте ошибка, особенно если данные представляются сильно по-разному в источнике и получателе. Не зря ведь 1С придумала КД, которая таки двухфазная.
|
|||
24
DEVIce
31.08.13
✎
16:08
|
(22) Я могу ошибаться, но таки есть мнение, что метод Новый COMОбъект, при подключении к другой 1С использует OLE. :)
|
|||
25
Pashkaa
31.08.13
✎
16:09
|
(23) да не просто дольше а еще этот самый excel нужно ставить. Зачем спрашивается костыли городить.
Если уж и использовать файл, то xml однозначно. Получил остатки, выгрузил в таблицу, сохранил таблицу в xml и усё. |
|||
26
DEVIce
31.08.13
✎
16:09
|
Ну и как бы COM/OLE не самый быстрый в мире интерфейс. Зачастую через текстовик выходит быстрее.
|
|||
27
DEVIce
31.08.13
✎
16:10
|
(25) А зачем Ёксель? У меня его вообще не было еще 2 недели назад. CSV или XML - наше все.
|
|||
28
bard666
31.08.13
✎
16:18
|
всем спасибо за мнения и комментарии, буду пробовать, экспериментировать с обработкой.
|
|||
29
Rie
31.08.13
✎
16:26
|
(25) А зачем xml, если есть plain text? Структура-то таблицы - проста. Причём это - _таблица_, с фиксированным количеством колонок и т.д.
|
|||
30
bard666
31.08.13
✎
16:29
|
(29) Новые слова)
|
|||
31
DEVIce
31.08.13
✎
16:37
|
(29) Все-таки xml бывает полезен более чем просто текст с разделителями. Удобнее структурированные объекты переносить. Например документы, они есть сами вообще, у них есть шапка и есть ТЧ, можно конечно сплошным текстом, но xml просто удобнее.
|
|||
32
Rie
31.08.13
✎
16:39
|
(31) Не спорю, что xml полезен. Но в данной задаче - перенос одной таблицы - plain text проще формировать и проще разбирать.
|
|||
33
DEVIce
31.08.13
✎
16:41
|
(32) Это да, соглашусь. Остатки по номенклатуре - это плоская таблица. Нафиг все эти OLE и XML. Плоский текст с разделителем - проще некуда.
|
|||
34
DEVIce
31.08.13
✎
16:43
|
(32) Единственное, что перенос надо делать в два этапа. Сначала номенклатура, потом по ней остатки. Но с другой стороны, это даже лучше. Сначала номенклатуру перенесли и проверили, а потом уже тащи остатки.
|
|||
35
bard666
31.08.13
✎
16:46
|
(34) тут не перенос, а выгрузка движений для бухгалтерских отчетов и операций. Сверка идет по движениям и остаткам по складам, если находятся расхождения, по регистраторам.
|
|||
36
Rie
31.08.13
✎
16:48
|
(35) Это существенная деталь - что сверка при обнаружении расхождений сразу пытается выковырять, откуда они взялись.
Тогда - COM. |
|||
37
DEVIce
31.08.13
✎
16:48
|
(35) Да какая разница? Что такое таблица, как она выглядит в физическом виде и текстовом представляешь? Если нет, то открой Ексель и познай дзен. :)
|
|||
38
DEVIce
31.08.13
✎
16:50
|
(36) Я делал подобное через текстовик. Одна база выгружает затребованные данные, другая подгружает и анализирует. Лично мне так было проще. Если предполагается, что работать с этим будет рядовой юзер, то чем меньше телодвижений, тем лучше, т.е. таки COM/OLE.
|
|||
39
bard666
31.08.13
✎
16:55
|
(38) не рядовой юзер, но цель - максимально автоматизировать и ускорить. Одна обработка, минимум операций и посредников, максимальная скорость сверки и выдачи результатов.
|
|||
40
Rie
31.08.13
✎
16:59
|
(38) Я тоже предпочитаю текстовые форматы - когда с ними я сам работаю. Но когда будет работать кто-то, тем более - бухгалтер и т.п.
|
|||
41
DEVIce
31.08.13
✎
17:01
|
(39) Ну блин тебе кучу вариантов набросали - сам решай.
|
|||
42
bard666
31.08.13
✎
17:06
|
(41) я так и сказал. Спасибо за советы и опыт сверок. Буду экспериментировать.
|
|||
43
Serginio1
31.08.13
✎
19:49
|
(38) Вместо текстовых файлов проще использовать XML через ФобрикXDTO. Например данные выгружаются по текущей фабрике.
Выгружается схема.И этой схеме загружаются в другую или наоборот. Можно создать свой пакет который использовать в обеих конфигурациях. Можно автоматически сгенерить v8: XSD схема программно с нуля. |
|||
44
Rie
31.08.13
✎
20:04
|
(43) Не всегда это проще.
1С ведь совсем не зря поддерживает несколько различных способов интеграции. |
|||
45
Serginio1
31.08.13
✎
20:18
|
(44) Например? Через фабрику ты пишешь и читаешь обращаясь к объекту через точку. С текстом нужно оперировать позицией в строке. Для простых случаев проще использовать ДБФ. В тексте нужно экранировать разделители строк. Итд. С XML проще, но его минус излишний размер, который больше влияет на передачу. Хотя с моей точки зрения проще использовать специально заточенную для сериализации БД. Но это уже отклонения, в которых нет не только в 1С.
|
|||
46
Rie
31.08.13
✎
20:24
|
(45) Ну вот зачем мне фабрика XDTO, если я прекрасно могу без неё обойтись?
И зачем мне с текстом оперировать позицией в строке? DBF - тоже замечательно. Но если у меня простая фиксированная структура, которую я читаю/пишу строго последовательно, то зачем DBF (который, к тому же, не всегда удобно смотреть)? Для каждой задачи есть свой наиболее удобный инструмент. Который вовсе не обязательно будет наиболее удобным для другой задачи. Хотя, конечно, воробья и из пушки пристрелить можно. |
|||
47
Rie
31.08.13
✎
20:29
|
||||
48
Serginio1
31.08.13
✎
21:54
|
Дбф как раз для фиксированных структур, текст обычно нужен для неструктурированной информации. А самым подходящим будет тот, на который нужно затратить минимум усилий, если конечно не стоит задача по скорости передачи данных.
Кстати есть еще и http://en.wikipedia.org/wiki/Protocol_Buffers http://ravendb.net/docs/intro/ravendb-in-a-nutshell Данные в RavenDB хранится без схемы как документы JSON Для сериализации предпочтиетльне такая организация . Каждый тип хранится в своей таблице. Поля имеющие составнын типы хранятся в виде структуры тип (номер таблицы) и номер записи в таблице. Ссылки на известный тип просто запись в таблице, для значений переменной длины в блоб таблицах. Единственно, что нужно организовывать в памяти ввиде Хэш таблиц слежение за добавленными объектами. Это использование памяти. |
|||
49
Rie
01.09.13
✎
06:16
|
"А самым подходящим будет тот, на который нужно затратить минимум усилий, если конечно не стоит задача по скорости передачи данных" - вот именно.
Тогда почему Вы столь упорно настаиваете, что нет задач, при которых такой самой подходящей структурой является plain text? Ведь не всё же ваяется на века. Бывают и задачи, когда нужно быстро сделать сейчас и закрыть тему. XDTO - замечательная штука. Но... Надо как минимум описать структуру пакета (кстати, где она описывается? не в конфигурации ли? ой, а у меня там сейчас пользователи работают...). А ТипСтроки = ФабрикаXDTO.Тип("http://www.qqq.qq/", "СтрокаТабл"); СтрокаТабл = ФабрикаXDTO.Создать(ТипСтроки); СтрокаТабл.Ид = Строка(СтрокаТЧ.Номенклатура.УникальныйИдентификатор()); СтрокаТабл.Наименование = СтрокаТЧ.Номенклатура.Наименование; номенклатура.Остаток = СтрокаТЧ.Остаток; смотрится лишь чуть лучше, чем ВывестиПоле(Текст,Закавычить(СтрокаТЧ.Номенклатура.УникальныйИдентификатор())); ВывестиПоле(Текст,Закавычить(СтрокаТЧ.Номенклатура.Наименование)); ВывестиПоле(Текст,Строка(СтрокаТЧ.Остаток)); |
|||
50
Rie
01.09.13
✎
06:24
|
+(49) То же самое относится и в DBF (который иногда ничем не лучше CSV). Можно и в JSON сериализовать вместо XML - очень удобный формат. И т.д. и т.п.
Я ведь не отрицаю, что все эти технологии полезны. Более того - сам ими с удовольствием пользуюсь. Мне лишь непонятна столь резкая неприязнь к plain text. А ещё я с удовольствием хожу пешком - на небольших расстояниях это удобнее, чем автомобиль. |
|||
51
АйЭм
01.09.13
✎
07:26
|
(19) Садись, два.
Пока сидишь - подумай, почему в OLE можно открыть форму приложения, а в COM низзя. ))))))))))))) |
|||
52
DEVIce
01.09.13
✎
08:39
|
(51) Садись кол. Я написал, что OLE - это частная реализация COM и не более того. :)
|
|||
53
Serginio1
01.09.13
✎
13:15
|
(50) Та я как раз пользуюсь всеми форматами. По поводу описания пакета, то его можно описать хоть где и не только в текущей конфигурации и необязательно в 1С. Есть схема XDTO которую можно создать и программно v8: XSD схема программно с нуля.
и просто подгрузить СоздатьФабрикуXDTO(ИмяФайла); Говоря проще, не означает универсально. При том, что данный подход в этой ветке не проходил. А чем пользоваться в итоге каждый выбирает сам. В CSV роблемы с разделителями строк, которые нужно экранировать. в ДБФ поля имеют одинаковую длину. Но с ним плохо работать например со строками которые могут иметь длину от единицы до мегабайтов. Все зависит от ситуации. А загрузкой выгрузкой текстов я занимаюсь очень давно вплоть до генерации загрузок выгрузок как в текстовом и прочих форматов. Но начинающим проще все же начинать с ФабрикаXDTO. А там из приведенного тобой примера не хватает чтения и здесь Объекты XDTO выглядят лучше. Ну это уже на вкус и цвет. |
|||
54
Rie
01.09.13
✎
13:17
|
(53) Экранировать символ - это проблема?
|
|||
55
Serginio1
02.09.13
✎
10:58
|
(54) Нет не проблема. Но это дополнительные движения и об этом нужно помнить работая с текстом. И соответственно при чтении нужно об этом помнить.
Либо поступать как при бинарной сериализации указывая длину строки, но это уже получается не текстовый файл с которым 1С не умеет работать. Еще раз пусть каждый выбирает, что ему лучше. В большинстве случаев проще использовать ФабрикаXDTO. |
|||
56
bard666
16.09.13
✎
16:48
|
Спасибо, обработину своял.
плюсы: можно запустить и заняться другими задачами, потом проанализировать и исправить ошибки. минусы: порой быстрее самому через ексель сравнить. |
|||
57
zladenuw
16.09.13
✎
17:00
|
(0) запуск фонового задание. которое вернет результат в другую базу или все ок или фиаско
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |