Имя: Пароль:
1C
1С v8
Минусы прямых запросов к 1С8
0 zavyzka
 
22.10.18
16:20
У клиентов периодически возникает потребность забирать данные из 1С в какую-то другую внешнюю систему (OLAP и т. д.). Рзаработчики внешних систем всегда предлагают забирать на прямую из ms sql. Я обычно говорю, что это плохое решение и лучше подключаться к 1С, а не к ms sql. Но исчерпывающих доводов, почему плохо забирать из sql предоставить не могу. Просьба поделиться мыслями на эту тему.
1 Волшебник
 
22.10.18
16:21
Потому что это нарушает лицензионное соглашение 1С.
Кроме того, они не смогут расшифровать структуру, если вдруг 1С решит сменить структуру хранения данных в очередном релизе.
2 Вафель
 
22.10.18
16:22
лучше вебсервис написать
3 Fragster
 
гуру
22.10.18
16:24
потому что ты не контролируешь, что они будут делать в базе. правильно дать им odata доступ под пользователем со строго ограниченными правами
4 Fragster
 
гуру
22.10.18
16:25
или регламентировать формат данных и написать веб сервис
5 zavyzka
 
22.10.18
16:25
(1) про первый пункт понятно. А про второй, я вроде бы слышал, что обновлении/реструктаризации 1С может получиться так что название и структура регистра в 1С осталась прежней, а имя таблицы в sql поменялось. Или я что то путаю?
6 Волшебник
 
22.10.18
16:26
(5) Всё возможно.
7 vitkhv
 
22.10.18
16:27
(1) В 1С есть ПолучитьСтруктуруХранения БД. Если сменят структуру функция выдаст эту структуру.
8 zavyzka
 
22.10.18
16:27
(2) (4) ну да это правильно, но это трудозатраты разработчика 1С, в отличии от обращения на пряму.
9 vitkhv
 
22.10.18
16:28
(5) VIEW решают проблему смены имен таблиц
10 Волшебник
 
22.10.18
16:29
(9) 1С может снести все вьюшки, которые ей не нужны.
11 vitkhv
 
22.10.18
16:30
(10) Кто мешает пересоздать после реструтуризации?
12 Волшебник
 
22.10.18
16:31
(11) Вот нахер нужен весь этот геморрой?
13 vitkhv
 
22.10.18
16:32
(12) да вот тот же OLAP
14 vitkhv
 
22.10.18
16:33
(12) разузлование у меня через CTE и обмены между БД.
15 gantonio
 
22.10.18
16:34
не отнимай у коллег хлеб, и они не будут делать тоже самое .. пусть тр-ся.
16 Волшебник
 
22.10.18
16:34
(13) Всё это очень рискованно. В любой момент всё сломается и придётся всё переделывать практически с нуля.
17 vitkhv
 
22.10.18
16:35
(16) не верю в шаманство, все работает годами
18 Волшебник
 
22.10.18
16:38
(17) Всё сломается в самый неподходящий момент, когда ты уволишься.
19 МихаилМ
 
22.10.18
16:39
риски переименования таблиц 1с8 минимальны, с 8.2.13 в 1с8
есть таблица сопоставления полей и таблиц метаданным.

но изредка 1с меняет имена таблиц (вместо reg - rg например).
20 vitkhv
 
22.10.18
16:44
(18) Да специалист немного другой уже нужен, а не просто 1С ник.
(19)
Приятней работать так
SELECT Ссылка FROM [Справочник.Номенклатура]
чем
SELECT _IDRRref FROM _Reference172

И если работает несколько разработчиков и обновления накатываются через объединение конф, всегда есть риск получить другое имя таблицы или поля на продакшен базе.
21 Вафель
 
22.10.18
16:47
(3) можно дать доступ только на чтение
22 Вафель
 
22.10.18
16:48
(18) Это как раз нормальный момент. хуже всего когда ты в отпуск собрался и у тебя уже билет и надо бежать, а тут все сломалось и нужно задержаться и чинить
23 Cyberhawk
 
22.10.18
16:53
(22) Ну это уже ССЗБ. Ибо зачем, зная что есть вероятность "задержаться и чинить" организовывать отпуск так, чтоб "надо бежать"?
24 Вафель
 
22.10.18
16:56
(23) пусть будет не отпуск. пусть у тебе просто нужно сегодня пораньше уйти
25 Cool_Profi
 
22.10.18
16:56
(23) Сделать хорошо могут немногие. Сломать - может любой.
Я в 2 часа ночи скуль-базу поднимал после того, как трактор кабель перерубил...
26 Cyberhawk
 
22.10.18
16:58
(24) Не ощущаю разницы. Как может быть "нужно пораньше уйти", если всегда есть вероятность, что "нужно задержаться и чинить"? Это друг с другом не вяжется.
27 Cyberhawk
 
22.10.18
16:58
(25) Хз о чем ты
28 Cool_Profi
 
22.10.18
16:58
(27) А ты вообще з о чём-то?
29 Cyberhawk
 
22.10.18
17:00
(28) См. (26)
30 Вафель
 
22.10.18
17:02
Всегда есть вероятность и иногда нужно пораньше уйти.
ну и к томуже есть законы Мерфи
31 GANR
 
22.10.18
17:04
(0) Первая же выгрузка/загрузка базы через ДТ переименует все таблицы в MS SQL базе. Это значит единственный приемлемый способ снять/загрузить архив - бэкап. На тестовый стенд необходимо только через бэкап переносить.
32 Вафель
 
22.10.18
17:05
(31) дт не рекомендуемый способ делать архив
33 Cyberhawk
 
22.10.18
17:05
(30) Если ты знаешь, что вероятность есть всегда, то ставить себя в условие "нужно пораньше уйти" - тупо
34 unregistered
 
22.10.18
17:06
(0) Предложи своим заказчикам самостоятельно неси ответственность за любые сбои, которые могут возникнуть в том случае, если 1С изменит структуру хранения данных, а так же если эта структура будет меняться при обновлениях конфигурации с реструктуризацией таблиц БД.
А так же за любые последствия (явные и неявные), связанные с нарушением лицензионного соглашения 1С, касающегося прямого доступа к данным средствами СУБД в обход механизмов платформы.

Обязательно включи эти два пункта в договор или допсоглашение к договору, или оформи документально любым другим способом.

Если заказчик готов брать на себя такие риски - ради бога.
Однако в 99% случаев заказчик спускается на землю, вытирает растёкшиеся слюни, закатывает обратно раскатанную губу и переводит разговор в более конструктивное русло, например (2) - написания веб-сервисов.
35 Вафель
 
22.10.18
17:07
(33) не все в жизни зависит от нас. бвает и форс мажор
36 GANR
 
22.10.18
17:07
Самое поганое - читать разработанные ими мозгодробильные запросы в виде (20)
37 Cyberhawk
 
22.10.18
17:08
(35) Что-то ты повторяешь как (25)
38 Cyberhawk
 
22.10.18
17:08
Вафель наведи мышкой на ссылку на второй пост в посте (34) - сообщение не входит в экран. Надо чтоб оно влево выдвигалось, а не вправо в таких случаях. Когда починишь? ))
39 Вафель
 
22.10.18
17:11
(38) покажи скриншот
40 unregistered
 
22.10.18
17:11
(32) > дт не рекомендуемый способ делать архив

Да. Но и не запрещенный.
Многие таким образом страхуются - иметь архив созданный средствами СУБД и архив средствами 1С.
В случае глобального сбоя может возникнуть ситуация, когда единственным работоспособным архивом окажется именно 1С-овский DT-шник.
41 Cyberhawk
 
22.10.18
17:12
42 Cyberhawk
 
22.10.18
17:13
(40) Я называю этот *.dt-файл "профилактическим бекапом" )
43 Tonik992
 
22.10.18
17:15
(40) А почему не рекомендуемый?
44 Tonik992
 
22.10.18
17:19
(43) нашел уже тему, спс
45 Вафель
 
22.10.18
17:20
(41) у меня все норм
https://i.imgur.com/bCSnOY3.png
)))
46 unregistered
 
22.10.18
17:21
(43) Именно потому, что см. (31): "Первая же выгрузка/загрузка базы через ДТ переименует все таблицы в MS SQL базе."

Выгрузка в DT - это не точная копия базы (не один в один). Это прочитали данные в таблицах СУБД и записали в другом виде (внутренний формат 1С - DT). По дороге может что-то поменяться.
Вплоть до того, что бывали случаи, когда база загруженная из DT была неработоспособна (или вообще создание базы из DT было невозможно), а при этом база продолжала себе работать на СУБД и из архивов, сделанных средствами СУБД.
47 Cyberhawk
 
22.10.18
17:25
(45) Ну, была бы ссылка на пост ближе к краю, оно бы не влезло
48 Вафель
 
22.10.18
17:26
(47) скрипт опен-сорс можешь допилить
49 Cyberhawk
 
22.10.18
17:27
(48) Не волоку в этом вообще
50 Вафель
 
22.10.18
17:28
я react.mista пользуюсь, поэтому скрипт врядли уже буду дописывать
51 vitkhv
 
22.10.18
17:32
(36) Да это жесть. Поэтому только VIEW
52 Tonik992
 
22.10.18
17:33
(46) Не встречался с таким, но буду знать. Спасибо
53 vitkhv
 
22.10.18
17:38
(31) Да пофиг это переименование. Просто вьюхи перегенирирую.
Я все равно не пишу так:
SELECT _IDRRref FROM _Reference172
а пишу через вьюхи, вот так
SELECT Ссылка FROM [Справочник.Номенклатура]

я смотрю тут даже народ и не знает, что такое view и продолжает напирать на переименование.
54 Вафель
 
22.10.18
17:39
(53) но вьюху то нужно не забыть перегенерить
55 vitkhv
 
22.10.18
17:40
(54) ну если ты из DT решил базу загрузить, то я думаю не забудешь.
56 Cyberhawk
 
22.10.18
17:41
(50) О пля, а там-то все кошерно: https://www.dropbox.com/s/k2zriojsc0i7iwc/Screenshot%202018-10-22%2017.39.42.png?dl=0
Но нет быстрого перехода к списку своих тем и к последнему сообщению.
57 zavyzka
 
22.10.18
17:41
Всё равно про DT аргумент хороший.

Мне больше нравиться вариант когда к базе подключаются по COM, по тому что тут со строны 1С-ника минимальные трудозатраты, но я так понимаю, что тот же OLAP не сможет такое сделать, хотя например у QlikView есть свой коннектер.
58 Cyberhawk
 
22.10.18
17:41
(55) Конечно же забудешь. Должно быть автоматизированно все.
59 Cool_Profi
 
22.10.18
17:42
(57) А кто олапу запретит подключиться?
60 vitkhv
 
22.10.18
17:42
(57) я за свою жизнь ни разу из DT в продакшен не грузил.
61 vitkhv
 
22.10.18
17:43
(58) ну кто мешает? Поставь регламентное задание, каждую ночь перегенируй вьюхи.
62 zavyzka
 
22.10.18
17:43
(59) я просто не в теме, но человек который занимется кубом сказал, что это невозможно.
63 vitkhv
 
22.10.18
17:46
(59) Вон Power BI GUID не понимает, так что для него надо их в текстовый вид переводить, в той же вьюхе
64 Cyberhawk
 
22.10.18
17:50
(61) Так вьюхи-то нужны сразу после завершения обновления
65 vitkhv
 
22.10.18
17:51
(64) ну если ты только эту таблицу мучаешь, на которую вьюха смотрит.
66 vitkhv
 
22.10.18
17:53
(64) Я вон даже экспериментировал с прикручиванием Excel морды к 1С через MDS. Даже сделал, но зарубили задачу.
67 vitkhv
 
22.10.18
17:57
(64) Colum Store индексы на 1С таблицы делал, с получением adaptive join.
68 Сияющий в темноте
 
22.10.18
18:42
Чего так бояться переименования таблиц,когда 1с и метаданные переименовывает,например,последнее 10.3.48.1 обновление для ут очень много чего меняеи,и даже если вы кошерно лезли через 1с,то все равно все переписывать
69 unregistered
 
22.10.18
19:13
Любые подобные решения хороши, пока их автор и специалист отвечающий за поддержку работоспособности решений - это одно и то же лицо и это лицо является наёмным работником предприятия, где эти решения применяются.

В противном случае это перестаёт быть надёжным механизмом. Ибо зависит от многих нестабильных переменных факторов никак не подчинаяющихся автору.

(53) Никто не говорит, что оно неработоспособно или плохо (если закрыть глаза и пренебречь тонкостями лицензионного соглашения).
Просто есть нюансы, которые надо знать перед тем, как решиться на использование прямых запросов.
И тут речь не об 1С, а о любом программном продукте, чьи недокументированные или запрещенные вендором возможности ты используешь.

PS Очень мало существует реальных задач, где действительно необходимы прямые запросы и совершенно никак нельзя обойтись другими способами, как например веб-сервисы (куда более надёжными и стабильными).
70 palsergeich
 
22.10.18
19:23
В теме не указана одна маленькая но крайне существенная вещь.
Любое использование не общепринятого функционала увеличивает стоимость поддержки, причем существенно.
Взять на пример тот же Инталев, который такими вещами злоупотребляет, и посмотреть количество внедрений хотя бы то тем же отзывам о внедрениях https://www.intalev.ru/products/km/clients/customer_reviews/ и можно увидеть дно - за 2 года 5 проектов.
Сам я с ним не работал в боевом применении, только поковырял немного, а вот коллеги работали и плюются.
Прелесть 1с в том, что если конфигурацию писали не марсиане, по после смены исполнителей можно относительно быстро найти людей которые и дальше смогут работать с этим продуктом
71 palsergeich
 
22.10.18
19:24
Конечно, есть места где прямые запросы жизнено необходимы, например в таких случаях Секционирование регистра накопления но пихать их везде - не стоит
72 DrZombi
 
гуру
22.10.18
20:13
(0) Через SQL быстрее, да пережить изменение структуры можно :)

Мона использовать в SQL представления, главное енто дело обновлять :)
https://www.sql.ru/docs/sql/u_sql/ch20.shtml
73 DrZombi
 
гуру
22.10.18
20:14
+ Элементы справочников в другой БД ненужны, нужны только конкретные данные: Наименование, Суммы, галочки :)
75 DrZombi
 
гуру
22.10.18
20:16
+ Дата, т.е. простые типы :)
76 dmpl
 
22.10.18
20:27
(53) И сколько там переключений раскладки получается?
77 vde69
 
22.10.18
21:06
самый главный агрумент : грузить из SQL нафига когда есть штатные механизмы 1с?

То есть пусть ОНИ пусть придумывают аргументы, а ты их всегда сможешь посылать типа "у меня будут блокировки, 1с не сможет гарантировать чистое чтение не штатными средствами, безопасность страдает, не дам прясмой доступ, боюсь, что все дропните и т.д."
78 rsv
 
22.10.18
21:17
(0) так что предложить разоабочикаи внешних систем дабы они штатно забирали данные из 1с?
79 rsv
 
22.10.18
21:18
Веб сервис на стороне 1С ...подсаживаетесь на вебсервер и простыни xml soap.
80 VitShvets
 
22.10.18
21:21
Имхо, прямые запросы хорошая штука, когда точно понимаешь зачем это нужно и каковы последствия. Мы используем для OLAP, из за скорости - разница получения сырых данных перед процессингом огромная. Плюс используем секционирование на некоторых таблицах, CDC и компрессию таблиц/индексов. Да, есть минус, после выкладывания на боевую систему, требуется дополнительные действия навроде пересоздания view или пере-подключения таблицы к CDC, но, цель оправдывает средства.

НО! Я бы не стал рекомендовать такой подход, когда внедренцы приходящие. За этим зоопарком нужно, мягко говоря, присматривать.

(79) Если объемы данных позволяют, можно с помощью ADO выкладывать данные в интеграционные таблицы средствами 1С.
81 rsv
 
22.10.18
21:24
Com ? А разве разработчикам внешних систем интересно копаться в прикладном описании com?методы тама 1сные и прочее

Им подавай простые вьюхи и примитивные типы строка число дата как в (80) т.к это самый быстрый способ и понятныйа
82 zavyzka
 
22.10.18
23:27
(81) разработчикам внешних систем как раз и не предлагается копаться. 1С-ник за минуту делает какой нибудь запрос по регистру продаж с нужными полями и отдает запрос внешнему разработчику. Ну я когда интегрировался с QlikView мы так и делали, а с OLAP так не получается...
83 dmpl
 
23.10.18
07:06
(82) Это просто отсталая технология. А может просто внедренцы не умеют в OLAP, вот и вешают лапшу...
84 Dotoshin
 
23.10.18
08:08
(18) +100500
(17) Не работает это годами. У нас на предприятии, еще до меня, кто-то сделал OLAP как раз на прямых запросах. После очередного обновления платформы все сломалось. Было очень печально...
85 Aleksey
 
23.10.18
08:12
По поводу смены имени таблицы

Сложнее обстоят дела, когда расширение модифицирует уже существующую структуру данных. Если расширение добавляет собственный реквизит к справочнику прикладного решения, то для этого справочника создаётся отдельная таблица с новой структурой (с дополнительной колонкой для нового реквизита). Будем называть её расширенная таблица. В неё переносятся данные из старой таблицы справочника. В дальнейшем все обращения к этому справочнику будут переадресовываться к расширенной таблице.
(с) https://wonderland.v8.1c.ru/blog/rasshirenie-dannykh/

Т.е. каждый раз когда мы решим добавить реквизит через расширение 1С создает новую таблицу. Так что я бы не сказал бы что риск смены имени минимальный
86 Cyberhawk
 
23.10.18
08:34
(85) "каждый раз когда мы решим добавить реквизит через расширение 1С создает новую таблицу" // Не каждый, а первый
87 vitkhv
 
23.10.18
08:52
(85) Ну и в чем здесь проблема? Пересоздать VIEW?
88 vitkhv
 
23.10.18
08:54
(84) Прямые запросы разные бывают - если напрямую было сделано, тогда да, проблема, если через прокладку в виде вьюхи, то никаких проблем.
89 Aleksey
 
23.10.18
09:00
(87) Проблема есть и очень большая.
Все работает ничего никто не менял, и тут раз всё сломалось? Как же так, никто ничего не обновлял вчера работало ... начинаешь выяснять 2 дня бегаешь в мыле в поисках виновных и в конечном итоги выясниться что бухгалтер подключил обработку которую дал ей банк для выгрузки заявок по заплатанному проекту. И пойти догадайся, что выгрузка ведомости на зарплату поломает тебе справочник контрагентов.

Хотя согласен, всегда можно сказать -  тю, разве это проблема?
90 ptiz
 
23.10.18
09:00
(0) "Но исчерпывающих доводов, почему плохо забирать из sql предоставить не могу." - если нет вопросов с безопасностью (сольют всю базу), почему бы и не дать доступ + табличку со структурой - пусть сами тр..ся. А потом для профилактики загрузить базу из DT.
91 Aleksey
 
23.10.18
09:02
И да загрузка базы из dt не ломает структуру. У меня куча копий на скуле и во всех имена таблиц одинаковые. Хотя я всё делаю исключительно через загрузку /выгрузки из dt
92 vitkhv
 
23.10.18
09:14
(89) Ну если у вас бухгалтер самолично устанавливает обработку, у вас проблема с правами.
93 vitkhv
 
23.10.18
09:16
(89)+бухгалтеру давать доступ к внешним обработкам это моветон, это дело программиста. Тем более если обработка встраивамая которая ломает структуру метаданных, т.е. бух. имеет доступ к конфигуратору, это вообще жесть. я такое не допускаю в принципе.
94 END
 
23.10.18
09:17
(82) Расскажите вашим олапщикам про https://habr.com/post/330618/ SSIS и напиши им веб сервис. Пусть осваивают новые технологии :) Мы у себя сделали так.
95 Cyberhawk
 
23.10.18
09:17
(92) Наверное он про расширение, что после его подключения оно добавляет новые реквизиты, то 1С реструктуризацию (в фоне) делает с переносом данных в новую таблицу.
Конечно в этом случае придется дополнительно следить за актуальностью вьюшки после любой манипуляции с расширениями.
Что он имел в виду под "обработкой" непонятно.
96 vitkhv
 
23.10.18
09:19
(94) SSIS да хорошая вещь.
97 vitkhv
 
23.10.18
09:20
(95) Так или иначе, если это делает бухгалтер - это немыслимо.
98 Cyberhawk
 
23.10.18
09:21
(97) Если в организации уровень ИТ-потребностей таков, что там где-то используются вьюшки, тогда немыслимо )
99 END
 
23.10.18
09:22
(96) И не говори. Правда пришлось сломать ментальное сопротивление олапщиков которые то же сначала хотели "SQL запросы прямые".
100 dmpl
 
23.10.18
09:22
(87) И? Это разве не проблема при изменении структуры хранения? Оно делается автоматом, без затрат времени ИТ специалиста?
101 vitkhv
 
23.10.18
09:25
(100) Да, автоматом по ночам.
102 vitkhv
 
23.10.18
09:29
(100) Из моей обработки, по созданию VIEW.

        
    ТекстПредставления="
        |DROP VIEW  IF EXISTS "+ИмяПредставления+"
        |go
        |
        |CREATE VIEW "+ИмяПредставления+"
        | AS
        |SELECT ";
Для Каждого КолонкиБД ИЗ  СтрокаБД.Поля Цикл
..............
КонецЦикла
103 Aleksey
 
23.10.18
09:32
(93) Ну хорошо бухгалтер принес обработку - "расширение".
Я знаю единственный способ добавить расширение - это через предприятие. Через конфигуратор у меня не получается добавить расширение. Научите.
104 Aleksey
 
23.10.18
09:33
(95) обработка в виде расширения
105 vitkhv
 
23.10.18
09:33
(100) Единственное для перечеслений я создаю отдельную таблицу и функцию dbo.ЗНАЧЕНИЕ. И в тексте запроса можно писать так:

WHERE Номенклатура.СтавкаНДС = dbo.ЗНАЧЕНИЕ('Перечисление.СтавкиНДС.НДС18')
106 dmpl
 
23.10.18
09:41
(102) И эту обработку написать быстрее, чем сервис?
107 vitkhv
 
23.10.18
09:42
(106) Почему нет?
108 Cyberhawk
 
23.10.18
09:43
(103) "Через конфигуратор у меня не получается добавить расширение. Научите" // Там неочевидное приходится совершать - добавить новое расширение, а потом загрузить его конфигурацию из файла
109 vitkhv
 
23.10.18
09:43
(106) По крайней мере я напишу ее точно быстрее чем сервис.
110 dmpl
 
23.10.18
09:44
(109) Сейчас-то да, а в первый раз?
111 vitkhv
 
23.10.18
09:44
(104) Я все расширения через конфигуратор добавляю, в чем проблема?
112 vitkhv
 
23.10.18
09:45
(110) В первый раз я свой парсер запросов написал. ))))
113 Cyberhawk
 
23.10.18
09:46
(111) Не создать, а подключить уже созданный файл *.cfe
114 vitkhv
 
23.10.18
09:46
(110) ТК в 2000 сервере нельзя было инсертить виев я про них забыл.
115 vitkhv
 
23.10.18
09:48
(113) через конфигуратор я расширения CFE подключаю. В чем проблема? Те же инструметы разработчика.
116 vitkhv
 
23.10.18
09:53
(113) Я честно говоря даже незнаю как их через предприятие подключать.
117 ADirks
 
23.10.18
09:54
(106) Думаю что быстрее. Более того, написать такую обработку надо всего один раз, дальше оно само. И руками её запускать не нужно. Делается механизм, отслеживающий изменения конфигурации, и запускающий генерацию всего что нужно. Т.е. один раз сделали, и забыли навсегда.
118 gantonio
 
23.10.18
10:02
вот где 1с , а гда олап ? Знаете, что в обработке данных для всяких статистических задач, как бы считается , что 60-80 процентов времени уходит на подготовку данных. Т.е. модель ищется серди мусора, данные чистятся ,находятся нужные.
А вы собираетесь реквизитик добавить , да и вообще сделать какую то проекцию в модель о которой вы ничего не понимаете. да с вами просто никто не хочет общаться на тему высоких материй.
119 Сияющий в темноте
 
23.10.18
10:30
Кстати,когда в какой то таблице в имя поля добавляется удалить,а новые поля не создаются,то таблица в Sql никак не меняется,и никто не узнает,что данных там уже нет.
Если анализ данных требует с ними выполнять множество преобразований,то все равно это будет делаться в отдельной базе,так что со стороны 1с можно написать план обмена,чтобы новую базу заполнять данными,причем тогда,когда это можно,так как изменение данных в процессе их анализа ни к чему хорошему не приводит.
120 Aleksey
 
23.10.18
10:39
(115) Можно создать новый, но не добавить существующий. Вот в этом проблема

А из режима предприятия есть возможность добавить существующий без танцев с бубнами
121 dk
 
23.10.18
11:09
чото вы тут все загоняетесь
vitkhv прав - создание вьюх решает и безопасность и скорость и веб сервисов не надо тьму писать
у нас в 77 тоже вьюхи генерятся - конфу обновили - запустили перегенерацию вьюх и все
122 Cyberhawk
 
23.10.18
11:12
(121) За вьюхами следить надо на уровне изменений в источнике данных (талицах СУБД), а веб-сервис на 1С - только за изменениями на уровне метаданных конфигурации (включая расширения).
У первого частотность возникновения _всегда_ выше, чем у второго, поэтому очевидно, что и следить за реализацией по второму пути придется меньше, чем по первому.
123 dk
 
23.10.18
11:14
что там следить то - поставь на автомат и забудь
124 Cyberhawk
 
23.10.18
11:21
(123) Как предлагаешь этому автомату определять момент, когда уже пора обновить вьюшку?
125 ADirks
 
23.10.18
11:25
(123) не знаю как в восьмёрке это сделать, но уверен, что можно, если подумать.
в семёрке просто: при старте смотрим дату 1cv7.md, сравниваем с константой, если различаются - обновляем.
126 ADirks
 
23.10.18
11:29
Кроме того, вьюхи можно делать чуть сложнее, чем синонимичные. Можно написать некий запрос, собирающий данные из нескольких табличек, с какими-то преобразованиями, и всё что угодно. Пишешь такую вьюшку, и отдаешь её в стороннюю систему - и им проще, и тебе спокойнее.
127 Cyberhawk
 
23.10.18
11:30
(126) "и тебе спокойнее" // Ошибаешься. Это явно не спокойнее, чем веб-/хттп-сервис 1С.
128 ADirks
 
23.10.18
11:39
(127) и в чём принципиальная разница?
в обоих случаях отдаётся только та информация, которая нужна
129 Cyberhawk
 
23.10.18
11:40
(128) См. (122)
130 ADirks
 
23.10.18
11:44
(129) см (126)

подчёркиваю: у нас вьюхи руками никто не обновляет

не надо за этим следить
131 Cyberhawk
 
23.10.18
11:45
(130) См. (124)
132 vitkhv
 
23.10.18
13:20
(123) Хорошая идея
(131) по мотивам (123) при генерации вьюх сохраняем в отдельную таблицу:
SELECT  
      MAX([Modified])
      
  FROM [dbo].[Config]

потом роботом сравниваем опять с MAX(Modified) если больше сохраненной перегенирируем вьюхи.

Ну или тригер на конфиг повешать, но лучше не надо. не люблю тригеры.
133 dmpl
 
23.10.18
13:23
А теперь представим, что 1С переименовала то поле, которое использует OLAP. Например, разбила его на 2. Или наоборот пару полей на один ключ аналитики повесило. И? Усё пропало? Во вьюхе больше нет такого поля. Переписывать ответную часть?
134 APXi
 
23.10.18
13:25
(0) Пускай делают, только права на чтение дать и предупредить что структура может меняться при обновлении.
135 Cool_Profi
 
23.10.18
13:27
(133) У тебя же есть уже генератор вьюх.
136 vitkhv
 
23.10.18
13:32
(120) Не знал. Бухгалтеру такую возможность точно надо забанить, не его это дело.
137 vitkhv
 
23.10.18
13:35
(133) проблема может возникнуть если 1С вдруг решит например из просто ссылочного поля сделать составное, тогда да, тогда придется переделывать. Но опять же, это не так уж сильно напрягает.
138 ADirks
 
23.10.18
13:35
(133) или ответную часть, или вьюху - что-то переписать в любом случае придётся. Лучше вьюху.

(135) не, генератор генерит только вьюхи-синонимы. Для отдачи вовне лучше запилить специальную вьюху, и при изменениях в метаданных модифицировать именно её. Руками. В принципе, это ничем не отличается от веб-сервиса, чуть другие технические моменты.
139 Cyberhawk
 
23.10.18
13:42
(132)
1. На какое событие вешать этого робота-анализатора?
2. Точно без изменения [dbo].[Config] не бывает изменения остальных таблиц (с данными)?
140 vitkhv
 
23.10.18
13:43
(126) А еще такую вьюху, к нескольким таблицам, можно материлизовать, тогда если выборки с отборами, вообще все летать будет.
Да и вообще можно вьюху материализовывать с нужными тебе доп индексами, 1С в запросах к своим таблицам на которую смотрит материализованная вьюха, будет использовать индексы этой вьюхи.
141 Cyberhawk
 
23.10.18
13:45
(138) "В принципе, это ничем не отличается от веб-сервиса" // Конечно же отличается: в случае изменения метаданных конфигурации ты _так и так_ эти изменения применяешь скорее всего в конфигураторе. И сразу же легко средствами конфигуратора находишь, что изменения затрагивают веб-/хттп-сервис.
А вот чтобы изменения в таблицах СУБД выявить, конфигуратором уже не обойдешься.
142 vitkhv
 
23.10.18
13:46
(139) Точно. В этой таблице храниться вся конфа.
Робот из 1С, срабатывающий каждые 5 минут. Так пойдет?
143 vitkhv
 
23.10.18
13:49
(141) Ну это скорее уже мелкие придирки.
Можно и до веб сервисов докопаться, если захотеть.
144 Cyberhawk
 
23.10.18
13:54
(142) Вхолостую 99% времени дергать СУБД - может и ничего оно там не нагружает, но ведь костыль какой-то. Да и задержка может достигать эти 5 минут - это может быть критично для потребителя сервиса.
145 Cyberhawk
 
23.10.18
13:55
(143) Это не придирки, это раскрытие описанного в (122) касательно частотности. В пофигуратор так и так лезть (в 100% случаев).
146 dmpl
 
23.10.18
13:55
(138) Такую вьюху придется модифицировать и при изменении внутренней структуры хранения, а не только при изменении метаданных. Более того, оперируя понятиями только из 1С это делать удобнее.
147 vitkhv
 
23.10.18
13:56
(144) Вы не видели какие запросы в холостую гоняет MDS от Майкрсофт когда опрашивает таблицы на изменения. Нет в этом ничего страшного ни с точки зрения БД, ни сточки зрения клиента в виде 1С.
148 Cyberhawk
 
23.10.18
14:01
(147) Я ж не спорю - наоборот, вполне допускаю, что с точки зрения нагрузки такой "холостой долбеж" никаких последствий вообще не имеет.
Но архитектурно все равно не нравится. Это как из 1С долбить регистр сведений на предмет появления новой записи в логе телефонии, чтоб открыть пользователю карточку звонящего при входящем звонке - тоже "холостой долбеж" 99% времени.
Но вон телефония уже научилась сама стучать по событиям и это конечно кошерно.
Вот и с вьюхами бы так - пусть оно само там определяет, когда надо пересоздать, и пересоздает. Это ты про триггеры и имел в виду наверное?
149 vitkhv
 
23.10.18
14:15
(148) Ну да можно тригер повесить на изменение, но что этот тригер будет запускать? Нам же по идее надо вызвать 1С и выполнить в ней алгоритм перегенерации вьюх.
150 Cyberhawk
 
23.10.18
14:16
(149) Вот в примере выше с телефонией АТС умеет дергать ХТТП-сервис инфобазы 1С. В скуле бы так )
151 vitkhv
 
23.10.18
14:21
(148) Из тригера стучаться по Com к 1С, это жесть полная.  Хотя как я знаю есть один любитель делать обмены на тригерах, он даже статью на инфостарте вроде писал по этому поводу.
152 Cyberhawk
 
23.10.18
14:22
Не, СОМ конечно же не надо
153 igork1966
 
23.10.18
14:23
(34) "А так же за любые последствия (явные и неявные), связанные с нарушением лицензионного соглашения 1С"

Ты думаешь что таким способом ты снимешь ответственность?
Сильно сомневаюсь. Только подтвердишь что при реализации нарушается лицензионное соглашение. От потенциального суда это не спасет. Или расчет что заказчик откажется?
154 vitkhv
 
23.10.18
14:24
(150) А почему нет? Вообще в принципе запросы на опрос таблиц на изменение с определенной периодичностью плохим тоном не считается. Так в принципе многие делают, чтобы триггеры не юзать.
155 Shur1cIT
 
23.10.18
14:27
(0) как всегда всё не читал,
у нас HTTP сервисы нам шлют запрос JSON в нем в обратку шлём,аналогично и мы забираем чрез api сервера.При этом не надо заморачиваться о внутреннем устройстве стороннего ПО и его БД.
это наиболее правильный и современный способ взаимодействовать между двумя по, ну еще более правильно сервис очереди организовать, но для нас это излишне.
156 ADirks
 
23.10.18
14:30
(154) 1C тоже так делает :))
и дело тут даже не в триггерах
157 vitkhv
 
23.10.18
14:32
(153) Лицензионное соглашение от 1С противоретичит законодательству РФ в области правобладания. Единственное, что нельзя по нашему законодательству делать, это увеличивать количество пользователей, а так после покупки ПО ты можешь модернизировать его как хочешь. И по этому не было ни одного прецедента, по преследованию со стороны 1С таких случаев. На Хабре это лицензионное соглашение разбиралось по косточкам.
Суть соглашения, если ты полез напрямую, то 1С от тебя отмораживается, вот и вся его суть.
158 vitkhv
 
23.10.18
14:37
(156) Да хотел написать, что и 1С так делает.))))
Вообще наоборот использование триггеров является плохим тоном в разработке БД.
159 Cool_Profi
 
23.10.18
14:41
(158) @использование триггеров является плохим тоном в разработке БД@

Откуда дровишки?
160 vitkhv
 
23.10.18
14:47
(159)Ну как бы часто такое проскальзывает в обсуждениях на SQL.ru.
ну как пример http://www.sql.ru/forum/1126731/ne-ponyatnoe-povedenie-triggerov?hl=%f2%f0%e8%e3%e3%e5%f0%fb%20%ef%eb%ee%f5%ee%e9%20%f2%ee%ed
161 vitkhv
 
23.10.18
14:48
(159) Ну и как бы уже 15 лет с MSSQL это почти как аксиома.
162 ADirks
 
23.10.18
14:49
(158) Ну, злоупотреблять конечно не стоит. Если в прикладной системе есть нужные события - то пользуемся ими. Но иной раз триггеры - единственно возможный выход. Делал как-то двусторонний обмен с польской программой для расчета окон, так пара триггеров и табличек-очередей решили вопрос. И куча вьюх, да. Поляки потом перенимать опыт приезжали :)
Или например формирование всяких вспомогательных табличек, протоколы там всякие - самый надёжный метод.
163 vitkhv
 
23.10.18
14:51
(162) Скажем так, если можно обойтись без триггера то его задействовать не стоит.
А так да, в момент моей молодости много чего под 77 на триггерах делал. Потом отучился.
164 Сияющий в темноте
 
23.10.18
21:28
С триггерами есть некоторая проблема в оптимизации запросов и пакетном добавлении,когда sql сервер не знает,что будет выполняться в триггере и быстрое добавление в таблицу может обернуться тормозами и блокировками.
Если триггер никуда,кроме самой записи не пишет,то таких проблем нет,но и отслеживание таким триггером не сделаешь.
165 Nyarlathotep
 
23.10.18
22:09
(0) Я не пойму - а чем тебе не нравиться, что они что-то там забирают из базы SQL напрямую? Это нормально... Они же туда ничего не пишут, правильно? Их внешняя система - это их зона ответственности, пусть забирают то, что нужно и сами там разбираются. Тебе то какая разница? Ты просто предупреди их, что с обновлением релиза может измениться структура и наборы таблиц и все, дальше пусть сами.
166 Nyarlathotep
 
23.10.18
22:13
(0) А если не хочешь их в базу пускать - тогда да, сделай или веб-сервис, или буферную базу/таблицу в sql, куда сливай нужные им данные, а они пусть забирают.
167 Nyarlathotep
 
23.10.18
22:20
По поводу же минусов прямых запросов - их нет. Прямой запрос сработает значительно быстрее написанного на языке запросов 1с. Единственное что - тебе придется самому собирать нужные данные из всей этой мошны 1с-ных таблиц. Но это трудно только в первый раз)))
168 vs84
 
24.10.18
00:17
(167) [Прямой запрос сработает значительно быстрее написанного на языке запросов 1с.]

Можно подумать, запросы из 1С шлют не прямые запросы на скл - через прослойку сервера, но точно не о каком "значительно" речи не идет.
169 vs84
 
24.10.18
00:25
(0) если есть прямая доступность от получателя до скл базы, то вполне можно напрямую, почему нет. вьюхи (приведенные к человеческим именам метаданных) хороший способ. Аргументы про то, что структура меняется и "шеф все пропало" несерьезные - даже если не автоматизировать переформирование вьюх по актуальной структуре хранения, то частота с которой возникает изменение имен хранения делает ту проблему ничтожной.
170 Tonik992
 
24.10.18
00:28
(168) Прямой запрос в SSMS будет быстрее, чем где бы то ни было. -)
Впринципе можно отказаться от пользовательского интерфейса, все делать на sql скриптах.
171 Злопчинский
 
24.10.18
00:51
(170) можно вообще от 1С отказаться, зачем лишние проклдадки в достижении результата
172 dmpl
 
24.10.18
07:05
(168) Ну... это можете втирать тем, кто не видел ЧТО сервер шлет в запросах.
173 Cyberhawk
 
24.10.18
07:34
(169) "даже если не автоматизировать переформирование вьюх ...  то частота с которой возникает изменение имен хранения делает ту проблему ничтожной" // Как лихо ты отнес недоступность сервиса для потребителя к ничтожной проблеме, однако...
174 Vladal
 
24.10.18
08:52
(0) "У клиентов периодически возникает потребность забирать данные из 1С в какую-то другую внешнюю систему (OLAP и т. д.). "

Для этого есть Automation
175 vitkhv
 
24.10.18
09:13
(167) Нет там никакого быстрее,если не извращаешся с кучей точек в соединениях и виртуальными таблицами в соединениях. Работают с точно такой же скоростью. Это если запросы одинаковые по подходу в написании. А вот когда начинаешь использовать всякие плюхи в виде великого и могучего T-SQL, ну типа CTE для замены в ИЕРАРХИИ() или для того же разузлования. Запросы к JSON, OPENROWSET, For XML, CLR, самописные функции в запросах, кореллированные подзапросы (1С умеет их только в секции WHERE) , да те же строковые функции TSQL. Тогда да, работает действительно быстрее. И операции модификации таблиц, вот это точно намного быстрее, т.к. 1С умеет только в построчную модификацию.
176 dezss
 
24.10.18
10:05
(102) (175) а можешь показать какой-то конкретный пример как делать вьюхи из 1с?
или пни меня, плз, в нужном направлении, типа гайда "как создать вьюху для чайников")
177 Cyberhawk
 
24.10.18
10:15
(176) Из 1С просто запускается запрос к СУБД, в справке к create view все описано
178 vitkhv
 
24.10.18
10:29
(176) ПолучитьСтруктуруХраненияБД(,Истина)
потом генерируешь текст вьюх и через ADO их создаешь.
179 vitkhv
 
24.10.18
10:33
(176)
Если захочешь использовать точки в таких конструкциях типа Справочник.Номенклатура, обрамляй их []
180 vitkhv
 
24.10.18
10:38
(176) ну и если захочешь сам генерировать GUID в стандарте 1С из MSSQL при создании объектов или на операциях вставки, прочитай вот эти темы:
http://www.sql.ru/forum/1301722-a/guid-iz-1s-v-ms-sql-i-obratno-kak-realizovyvaetsya

и
http://www.sql.ru/forum/1289996-a/dannye-1s

там есть примеры функций преобразования кроме пожалуй функции сгенерированной NEWSEQUENTIALID( ), но и эта функция у меня есть.
181 vitkhv
 
24.10.18
10:45
(176) и не забудь про перечисления, для них у меня отдельная таблица, вьюхь на них лучше не вешать т.к. будет множество юнионов по количеству перечеслений (каждое перечисление в отдельной таблице) и оптимизатор это запрос не сможет правильно обработать, ну либо материализуй такую вьюху.
182 dezss
 
24.10.18
11:27
(177) (181) спасибо, почитаю
183 Асем
 
24.10.18
11:28
Здравствуйте!
Сижу в Sql с таблицами с 1 с
Нужно найти в них факты продаж
c kakimi tablicami luchwe rabotat'?
184 Botanik8888
 
24.10.18
12:26
(183) это очевидно... с продажными
185 vitkhv
 
24.10.18
14:04
(183) Если УТ 10x или УПП, то можно использовать регистр накопления продажи.
Но понятие регистр в 1С это несколько таблиц, с которыми вам предстоит разобраться. Проще всего, через профайлер посмотреть как 1С строит запросы к этому регистру.
186 GANR
 
25.10.18
13:11
А кто-нибудь задумывался, если скажем понадобятся остатки из регистров накопления? Представляете какую страхотень придется городить? Тут уже вьюхи не помогут.
187 dk
 
25.10.18
13:39
(186) дык профайлер никто не отменял
копипастишь изапрос из профайлера
188 VitShvets
 
25.10.18
20:42
(187) Потом выкидываешь получившийся ужос и пишешь нормально :)
Но на посмотреть как принципиально это работает, можно.
189 VitShvets
 
25.10.18
20:46
(186) Если речь об оперативных остатках, это простейший селект к таблице итогов с отборами по дате(5999-11-01) и по складам-товарам, в соответствии с бизнес логикой. Сложнее с получением остатков "на дату", но и там не сложно - суммируется 2 выборки - ближайшие итоги и обороты за дельту дат.
190 МихаилМ
 
25.10.18
21:08
(186) давно задумались . еще создатели 1с++ . запрос простой с учетом , что из итогов можно и вычитать .
191 Злопчинский
 
25.10.18
23:43
(189) дадада, еще характеристики, серийный учет и прочая развесистость
192 Сергиус
 
26.10.18
00:58
(0)Главный минус, это то, что надо знать структуру таблиц и колонок. Если знаешь, то почему бы и нет. Но лучше конечно через родной механизм 1с.
193 МихаилМ
 
26.10.18
02:43
(192) парсите конфиг , через dbnames сопоставляете имена полей и таблиц, храните сопоставление , далее парсите и сопоставляете в триггере только при изменении config .
изредка 1с меняет структуру хранения данных , как с константами.
194 VitShvets
 
26.10.18
13:44
(191) Это вопрос к перечню полей в group by, не более.
195 Demiurg
 
27.10.18
11:33
(0) кроме минусов есть и плюсы, можно READ UNCOMMITTED зарядить, указать в хинтах maxdop и т.п.
так что если 1С-кам жить не мешают, то вам то что
тем более если что работать не будет, сразу на них свалите )))
AdBlock убивает бесплатный контент. 1Сергей