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

18.06.18

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обработка-помощник для СУБД-разработчиков и интеграторов.:
.epf 34,71Kb ver:2018-06-18
4
4 Скачать (10 SM) Купить за 4 550 руб.

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

     СУБД - 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! %

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

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

12000 10000 руб.

02.09.2020    161349    893    399    

873

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 руб.

20.08.2024    8585    66    29    

76

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

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

22200 руб.

06.10.2023    15693    39    8    

73

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23851    70    45    

119

SALE! %

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

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

15000 10000 руб.

10.11.2023    10668    38    27    

63

SALE! %

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

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

4800 3840 руб.

14.01.2013    188574    1142    0    

913

SALE! %

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 15000 руб.

07.10.2021    17558    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7833    8    35    

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

Наверно, вы всё приведете к типовой конфигурации или вы никогда не планируете обновлять ваши базы?
2. Infector 201 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 201 20.06.18 08:51 Сейчас в теме
(3) Скорее получается конструкция, которую способен поддерживать только автор и его подмастерья. SQL-разработчик, впервые встретивший 1С, часто испытывает шок от циферок, по которым нереально понять ожидаемое содержание таблицы, поэтому смена лиц на поддержке сего затрудняется, но совсем невозможной не назовешь.
Согласен, что интегрироваться со стороны 1С как минимум в СНГ проще. Но часто условия по интеграции головной компанией ставятся примерно так: "нам нужны данные, в нашем приложении Вам делать нечего, поэтому слепите запрос чтобы мы могли их взять, а дальше сами разберемся". Если удается увести задачу в сторону веб-сервисов хорошо, не удается - приходится ловить запросы в SQL-профайлере и передавать тем, кто требует.
5. asved.ru 36 20.06.18 13:47 Сейчас в теме
(4)
приходится ловить запросы в SQL-профайлере и передавать тем, кто требует


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