Имя: Пароль:
1C
 
1С + MySql + MS SQL
0 sr Stepa
 
01.09.10
14:46
Стоит задача создать базу данных 1С...
Есть база данных на MySQL откуда надо брать постоянно меняющиеся данные, при этом не внося туда никаких данных и обмен надо реализовать на автоматический режим. Вторая база на платформе 1C, скорее всего MS SQL. При этом надо создать справочник в MS SQL который будет брать половину из MySQL, вторая часть будет вносится вручную. Отчеты надо получать смешанным вариантом... Реально ли такая реализация задачи? Если прилинковать MySQL, то будет ли работать запрос в 1С и как примерно он будет выглядеть?
1 Андрюха
 
01.09.10
14:47
вполне выполнимо
2 ДенисЧ
 
01.09.10
14:48
Если сможешь прилинковать (я не помню, можно ли мыскль приэто), то работать будет.
3 sr Stepa
 
01.09.10
14:53
Линкуются вроде без проблем (тут нашел http://club.directum.ru/blog/post/Chastichnaja-integracija-Sozdanie-Linked-Server.aspx) Меня больше волнует как будут выглядеть справочники в 1С. К примеру есть в MySQL таблица код - id_own (char(40)), наименование - own (char(15))... и т.д.  Если задать в конфигураторе справочник, получит ли он значения внесенные в MySQL&
4 Лефмихалыч
 
01.09.10
15:00
(0) нахрена такие сложности? почему не написать обработку, которая через то же АДО будет перекидывать данные из MySQL в конфу?
5 Chuper_IT
 
01.09.10
15:02
(0) два запроса один к sql другой к mysql через ADO я так делал..
6 sr Stepa
 
01.09.10
15:06
Сложностей много. Имеем справочник Юр.лиц в MySQL, который правит сторонняя организация по своему усмотрению. В 1С надо создать справочник этих же юр.лиц но более расширенный, т.е. добавлять своих, но чтоб они не попадали в первую базу. Другие таблицы динамические, меняются также, из них надо получать статистические данные. Перекидывать придется каждую минуту, потому как данные поступают с интервалом от 1 минуты до 1 часа, при этом не отключая ни одного пользователя.
7 sr Stepa
 
01.09.10
15:10
т.е. один запрос в sql к Mysql, а второй запрос из 1С в sql?
8 Chuper_IT
 
01.09.10
15:11
(7) конечно. только в таком случае синхронизацию кури в 1С, и подумай на чьей стороне дубли контрагентов убивать будешь :) т.к. бухи даже в одной "папочке" троят контрагентов
9 Chuper_IT
 
01.09.10
15:14
(7) стой. оба запроса из 1С делай, так проще имхо.
10 sr Stepa
 
01.09.10
15:28
В смысле? Как оба из 1С?
11 sr Stepa
 
01.09.10
15:29
Грабли в том что на этот справочник должны привязаться данный из mysql...
12 Chuper_IT
 
01.09.10
15:29
прямыми запросами. через ADO
13 Chuper_IT
 
01.09.10
15:31
Соединение = CreateObject("ADODB.Connection");
   
Try
   Соединение.open("driver={MySQL ODBC 5.1 Driver}; server=localhost; uid=root; pwd=222; database=tc-db-main; port=3306; STMT=SET CHARACTER SET cp1251");
Except
   DoMessageBox("Отсутствует связь с базой!");
   return;
EndTry;
   
   //ловим список для рассылки
   ТекстЗапроса = "
   |select id, convert(description,char) as mail
   |from personal
   |where status = 'AVAILABLE' and TYPE = 'DEP'
   |and ID > 5 and NOT PARENT_ID = 0 ";
   
   ADODB = Соединение.Execute(ТекстЗапроса);
   //Сообщить(ТекстЗапроса);
   
   Пока ADODB.EOF()=0 Цикл
       ТЗПочта.НоваяСтрока();
       ТЗПочта.ID = ADODB.Fields("ID").Value;
       ТЗПочта.Почта = ADODB.Fields("MAIL").Value;
       ADODB.MoveNEXT();
   КонецЦикла;
   ADODB.Close();
   Соединение.Close();

хотябы так. запрос к базе mysql
14 sapphire
 
01.09.10
15:36
Ничего особенного
15 sr Stepa
 
01.09.10
15:36
К примеру со станции инмарсат с одного физика поступают данные в mysql каждый час, физиков более 1000, каждый отправляет данные во время, когда ему заблагорассудится. Надо допустим выбрать последнюю информацию поступившую от ряда физиков. Получается надо взять отбор по справочнику в 1С, и выбрать из mysql то что им принадлежит....
16 sapphire
 
01.09.10
15:36
(12) Не лучше.
17 sr Stepa
 
01.09.10
15:38
При этом сотрудник не должен сидеть и запускать обработку чтоб провести обмен данными
18 Chuper_IT
 
01.09.10
15:38
(15) мысли в слух? :)
19 sr Stepa
 
01.09.10
15:39
Ага. пытаюсь осмыслить этот глобализм.... %)
20 ДенисЧ
 
01.09.10
15:42
А если вьюшку создать?
21 sr Stepa
 
01.09.10
15:43
Хорошо, с запросами понятно, а как быть именно со справочником? Данные вносится будут напрямую в sql, а как справочник будет получать данные из mysql?
22 sr Stepa
 
01.09.10
15:43
Вьюшку чего?
23 el-gamberro
 
01.09.10
15:44
А зачем вьюшку?
24 el-gamberro
 
01.09.10
15:45
(17) ОбработкаОжидания("ОбменДанными",60)
25 sr Stepa
 
01.09.10
15:45
В mysql у меня 107 таблиц, в sql будет пара десятков, связка нужна на все. Не говоря уж про математику которая должна идти в 1С на основании таблиц из обоих баз...
26 Chuper_IT
 
01.09.10
15:47
(25) начал с двух справочников, закончил с полной синхронизацией двух баз. ппц :)
27 el-gamberro
 
01.09.10
15:47
(25) и что дальше?
28 ado
 
01.09.10
15:49
Позвать программиста еще не предлагали?
29 sr Stepa
 
01.09.10
15:56
Не, синхронизация не нужна. Нужно из одной базы дополнять справочники другой базы, и в другой базе обрабатывать математику из двух баз.
30 sr Stepa
 
01.09.10
15:57
Программиста нет... и не будет.)) 1С знаю, а вот по sql знаний можно сказать ноль..
31 sr Stepa
 
01.09.10
15:59
Обработка ожидания() - а если в этот момент кто-то работает со справочником? Или открыл его и чай пошел пить? В теории понимаю что реализовать можно, хочу путем наименьшего сопротивления.
32 Chuper_IT
 
01.09.10
16:01
(31) что есть наименьшее сопротивление? mssql учить надо, mysql учить надо. а ты волнуешься кто куда кофе пошел пить :)
сходи тоже попей.
33 el-gamberro
 
01.09.10
16:02
Вы там кем работаете? Админом со знанием 1с?
34 sr Stepa
 
01.09.10
16:06
Я скоро водку пойду пить от таких задач.:) Учить, учу потому и спрашиваю что и как.:)
35 sr Stepa
 
01.09.10
16:08
На 1С программирую, но вот со скулом не доводилось так плотно работать. Год назад реализовали базу с привязкой к аксесу, но меня воротит от этого. База за неполный год весит 1 гиг и производительности никакой.
36 FN
 
01.09.10
16:11
Что такого необходимо так оперативно обрабатывать в 1С?
Может этот функционал должен делаться на Мускуле+веб (или чего там наворочено).
А в 1С только периодически сливаться для отчетности?

вообще задача не раскрыта
37 ДенисЧ
 
01.09.10
16:18
Не... Я бы точно вьюх на справочники насоздавал бы и работал с ними, если прям так ужи приспичило...
38 el-gamberro
 
01.09.10
16:19
Вообще если одбем в одну сторону правильнее все сделать на триггерах. Вот тока я не знаю есть в майскуле тригерра.
39 ado
 
01.09.10
16:19
(36) Он не знает ни мускуля, ни веба. По-этому хочет всё в 1С затащить.
40 ado
 
01.09.10
16:19
(38) Начиная с 5-го вроде есть.
41 sr Stepa
 
01.09.10
16:20
В 1С затащить не хочу, просто пока альтернативы не вижу...
42 sr Stepa
 
01.09.10
16:21
Грубо говоря надо графический интерфейс к mysql с функцией ведения своей базы на его основе...
Плюс отчеты, статистика, и расчеты на основе двух баз.
43 sr Stepa
 
01.09.10
16:26
Попробую привести похожий пример: Есть организации, за ними закреплены машины, перевезенный груз, лимит на моторесурс это в mysql вносит одна организация, выдача путевых листов, проверка груза, проверка моторесурса, сравнительный отчет это все в чем то другом... просто на мой взгляд проще организовать удобный интерфейс в 1С чтоб оператор вносил данные в базу и на основе двух баз  анализировал все стекающие к нему данные.
44 ado
 
01.09.10
16:27
Все-таки фирма 1С страшное зло сотворила с российской ИТ индустрией ...
45 sr Stepa
 
01.09.10
16:28
К mysql доступ только для чтения, работать в нем нельзя... Можно только выдернуть данные...
46 ado
 
01.09.10
16:29
(45) Ну, как читать из MySQL тебе в (13) показали. Что еще нужно то?
47 sr Stepa
 
01.09.10
16:36
Как читать с этим вроде разобрался, не могу понять принцип создания справочника. К примеру создаем справочник лиц, поля дублируем один в один с mysql, создаем объект типа справочник, делаем из него запрос в mysql, получаем оттуда список лиц который пристыкуется к справочнику sql созданному пользователем в 1С.. Правильно?
48 ado
 
01.09.10
16:38
(47) >> создаем объект типа справочник, делаем из него запрос в mysql, получаем оттуда список лиц который пристыкуется к справочнику sql созданному пользователем в 1С

Ты точно 1С знаешь?
49 ado
 
01.09.10
16:39
Создаем обработку, которая будет тянуть данные из MySQL и заполнять твой справочник.
50 sr Stepa
 
01.09.10
16:42
Так вот о чем и речь... Я об этом еще в первых сообщениях написал...Справочник импортировать нельзя, потому как он может измениться в любую минуту. Задача номер один стоит - получить справочник юридических лиц из одной базы в другую, при этом дополнять справочник можно только в sql, в mysql вносить изменения нельзя. Реально ли организовать эту задачу подручными средствами?
51 ado
 
01.09.10
16:42
К базе MySQL совсем никакого доступа на запись и изменение структуры? Записи в ту базу только добавляются, или еще и обновляются активно?
52 sr Stepa
 
01.09.10
16:44
Да, именно так. Записи в базу вносятся круглосуточно, плюс правятся данные за прошлые периоды, она постоянно получается в движении.
53 ado
 
01.09.10
16:47
(50) Можно, конечно, извращаться с запросами к двум базам, но, ИМХО, это не рационально. Лучше в одну из баз сливать все данные. Загрузку можно делать по таймеру, или при выполнении какого-либо действия.
Самая проблема в том, что-бы в каждом запросе не тянуть все данные, а только измененные с последнего запроса.
54 ado
 
01.09.10
16:48
(52) А как насчет возможности правки этой базы?
55 sr Stepa
 
01.09.10
16:50
Сливать все в одну базу можно только если в sql, потянет он?
56 sr Stepa
 
01.09.10
16:50
Править тоже нельзя, правят ее либо в Москве, либо в уполномоченных центрах, где делают заливку в нее.
57 ado
 
01.09.10
16:54
(55) Он то потянет, но вот в свете (56) проблема другая рисуется. Ты не сможешь отслеживать синхронизированные записи, и придется таскать всю базу каждый раз. А это ой ...
58 Terve-R-
 
01.09.10
16:56
(53) тогда решить задачу от обратного - при изменении данных в MySQL этой же процедурой те же изменения будут отправляться в MSSQL, ну или во что-то промежуточное.
59 ado
 
01.09.10
17:03
(58) Вот только проблема в том, что у него нет доступа к тем процедурам, которые изменяют данные в MySQL
60 Terve-R-
 
01.09.10
17:11
Такие вещи надо заранее предусматривать или исправлять существующие объекты ИБ где необходимо, а то выглядит, как будто надо подключиться к чужой базе...
61 sr Stepa
 
01.09.10
17:14
да уж... Хорошо, а если пойти путем импорта справочников, а к динамическим данным делать запросы? Если в обработке 1С прописать условия синхронизации, то в теории должно сработать...
62 ado
 
01.09.10
17:15
(60) Похоже, оно не выглядит, а так и есть.
63 sr Stepa
 
01.09.10
17:16
Так и есть, к чужой базе. Первую базу ведет одна организация. Наша организация должна реализовать свою базу, которая на основе наших данных будет перепроверять первую базу. Потому и получается что справочники одинаковые, но исправляются другой организацией, а привязка нашей базы основана на их справочниках.
64 ado
 
01.09.10
17:16
(61) Тааак, а справочники у тебя что, не динамические данные? Они что, не меняются?
65 sr Stepa
 
01.09.10
17:18
Таблицы со справочниками меняются не часто. А вот таблицы с данным меняются постоянно.
66 el-gamberro
 
01.09.10
17:18
(63) А как коллизии собираешься решать?
Неужели к майскулю не дадут доступ для настройки триггера?
67 el-gamberro
 
01.09.10
17:19
Представь что перегрузил справочник, в свой базе 1с кто-то поправил элемент справочника, а потом его поправили в майскуле и изменения в 1с перезатрутся.
68 sr Stepa
 
01.09.10
17:20
Не дадут, доступ жестко оговорен.
69 sr Stepa
 
01.09.10
17:21
А если запретить редактирование справочника в 1С и посадить специально обученного человека на внесение новых данных?
70 ado
 
01.09.10
17:38
(67) Те элементы справочника, которые загрузили из мускула править в 1С не должны, читай внимательно ветку. Можно признак какой-нибудь сделать, загружен или введен, и, соответственно, разрешать/запрещать редактирование.
71 el-gamberro
 
01.09.10
17:44
72 sr Stepa
 
01.09.10
17:49
А если пойти другим путем.... Загружаем справочник из мускула, разрешаем его правку. При следующей загрузке просто проверяем каждую запись на соответствие и если есть изменения то не добавляем его а создаем отдельный список несоответствий. Все выявленные несоответствия заносим ручками в свой справочник... Правда в справочнике 16000 записей... %)
73 Terve-R-
 
01.09.10
17:51
(72) это уже за гранью моего сознания %) ))
74 nejtron
 
01.09.10
18:10
Сделай по принципу классификатора банков и банковских счетов