|
Как быстро сравнить справочник номенклатур | ☑ | ||
---|---|---|---|---|
0
Hillsnake
11.07.19
✎
11:57
|
2 базы ERP, в одной больше номенклатур чем в другой.
нужно выяснить на какие номенклатуры отличаются и догрузить их . Загрузка есть, это не сложно. кончено здорово было бы сделать 2х сторонний обмен КД3. но это разовая акция. как лучше сделать. 1 выгрузить номенклатуры в xml и сравнить 2 xml. очень долго. 2. развернуть SQl и там сравнить. 3.. еще варианты. |
|||
1
shuhard
11.07.19
✎
11:59
|
(0) в xls + ADODB + обработка сравнения
|
|||
2
Hillsnake
11.07.19
✎
12:00
|
(1) xls ??
да он там умрет xml файл то формируется в 60 ГБ. номенклатур многА! |
|||
3
_Дайвер_
11.07.19
✎
12:03
|
ручками
|
|||
4
shuhard
11.07.19
✎
12:04
|
(2) а что ещё форум должен угадать ?
|
|||
5
Hillsnake
11.07.19
✎
12:06
|
(4) если было бы мало, я бы не спрашивал.
(3) смишно . |
|||
6
shuhard
11.07.19
✎
12:08
|
(5) сиквел
|
|||
7
Hillsnake
11.07.19
✎
12:11
|
(6) да вот склоняюсь к этому варианту.
главное чтоб ADODB быстро отработал в выгрузку. строкаПодключения = "driver={SQL Server};server="+ стрПараметры.серверИмя + ";uid='"+ стрПараметры.серверПользователь + "';pwd='"+ стрПараметры.серверПароль+ "';database="+ стрПараметры.серверБаза + ";trusted_connection=yes"; АДОДБКоннект = Новый COMОбъект("ADODB.Connection"); Попытка АДОДБКоннект.ConnectionTimeout = 0; АДОДБКоннект.Open(строкаПодключения); Возврат АДОДБКоннект; Исключение Предупреждение("Невозможно установить соединение с SQL-сервером " + стрПараметры.серверИмя + " " + ОписаниеОшибки()); АДОДБКоннект.Close(); Возврат Ложь; КонецПопытки; думаю что то вроде этого. |
|||
8
_Дайвер_
11.07.19
✎
12:13
|
Эта задача делается просто, пишешь обработку с COM соединением, выясняешь общие параметры(например код), пишешь запрос
"ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Код = &Код" Проверяешь по условию если есть, идешь дальше, если нет то так же через COM создаешь новую номенклатуру "Соединение.Справочники.Номенклатура.СоздатьЭлемент();", попутно проверяя это группа или нет, и заполняешь параметры, у меня таккая обработка есть, писал как-то для похожей ситуации, правда базы разнородные были |
|||
9
Hillsnake
11.07.19
✎
12:15
|
(8) COM соединением? я думаю это будет делаться месяц.
В курсе, что Комы не поддерживаются 64 платформой. |
|||
10
sitex
naïve
11.07.19
✎
12:21
|
(9) О каком количестве идет речь?
|
|||
11
_Дайвер_
11.07.19
✎
12:22
|
(9) В курсе что поддерживается 64 платформой
|
|||
12
sitex
naïve
11.07.19
✎
12:23
|
(9) также базы SQL на одном сервере находятся ?
|
|||
13
shuhard
11.07.19
✎
12:24
|
(9)[В курсе, что Комы не поддерживаются 64 платформой.]
тебя обманули |
|||
14
Hillsnake
11.07.19
✎
12:26
|
(10) 800 тыс.
(13) хмм возможно . но Если сравнивать Ком с Адодб. явно будет быстрее даже на том же xls. |
|||
15
Hillsnake
11.07.19
✎
12:27
|
(12) нет.
|
|||
16
PiotrLoginov
11.07.19
✎
12:31
|
(14) >>Если сравнивать Ком с Адодб. явно будет быстрее даже на том же xls.
ерунда |
|||
17
shuhard
11.07.19
✎
12:32
|
(16) ты бредишь
|
|||
18
Garykom
гуру
11.07.19
✎
12:34
|
Быстрее всего будет выгрузить два файла в CSV, загрузить их в Access и там сравнить запросом.
|
|||
19
Seriy_Volk
11.07.19
✎
12:36
|
(0) была подобная задача, справочник номенклатура около миллиона записей. Через запрос MS SQL синхронизация заняла около одной минуты, так что я за п.2
запрос в духе insert ... from select ... where not EXISTS (select...) |
|||
20
arsik
гуру
11.07.19
✎
12:37
|
(0) А сравнивать номенклатуру по каким полям будешь?
|
|||
21
1Сергей
11.07.19
✎
12:37
|
800 тыс в 60 гб????
Кучеряво живёте :) |
|||
22
Garykom
гуру
11.07.19
✎
12:39
|
(18)+ Вместо MS Access можно использовать любой SQL сервер с которым лучше знакомы.
|
|||
23
Hillsnake
11.07.19
✎
12:42
|
(18) CSV 60 ГБ?? он просто вывалится.
(16) http://catalog.mista.ru/public/64883/ не ерунда, вот провели эксперимент. |
|||
24
Garykom
гуру
11.07.19
✎
12:43
|
(23) Куда вывалится? HDD/SSD у тебя вывалится из системника да?
Построчно пиши. В файл, текстовый. С расширением CSV. По формату. |
|||
25
Hillsnake
11.07.19
✎
12:44
|
(21) это по минимуму характеристик. да когда то, загрузили все запчасти с дуру, от жадности.
как начинаешь говорить, что там 80 процентов ненада. сразу вопли нам все ннннада!! |
|||
26
Hillsnake
11.07.19
✎
12:45
|
(24) с ошибкой по памяти. (20) характеристики и еще парочка. по минимуму.
|
|||
27
Garykom
гуру
11.07.19
✎
12:46
|
(24)+
Вот это тебе позволит хоть несколько террабайт забить на диске, если файловая система может. |
|||
28
Garykom
гуру
11.07.19
✎
12:46
|
(26) Тупица. Извини сорвался.
|
|||
29
Garykom
гуру
11.07.19
✎
12:47
|
Но реально вводит в недоумение когда человек с такой полоской и "типа программист" показывает такие проблемы в базовых знаниях.
ПОСТРОЧНАЯ запись в текстовый файл, сразу на диск. Какая еще к черту память? |
|||
30
arsik
гуру
11.07.19
✎
12:49
|
(29) Долго будет построчно. Наверно лучше порциями по метров 10 хотя бы.
|
|||
31
Garykom
гуру
11.07.19
✎
12:50
|
(30) А вот это уже оптимизация, причем размер порции можно на лету подбирать динамически засекая время.
|
|||
32
Провинциальный 1сник
11.07.19
✎
12:51
|
Я бы через КОМ сделал, но не поэлементно дергать, а запросом с примитивными типами вытащил в таблицу значений и её сериализацией перебросил через КОМ. И далее дело техники, сверка справочника с таблицей.
|
|||
33
Garykom
гуру
11.07.19
✎
12:52
|
(32) Как думаешь результат запроса где хранится? Учитывая чего то на 60 гигов?
|
|||
34
Hillsnake
11.07.19
✎
12:53
|
(30) вот именно.
(29) ты сам то такие эксперименты производил Чудише. записать то запишет, но не факт что потом он откроется. |
|||
35
Garykom
гуру
11.07.19
✎
12:53
|
(34) Рука лицо.
Ну делай файлы по полгига или по 100 метров и потом из по очереди и скорми в SQL. |
|||
36
Bigbro
11.07.19
✎
12:53
|
(32) звучит как правильный вариант.
|
|||
37
Garykom
гуру
11.07.19
✎
12:54
|
(36) Ыыыы
|
|||
38
Провинциальный 1сник
11.07.19
✎
12:55
|
(33) Справочник вряд ли больше сотни мег. Всё в память спокойно влезет.
|
|||
39
Garykom
гуру
11.07.19
✎
12:55
|
(37)+ Потому что если на сервере >64Gb RAM то может и взлететь ))
|
|||
40
Hillsnake
11.07.19
✎
12:56
|
(35) слава богу дошло.
не все так просто. думаю буду переводить в SQL. по кусочкам. |
|||
41
Garykom
гуру
11.07.19
✎
12:57
|
(38) Возьми длины строк кода и наименования (учитывая что каждый символ 2 байта) и умножь на 800 тысяч.
Если кроме кода и наименования еще чего то надо то добавь в формулу расчета сколько надо памяти. Ну и плюсом служебные в двойном запасе. |
|||
42
Провинциальный 1сник
11.07.19
✎
12:59
|
(41) Ну тогда ой. 800 тысяч записей это не для сериализации, точно) Тогда фрагментами.
|
|||
43
sitex
naïve
11.07.19
✎
13:07
|
(40) В SQL запросом сравнить не предлагать ?
|
|||
44
arsik
гуру
11.07.19
✎
13:10
|
(43) А кстати можно на одном SQL сервере сравнить 2 таблицы из разных баз одним запросом?
|
|||
45
sitex
naïve
11.07.19
✎
13:12
|
(44) Можно
|
|||
46
Garykom
гуру
11.07.19
✎
13:13
|
(44) Зависит от sql сервера но обычно можно
|
|||
47
sitex
naïve
11.07.19
✎
13:14
|
Выгрузить первые 100 кодов номенклатуры
SELECT TOP 100 [_Code] FROM [_BASE_1].[dbo].[_Reference32] WHERE [_Code] NOT IN (SELECT [_Code] FROM [_BASE_2].[dbo].[_Reference32]); |
|||
48
Garykom
гуру
11.07.19
✎
13:15
|
(44) Только сначала надо выяснить в какой табличке хранится на сервере номенклатура в этих двух базах и какие нужны поля.
Ну и довольно часто 1Сников напрямую к sql серверу боевому не подпускают, чтобы не ипортили. |
|||
49
sitex
naïve
11.07.19
✎
13:15
|
(47) Если нет во второй таблице
|
|||
50
DGorgoN
11.07.19
✎
13:16
|
Про поля дополнительные не забудьте и про критерии сравнения.
|
|||
51
Hillsnake
11.07.19
✎
13:34
|
(43) сначала нужно выгрузить, потом сравнить.
|
|||
52
hhhh
11.07.19
✎
13:35
|
(41) 800тыс, наименование гдето 100 байт, получается 80 мб умножить на 2 = 160. (38) прав, в принципе.
|
|||
53
Hillsnake
11.07.19
✎
13:37
|
(48) это противоречит Лицензионному соглашению.
(50) в чтоку. (52) посчитай еще поле описание, и характеристики. и 2 кода. * на 10 получится. |
|||
54
sitex
naïve
11.07.19
✎
13:40
|
Создать sql скрипт который выгрузит что есть в первой таблице и отсутствуют во второй по кодам и загрузить куда что в какую базу не хватает если ---> Загрузка есть, это не сложно.
|
|||
55
Hillsnake
11.07.19
✎
13:42
|
(54) да думаю, так и поступлю.
|
|||
56
Garykom
гуру
11.07.19
✎
13:44
|
(55) Реквизит добавь в 1С для номенклатуры и sql скриптом сразу установи для дублей как надо
|
|||
57
Garykom
гуру
11.07.19
✎
13:45
|
(56)+ Только все эксперименты не на боевой базе 1С а на копии на том же sql сервере
|
|||
58
Hillsnake
11.07.19
✎
13:47
|
(57) это и так понятно.
(56) а вот реквизит низя. увы. |
|||
59
hhhh
11.07.19
✎
13:48
|
(53) в запросе вы не будете выбирать поле Описание. Максимум Код и Наименование - это где-то 160 мб. Мизер.
|
|||
60
Garykom
гуру
11.07.19
✎
13:49
|
(58) Пиши в любой существующий текстовый, числовой или булевый, но надо чтобы в основной таблице для простоты а не доп.реквизиты в связанной.
|
|||
61
Hillsnake
11.07.19
✎
13:51
|
(59) про нормирую и буду Увы. до 800, или сколько то там знаков. + Характеристики + Ед изм.
много там. у некоторых есть спецификация в фото, но слава богу их мало. |
|||
62
hhhh
11.07.19
✎
13:55
|
(61) как вы фото будете сравнивать? по распознаванию отдельных фигур на рисунке?
|
|||
63
sitex
naïve
11.07.19
✎
13:56
|
(62) Это уже надо ИИ внедрять. Отдельная тема.
|
|||
64
Hillsnake
11.07.19
✎
13:57
|
(62) нет по индентичности. хотя нет наверное не буду сравнивать.
нужно что то типа, если 2 одинаковых элемента у одного есть фото у другого нет. (значит нужно добавить. ) |
|||
65
sitex
naïve
11.07.19
✎
14:19
|
(64) Можно конечно считать в SQL контрольную сумму строки таблицы, убрать несопоставимые данные. Лично не пробовал, но как вариант сранения в двух базах
|
|||
66
HeKrendel
11.07.19
✎
14:25
|
Ждем следующую тему, догрузил номенклатуру, как вернуть обратно ;-)
|
|||
67
Serg_1960
11.07.19
✎
14:28
|
(офф) Читал ветку и думал: "По каким полям (минимальному набору) идентификация идентичности будет?" Имхо, этот вопрос ещё никто толком не копал. А он крайне важен.
|
|||
68
Hillsnake
11.07.19
✎
14:30
|
(67) несомненно .
(66) смешно . |
|||
69
HeKrendel
11.07.19
✎
14:36
|
(68) Отвечу на твою задачу, как БА- ответ на тип сравнения находится в должностной инструкции к системе по заведению справочника номенклатуры, если она актуальна
Если не актуальна, сбор технологии заведения справочника займет от 3-х дней до 2 недель, и после этого можно будет ставить задачу программеру, написание что обработки, что КД, 16 часов с тестированием |
|||
70
HeKrendel
11.07.19
✎
14:40
|
Ну это мое оценочное суждение по масштабам бедствия
|
|||
71
Hillsnake
11.07.19
✎
15:17
|
(69) 2 недели + 16 часов. ??
охренеть, я уже почти все сделал. |
|||
72
HeKrendel
11.07.19
✎
15:19
|
(71) Это же отлично
|
|||
73
HeKrendel
11.07.19
✎
15:24
|
отпишись когда из "почти все сделал" будет стоять в продакшене ;-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |