Обработка-помощник для СУБД-разработчиков и интеграторов

18.06.18

Разработка - Инструментарий разработчика

Решаем пару типичных проблем, с которыми сталкиваются разработчики, использующие базу 1С на уровне SQL-сервера или иной СУБД.

Скачать файлы

Наименование Файл Версия Размер
Обработка-помощник для СУБД-разработчиков и интеграторов.:
.epf 34,71Kb
4
.epf 2018-06-18 34,71Kb 4 Скачать

Условия разработки и проверки проверки:

     СУБД - MS SQL Server 2008 R2, Платформа 1С - 8.3.9.2170, Конфигурация - УПП 1.3.107.2 (пригодно для любой конфигурации, имеющей в своём составе стандартные функции и процедуры для работы со строками)

Предисловие

     Так сложилось, что среди программистов 1С не принято работать с данными базы на уровне СУБД без особой на то надобности. И действительно – а зачем, если платформа, выполняя роль посредника, умеет представить структуру базы в более удобном для разработки виде и избавляет от многой части рутины. У многих такая особая надобность вообще не наступает, у многих ограничивается операциями по восстановлению поврежденных баз. Однако остается пара случаев, не укладывающихся в общую картину. Во-первых это интеграция с базами данных, не 1С происхождения, выполняемая опять же не со стороны 1С. (т.е. база 1С служит исключительно источником данных). Во-вторых - встречающийся временами подвид разработчика, который здорово ориентируется в СУБД и имеет минимальное представление об 1С. И совсем не обязательно это фанатик, действующий согласно собственных предубеждений. Такой сумрачный гений, например, может просто быть иностранцем из мест более далеких, чем СНГ, со всем вытекающими - непониманием текстов типовых конфигураций для России и СНГ еще на уровне букв. Скорее всего, если таковой появился у Вас, он делегирован головной компанией для выполнения первого пункта, но попутно может кодить и что-то, что способен сделать и нормальный 1С-ник, не покидая привычной платформы, но нет времени / непрофильная область / руководитель любит Excel и косо смотрит на 1С или же на классические базы данных как таковые. В общем отказываться от помощи наотрез было бы глупо.

    Как работают те, кто пользует базу 1С на уровне СУДБ? Обычно такой мастер вооружается обработкой, раскрывающей структуру хранения таблиц, опционально – консолью запросов и SQL Server Profiler (или его аналогом, если речь все-таки не о SQL Server) . Нельзя не признать, что такой подход дает свои плоды. Толи свежая, оторванная от 1С, голова, толи особенности используемых инструментов позволяют решить часть проблем, до которых у нас 1С-ников или не доходили руки, или не хватало знаний и умений для их решения. Все бы хорошо, но через некоторое время…

Глава 1. Перечисления

    Рано или поздно, копающийся в SQL разработчик натыкается на такую штуку как перечисление. Внутри платформы это то, что не вызывает каких-либо затруднений. Для 1С-ника один из самых удобных в работе объектов, все значения предопределены и замечательно отображаются в интерфейсе. И даже в запросах можно прикручивать их прямо в тексте не пользуя для сего параметры.  А что если поступить как СУБД-шник. Находим в структуре хранения базы какое-нибудь перечисление, находим таблицу в SQL, открываем содержимое и… видим что-то вроде этого: 

    Очевидно, что для отображения в отчетах оно не годится. Дальнейшее изучение  вопроса дает понять, что текстовые значения находятся где-то в недрах конфигурации и добывать их оттуда крайне неудобно. Есть вариант жестко влепить в коде разрабатываемого приложения соответствие ссылок или номеров привычным пользователю наименований. Но если перечислений требуется много от этого занятия можно заработать тремор.

    Предлагаемое решение – собрать значения из базы данных и поместить в какую-либо таблицу вне 1С, после чего вылавливать представления перечислений из нее путем использования банального JOIN. Идея в общем-то не новая и на просторах сети неоднократно мелькала. Я предлагаю только свой инструмент для реализации этого действа, непосредственно из базы 1С, без посредничества COM-соединений и анализа содержимого dbo.Config сторонними средствами.

    Для начала в SQL создаем вспомогательную базу данных (или используем уже имеющуюся), а в ней таблицу, в которой запишем связь между хранимыми значениями перечислений и их текстовым представлением.

В 1С полезно подключить эту таблицу как необъектную таблицу внешнего источника данных:

    А теперь готовим содержимое и пишем в эту самую таблицу. Опционально – можно просто сохранить собранные значения в файл, а вопрос его загрузки / обработки предоставить Вашему сумрачному гению. 

    На что стоит обратить внимание – чтобы получить значение бинарной ссылки на уровне СУБД в таком же виде, как она хранится в базе 1С туда приходится передавать Уникальный идентификатор с переставленными относительно записанного значения блоками символов. Т.к. разработка утилиты велась для  SQL-сервера 2008 R2, а проверить на чем-либо еще возможность не представилось, гарантий, что для других СУБД алгоритм перестанова точно такой же, нет.

Глава 2. Новая база

    Представьте себе, что у вас есть две базы схожей конфигурации, когда-то развернутых франчами в лохматые годы и еще без вашего участия. Обращение к структуре их хранения говорит, что в общем и целом она идентична, если опустить имеющиеся доработки. Гений СУБД слепил отчет, который склеивает данные этих двух баз и базы данных СКУД (электронных пропусков, если кто-то не в теме). Со временем руководство решает, что юрлиц маловато, вы создаете такую же третью базу сами из соответствующего шаблончика, пытаетесь ее интегрировать и … обнаруживаете, что ее структура хранения коренным образом отличается от первых друх, а совпадение заветных цифр в именах полей и таблиц это исключение, а не правило. Поиск и замена соответствующих значений превращается в очень увлекательное занятие, способное убить немалую часть и без того ограниченного времени.

    И снова обращаемся к внешним источникам. Создаем в SQL таблицу и подключаем к нашим базам:

     Поочередно в каждой из них формируем перечень полей и таблиц структуры хранения и пишем во внешний источник, не забывая про идентификатор базы (По умолчанию этот реквизит заполняется  ее именем) и пишем во внешний источник.

     После того как информация о структуре хранения обеих баз помещена во внешний источник их можно более-менее удобно сравнить:

     Но если у нас получилось узнать какие таблицы хранения обеих баз соответствуют именам таблиц в конфигураторе, ничто не мешает нам поэкспериментировать с рефакторингом запросов на уровне СУБД. К сожалению, как часы эта опция не работает, тем не менее от рутинных операций это избавляет. Для проверки у меня оказались под рукой два актуальных запроса. В режиме из  структуры базы 1 в структуру базы 2 отработало на ура. 

     Сложнее оказалось с приведением к формату 1С. Результат позволяет понять о каких объектах идет речь, но запускаться и работать в консоли запросов просто так не хочет. Если задача стоит именно в том, чтобы перенести чужие труды в 1С, придется еще поработать руками:


Вместо заключения

    Писать эту обработку мне пришлось когда наш знаток и поклонник SQL-Server нашел работу поближе к дому и убыл на родину. Время от времени его наследие нуждается в поддержке, но энтузиазма это ни у кого не вызывает. Поэтому совет – по мере возможностей не работайте с базами 1С на уровне СУБД. Платформа это умеет гораздо лучше. Если ковырнуть SQL без причины лезет русскоговорящий коллега – смело беритесь за его перевоспитание и снабжайте литературой и видеоуроками по 1С. С иностранцами сложнее – скорее всего научить полностью англоязычной конфигурации его можно. Но нам с вами большей частью приходится работать с тем, что написано кириллицей, а это ощутимый барьер даже для тех, кто овладел разговорным языком. И тут решать вам – как построить совместную работу. Возможно где-то удобнее отложить задачу, но потом сделать все по уму. А где-то не грех и принять стороннюю помощь.
    И если взвесив все за и против, Вы все-таки решили для своей компании использовать разработку средствами СУБД, или же кто-то успел её попользовать еще до Вас, то эта обработка может быть Вам полезной.

Обработка СУБД SQL Структура хранения базы ENUM Перечисление

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122157    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7292    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8000 руб.

10.11.2023    3537    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177749    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99347    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18113    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28110    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23602    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Timur.V 78 19.06.18 00:12 Сейчас в теме
Есть сторонние программы, которые отлично сравниваю ms sql базы. А вы каким инструментом пользуйтесь для сравнения баз?
И действительно, фирма 1С не рекомендует изменять структуру бд на уровне сервера ms sql.

Наверно, вы всё приведете к типовой конфигурации или вы никогда не планируете обновлять ваши базы?
2. Infector 199 19.06.18 07:04 Сейчас в теме
(1) разве речь идет о том, чтобы привести все к типовой конфигурации или не обновляться? Речь о любителях отчетов и прочих разработок на уровне SQL с использованием данных 1С и их нелегкой жизни.
А чтобы на уровне SQL не добавлять в 1С-ную базу лишних таблиц - предлагаю использовать дя этого отдельную вспомогательную базу, к 1С не подключенную. И для сравнения структуры баз использую этот инструмент, уже пару раз выручило. Естественно, что время от времени наборы записей во вспомогательной базе нуждаются в освежении ввиду того, что доработки и изменения никто не отменял.
3. asved.ru 36 20.06.18 08:19 Сейчас в теме
Позволю себе небольшую поправку :)

Если ковырнуть SQL без причины лезет русскоговорящий коллега – смело бейте его по голове табуреткой: хуже ему от этого точно не станет.



Во-первых это интеграция с базами данных, не 1С происхождения, выполняемая опять же не со стороны 1С. (т.е. база 1С служит исключительно источником данных)


Интеграционные задачи разработчикам БД доверять нельзя: получится конструкция, не подлежащая поддержке.
4. Infector 199 20.06.18 08:51 Сейчас в теме
(3) Скорее получается конструкция, которую способен поддерживать только автор и его подмастерья. SQL-разработчик, впервые встретивший 1С, часто испытывает шок от циферок, по которым нереально понять ожидаемое содержание таблицы, поэтому смена лиц на поддержке сего затрудняется, но совсем невозможной не назовешь.
Согласен, что интегрироваться со стороны 1С как минимум в СНГ проще. Но часто условия по интеграции головной компанией ставятся примерно так: "нам нужны данные, в нашем приложении Вам делать нечего, поэтому слепите запрос чтобы мы могли их взять, а дальше сами разберемся". Если удается увести задачу в сторону веб-сервисов хорошо, не удается - приходится ловить запросы в SQL-профайлере и передавать тем, кто требует.
5. asved.ru 36 20.06.18 13:47 Сейчас в теме
(4)
приходится ловить запросы в SQL-профайлере и передавать тем, кто требует


Сама готовность разработчика делать такие "решения" - очень плохой признак.
Оставьте свое сообщение