Набор подсистем "Умные таблицы"

Программирование - Инструментарий

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз и хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB).
  1. Основные вопросы
  2. Введение
  3. Системные требования
  4. Описание подсистем проекта и задач, которые они решают
    1. Статусы объектов
    2. Алгоритмы
    3. Уведомления
    4. Умные таблицы
    5. Коммерческая политика
    6. Определение рабочих баз (Новое)
    7. Внешние хранилища данных (Новое)
  5. Цель проекта
  6. Примеры использования подсистем
  7. Видеоролики и прочие полезные ссылки

Основные вопросы

  1. Что это за продукт? Продукт представляет собой самостоятельный набор универсальных подсистем для решения ряда распространенных задач хозяйственной деятельности предприятий. По своей сути – это инструмент, который позволяет решать ваши проблемы, внедрив его в вашу базу 1С быстрее.
  2. Для кого он предназначен? Продукт создан программистом для программистов. Его основная задача – помочь решить ряд типовых вопросов автоматизации гораздо быстрее, чем это происходит обычно, когда вы создает код с нуля. Продукт имеет ряд реализованных концепций, которых нет в других продуктах.
  3. Какие задачи продукт позволяет решать? Продукт предназначен для широкого круга предприятий, которые в рамках своей деятельности используют продукты фирмы 1С и которым дополнительно нужно решать такие задачи как:
    1. Ведение статусов объектов и настройка уведомлений, доступности и областей переходов в зависимости от текущего статуса.
    2. Отправка уведомлений пользователям системы и произвольным лицам по электронной почте в определенное заранее запланированное время.
    3. Ведение бюджетных таблиц (план продаж, бонусы В2В, В2С, КАМ, расчет коммерческой политики) с возможностью настраивать вид данных таблиц в широком диапазоне возможностей с возможностью ручного редактирования, с учетом отложенных затрат более поздними периодами (бонусы КАМ, транспортные затраты).
    4. Ведение произвольных расчетных таблиц на основании данных из базы 1С.
    5. Хранение и расчет результатов коммерческой политики.
    6. Исполнение алгоритмов, код которых хранится в информационной базе.
  4. Каковы системные требования? Программа написана под 1С 8.3 (гарантирована работа на версии платформы 1С 8.3.9.1850), без использования модальности, под интерфейс 1С Такси, без использования режима совместимости.
  5. Какова стоимость? На текущий момент продукт бесплатен. Если вы захотите внедрить его на своем предприятии, то можете получить лицензионный ключ полной версии на год бесплатно.
  6. Есть ли планы по доработке? Есть планы по включению в набор подсистем еще как минимум двух подсистем:
    1. Хранение файлов во внешних база данных (независимо от вида СУБД).
    2. Постобработка измененных объектов. Когда вы изменили объект системы и с ним нужно что-то сделать вне транзакции записи или проведения.
  7. Есть ли поддержка? Поскольку продукт планируется развивать и внедрять, поддержка есть, она доступна через форум на сайте проекта. Поддержка так же пока бесплатна.

Введение

Довольно часто нам приходится сталкиваться с решением однотипных задач для разных конфигураций, в том числе, и самописных. Каждый раз нам приходится писать код заново, т.к. конфигурации для которых мы пишем код, отличаются друг от друга и код, написанный для одной конфигурации, может не подходить для другой, т.к. использует ту программную среду, в рамках которой он написан. Но что, если написать прикладную библиотеку, которую можно было бы встраивать в современные типовые или самописные конфигурации и которая уже содержала бы код решения довольно распространенных задач, при том, что ее настройка была бы довольно простой? Очевидно, это существенно бы сэкономило время разработчика, т.к. ему не пришлось бы делать из раза в раз одни и те же действия, писать похожий код, который бы отличался в деталях. Это позволило бы ему сконцентрировать свои усилия на тех задачах, которые действительно заслуживают его внимания, т.к. являются достаточно специфичными. Набор подсистем «Умные таблицы» (далее УмТ) и есть одна из таких библиотек.  

Системные требования

  • Платформа 1С 8.3.9.1850
  • Интерфейс Такси
  • Использование модальности - нет
  • Режим совместимости - нет

Описание подсистем проекта и задач, которые они решают

Ведение статусов объектов. Подсистема "УмТ_Статусы".

Очень распространённая задача, когда нам нужно вести статусы объектов системы, менять их доступность для разных групп пользователей в зависимости от текущего статуса, уведомлять определенных пользователей о факте смены статуса, вести историю статусов и автора их изменения, запрашивать дополнительные комментарии от пользователя при установке статуса. Все это умеет подсистема УмТ_СтатусыОбъектов. Настройка подсистемы в режиме конфигуратора занимает несколько минут, вам нужно внести тип объекта, для которого нужно вести статусы в определяемый тип и внести изменения в форму объекта, для которого нужно вести статусы, вставив в несколько мест код вызова интерфейсных процедур подсистемы. После этого в режиме «предприятие»  вам нужно настроить граф перехода статусов, списки уведомлений, списки доступа и необходимость комментирования статусов и система готова к работе. Суммарно, настройка статусов с графом переходов в 10 дуг и 6 статусов может занять до 30 минут, при том что по мере освоения механизма скорость будет повышаться. Если же вам потребуется изменить граф переходов, списки уведомлений или доступность, то для этого не нужно будет снова пользоваться конфигуратором, все настройки можно будет сделать интерактивно на работающей системе.

Исполнение алгоритмов, код и параметры которых хранятся в базе 1С. Подсистема УмТ_Алгоритмы.

Хранение и исполнение кода, хранящегося в объектах базы 1С – довольно распространенная задача. Очень часто для своих разработок мы используем такой вид доработок системы, потому что при всех своих недостатках, он позволяет нам менять некоторые параметры системы в процессе ее работы без перезагрузки. Подсистема алгоритмов позволяет вызывать на исполнение алгоритмы из клиентского или серверного контекста, задавать контекст исполнения и параметры в настройках алгоритма, задавать дополнительные параметры при вызове алгоритма на исполнение, а также – вызывать другие алгоритмы, созданные ранее, что позволяет создавать библиотеку алгоритмов для типовых процедур. Данная подсистема тесно интегрирована с основной подсистемой УмТ и используется в ней для создания произвольных группировок и обработки таблиц.

Отправка почтовых уведомлений в определенное время. Подсистема УмТ_Уведомления.

Одна из самых распространенных задач. Часто нам нужно уведомить пользователей об изменении документов, напомнить им что-то в определенный момент времени, дать поручение. Обычно в таких случаях пишется код, который формирует электронное письмо и отсылает его пользователю, но таким образом нельзя отправить сообщение пользователю в некоторое время в будущем, а также не рекомендуется так делать при уведомлении об изменениях, т.к. вы можете существенно увеличить длительность транзакции записи, что может привести к таймаутам. Подсистема уведомлений, при вызове метода формирования уведомления пользователю создает элемент в специальном справочнике и указывает желаемую дату отправки, после чего регламентное задание отправляет письма, когда наступает время их отправки, после чего помечает на удаление. Это существенно экономит время при вызове метода формирования уведомления и решает проблему отправки сообщений в определенное время. История отправки фиксируется в регистре сведений и хранится в нем без ограничения времени. Это позволит вам использовать данную подсистему для выдачи поручений пользователям в бизнес-критичных случаях, т.к. пользователь уже не сможет сказать, что он не получал уведомления. В справочнике уведомлений же информация после пометки на удаление уничтожается спустя 3 дня. Формат отправляемых сообщений может быть как обычным текстом, так и HTML, так же подсистема позволяет отправлять и вложения.

Произвольные таблицы. Подсистема "УмТ_ОсновнойФункционал".

Как часто вам приходилось слышать: А можно я в отчете циферку введу и система мне отчет пересчитает, ну как в Excel’е? Можно мне табличку быстренько сделать, где будут данные, а я введу процентик и 1С мне сумму вознаграждения посчитает? Думаю, довольно часто. Ведение произвольных таблиц, которые могли бы получать свои данные из базы 1С, которые можно было бы редактировать интерактивно, сохранять и загружать – извечная мечта бухгалтера или финансиста. Данная подсистема – основная, в части своей функциональности, именно ее предназначение и дало название всему набору подсистем – Умные таблицы. Подсистема довольно сложна в понимании, но и задачи, которые она призвана решать тоже не простые: расчет бюджетов, ведение экспертной оценки, как суррогата фактических данных, при невозможности получить данные факта в текущем периоде бюджетирования, построение бюджетов на основании источников данных из базы 1С, закрытие экспертной оценки фактическими данными и применение коммерческой политики к бюджетной таблице. Подсистема предлагает несколько иную концепцию ведения бюджетных таблиц: тогда как обычно мы вносим документы, меняющие бюджет, вручную и настраиваем бюджеты только лишь в части цифр, не выходя за определенные рамки, в данной же подсистеме вы сами выбираете как будет выглядеть ваша бюджетная таблица, какие ее колонки вы будете менять, а всю работу по созданию нужных документов для отражения изменений в базе система возьмет на себя. Данный раздел заслуживает отдельного большого описания, которое будет опубликовано отдельными статьями позже.

Применение и хранение коммерческой политики. Подсистема "УмТ_КоммерческаяПолитика".

Основное предназначение подсистемы – хранение информации о коммерческой политике организации. Обычно основной сутью коммерческой политики является стимулирование продаж посредством возврата части от уплаченной контрагентом суммы. Максимальный процент возврата регламентируется законодательством и на текущий момент он равен 5% (в программе данное ограничение никак не регламентировано, система считает так, как вы ее настроили). Тем не менее, вы можете настроить систему на произвольный процент возврата и как-то обработать это при формировании документов на выплату. Данная подсистема только хранит коммерческую политику, применяет ее – основная подсистема.

Определение рабочих баз

В больших компаниях часто можно встретить ситуацию, когда разработчик восстанавливает себе копию рабочей базы, начинает тестировать какой-либо функционал и в результате его манипуляций происходит отправка уведомления контрагенту о том, что его заказ отгружен или подтверждение заявки на платеж в рабочей базе и т.п. Происходит это потому, что либо разработчик при восстановлении забыл отключить регламентные задания, либо в результате его действий сработал какой-то код, который что-то изменил в рабочей базе. Чтобы такие ситуации не возникали и придумана данная подсистема. Принцип действий данной подсистемы состоит в следующем: разработчик заранее помещает в специальный РС все возможные строки соединения для рабочих баз, а кэшируемая функция проверяет наличие текущей строки соединения среди тех, что были записаны ранее. Если такой строки нет, то мы имеем дело с тестовой базой. Такой проверкой удобно предварять бизнес-критичные части кода, которые не должны выполняться в тестовых базах.

Внешние хранилища данных

Основное предназначение данной подсистемы – хранение файлов и изображений во внешних СУБД. На текущий момент времени в подсистеме реализовано 2 интерфейса:

  1. ODBC – интерфейс доступа к СУБД SQL типа, таким как MS SQL или Postrge SQL.
  2. RESTHeart API (Документация доступна на сайте http://restheart.org) – RESTFul API, предоставляющий полноценный REST интерфейс к СУБД NoSQL типа – MongoDB.

При использовании данной подсистемы вы не храните данные в виде ХранилищеЗначения в реквизитах объектов метаданных, вы указываете в объекте ссылку на настройку внешнего хранилища и идентификатор, для поиска данных во внешнем хранилище, а подсистема, в зависимости от настроек, возвращает вам данные из внешней СУБД. Так же подсистема умеет очищать внешние хранилища от файлов, ссылки на которые были удалены из базы 1С.

Цель проекта

Коллеги, безусловно данная программа имеет ряд недостатков и ошибок, от этого не застрахован ни один проект. Есть известная шутка разработчиков: если вам удалось с первого раза без ошибок написать большую программу, обратитесь к системному программисту, чтобы он переписал компилятор. Безусловно, ошибки, которые будут найдены, будут исправляться не сразу, т.к. у автора есть основная работа. Но они будут исправляться, как только я пойму, что другие разработчики заинтересованы в этом проекте и помогут мне, выступив в роли бета-тестеров, довести этот продукт до коммерческой версии. Основная задача этого ролика – дать общее описание проблематики, с которой я сталкивался сам и понять, сталкивались с ней остальные, иными словами – прощупать рынок.

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

Сайт проекта доступен по этой ссылке - https://www.cltabs.ru, общаться, сообщать об ошибках, ругать и хвалить автора, можно на форуме проекта, т.к. на форуме это сделать несколько проще. Однако и в комментариях к данной публикации я постараюсь отвечать на вопросы. При регистрации на форуме, вступите в группу бета-тестеры в профиле, это даст вам доступ ко всем разделам форума. Самые активные бета-тестеры, в случае коммерческого успеха проекта, получат лицензии на год бесплатно. Тестовая (функционал не включает коммерческую политику и групповой расчет таблиц, а так же имеет ограничение на 5 активных сессий и срок использования до 27го августа) база прикреплена к данной публикации, как и инструкция пользователя.

Коммерческой версии продукта пока нет, скачать тестовую версию можно только из файлов данной публикации на Инфостарте (на официальном сайте проекта скачивание так же недоступно). Однако, если у вас есть желание внедрить программу у себя на предприятии, автор готов предоставить бесплатную лицензию на год.

Пример использования подсистемы УмТ_СтатусыОбъектов

Речь в данной статье пойдет о том, каким образом можно реализовать достаточно распространенную задачу ведения статусов объектов с помощью набора подсистем «Умные таблицы»  (далее – УмТ). В качестве примера мы возьмем типовую конфигурацию «Управление Торговлей 11» с внедренным в нее УмТ и, на примере документа «Возврат товаров поставщику», я покажу, как реализовать данную задачу за 15-20 минут.
Давайте для начала обрисуем задачу. Нам необходимо в некоторый ссылочный объект (справочник, документ, бизнес-процесс, задача) добавить некий атрибут его состояния. В зависимости от его текущего состояния объект может менять доступность, список состояний в которые его можно переводить, список уведомляемых лиц и запрашивать комментарий от пользователя при переводе объекта в новый статус. Так же нам необходимо иметь возможность смотреть историю состояний объекта. Для примера, рассмотрим граф с такой областью переходов:

Дуги и их направления показывают возможность перехода от статуса к статусу, изначальный статус, в который можно перевести документ – «Создан». Значки в виде конверта сигнализируют о том, что при переходе в данный статус нужно уведомить определенных пользователей, под значком указаны те, кого нужно уведомлять. Значок в виде листка с ручкой говорит о том, что необходимо запросить у пользователя комментарий. Доступность объекта по статусам приведена в следующей таблице:

Доступность объекта по статусам

Статус Все пользователи Руководство
Создан Да Да
В работе Да Да
На проверке Нет Да
Проверка контролером Нет Да
Утвержден Нет Да
Сдан в архив Нет Нет

Обычно такая задача решается несколько дней. Более того, многие из нас решали ее не один раз с разными небольшими вариациями. Сейчас я покажу, как решить такую задачу с использованием УмТ менее чем за полчаса.

Для примера возьмем типовую Управление торговлей 11 с внедренной в нее УмТ и настроим вышеописанную систему статусов для документа «Возврат товаров поставщику».

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

  1.  Добавим наш документ в переопределяемый тип УМТ_ТипыОбъектовСтатусов.
  2. В форму объекта добавим 2 реквизита:  КомментарийКСтатусу (Строка) и Статус (СправочникСсылка.УмТ_СтатусыОбъектов).
  3. Реквизит Статус перенесем на форму, укажем для него режим выбора из списка и определим для него 2 события: ПриИзменении и ПриОткрытии.
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
	УмТ_РаботаСоСтатусамиОбъектовКлиент.ПриСменеСтатуса(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура СтатусОткрытие(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ТабДок = УмТ_РаботаСоСтатусамиОбъектовСервер.ПолучитьОтчетОбИсторииСтатусов(Объект.Ссылка);
	УмТ_ПереопределяемыйКлиент.НапечататьДокумент(ТабДок);
КонецПроцедуры

  1. Теперь нам нужно добавить интерфейсные вызовы подсистемы статусов в предопределенные обработчики событий формы:
    1. ПриСозданииНаСервере :
      УмТ_РаботаСоСтатусамиОбъектовСервер.ПередОткрытием(ЭтотОбъект);
      
    2. ПередЗаписью :
      УмТ_РаботаСоСтатусамиОбъектовКлиент.ПередЗаписью(ЭтотОбъект, Отказ);
      
    3. ПриЗаписиНаСервере :
      УмТ_РаботаСоСтатусамиОбъектовСервер.ПриЗаписи(ЭтотОбъект);
      

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

  1. Создаем список пользователей – Руководство, добавляя в него нужных нам лиц.
  2. Создаем группу справочника «Статусы объектов» - контейней для наших статусов, указав в качестве наименования наш документ. Статус по умолчанию пока оставляем пустым.
  3. Теперь последовательно создаем все статусы из нашего графа, указывая пока только наименования, все настройки оставляем пустыми.

  1. Возвращаемся в созданную группу и указываем наш начальный статус «Создан» как статус по умолчанию.
  2. Начинаем последовательно заполнять наши статусы:
    1. Создан: в параметры перехода добавляем «В работе».
    2. В работе: в параметры перехода добавляем «На проверке», в параметры уведомления строку «Менеджер».
    3. На проверке: в параметры доступа добавляем «Все пользователи, отключив доступ, и список пользователей Руководство, включив доступ, в параметры перехода – «В работе», «Проверка контролером», «Утвержден», в параметры уведомления – Руководство.
    4. Проверка контролером: ставим признак необходимости комментария,  в параметрах доступа Всем пользователям отключаем доступ, а Руководству – включаем, в параметры перехода добавляем «В работе» и «Утвержден».
    5. Утвержден: в параметрах доступа отключаем доступ Всем пользователям и даем доступ Руководству, в параметры перехода добавляем «Сдан в архив» и «В работе».
    6. Сдан в архив: в параметры доступа отключаем у Всех пользователей доступ, в параметры уведомления добавляем строку Менеджер и список пользователей Руководство.

На этом – все, система настроена и готова к эксплуатации.  На все манипуляции у нас ушло менее получаса!

Какие преимущества использования подсистемы:

  1. Настроив форму объекта в конфигураторе один раз, вы вольны менять параметры доступа, уведомления и области перехода при работающей системе.
  2. Вы сокращаете объем кода, который нужно писать, высвобождая свое время на другие задачи.
  3. Вы используете универсальный механизм, а не множество различных механизмов для разных объектов, что существенно упрощает поддержку системы.
  4. За счет широких возможностей интерактивной настройки системы вы можете оперативно реагировать на изменение бизнеса и перестраивать свою систему более оперативно.


Обновление 26 мая 2017 г. Релиз 0.3

  1. Из набора подсистем была исключена подсистема УмТ_Блокировки. Подсистема признана устаревшей, ее функционал заменен типовым.
  2. В основной подсистеме в справочнике УмТ_СценарииПоПодразделениям поле подразделение более не является обязательным, что позволяет собирать данные по всем организации без отбора по подразделению.
  3. В основной подсистеме при запуске мастера таблиц под правами обычного пользователя исправлена ошибка обработки данных лицензии.
  4. В подсистеме УмТ_Алгоритмы реализован механизм досрочного прерывания исполнения алгоритма посредством установки параметра _ЗавершитьВыполнение_.
  5. В подсистеме УмТ_СтатусыОбъектов исправлена ошибка в функции получения списков пользователя для определения доступности формы и необходимости уведомления при смене статуса.

Обновление 2 июля 2017 г. Релиз 0.3

  1. Добавлена подсистема «Определение рабочих баз». Ее предназначение — определять по строке соединения является ли текущая база рабочей или тестовой. Это поможет оградить от исполнения в тестовых базах бизнес-критичные части кода, которые должны выполняться только в рабочих базах.
  2. Добавлена подсистема «Внешние хранилища данных». Данная подсистема призвана хранить файлы во внешних СУБД. Для этого в ней реализовано 2 интерфейса:
    • ODBC — для хранения данных в СУБД для которых есть драйвер, реализующий API Microsoft ODBC. Например: Postgre SQL и MS SQL. Обе СУБД были проверены в ходе тестирования программы, результат — положителен.
    • RESTHeart API — RESTFul интерфейс для доступа к MongoDB, сайт проекта — http://restheart.org/. MongoDB — это СУБД NoSQL вида, она документоориентирована и имеет иную концепцию, но для хранения файлов во внешних базах подходит отменно.
  3. Внесены изменения в инструкцию пользователя.

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

Наименование Файл Версия Размер
Выгрузка демонстрационной базы набора подсистем "Умные таблицы"
.dt 1,26Mb
02.07.17
13
.dt 0.4 1,26Mb 13 Скачать
Инструкция пользователя
.pdf 3,10Mb
21.05.17
5
.pdf 0.4 3,10Mb 5 Скачать

См. также

Комментарии
1. Александр Дмитриев (МимохожийОднако) 117 24.05.17 07:35 Сейчас в теме
Это замена Excel и макросов?
2. Алексей Соловьев (Silenser) 412 24.05.17 08:49 Сейчас в теме
(1) Нет. Полноценную замену Excel внутри 1С реализовать сложно, да и смысла нет: проще купить, если конечно не нужно этот функционал в веб тащить. Если брать основную подсистему, создающую произвольные таблицы, то ее основная особенность - возможность наполнения таблицы данными из базы, которые формируются на основании произвольных запросов. К каждой таблице можно прикрутить бантики в виде формул и группировок, так же некоторые колонки можно дать менять пользователям, таблица при этом будет пересчитываться. Изначально система создавалась под ведение бюджетных таблиц и в нее заложена некоторая парадигма, которую в 2х словах не опишешь, по бюджетам я сниму отдельные ролики. Я попытался максимально отвязать подсистему от первоначальной задачи, чтобы она была более универсальной и подходила для широкого круга задач. Например, для ведения простого сравнительного отчета план-факт, если по его результатам нужно выполнять некоторый расчет.
3. Александр Дмитриев (МимохожийОднако) 117 24.05.17 11:08 Сейчас в теме
(2) Механизмы СКД здесь используются? Там тоже есть возможность настройки структуры отчета и выбора различных вариантов оформления
4. Алексей Соловьев (Silenser) 412 24.05.17 13:22 Сейчас в теме
(3)Используются, но не в части представления данных, для этого в системе используется отдельный справочник. СКД используется только в части расчета статей таблиц (колонок таблицы).
5. rtnm rtnm (rtnm) 537 25.05.17 17:09 Сейчас в теме
Для того, чтобы этого не происходило, программисты могли сразу вызывать функцию Заблокировать() при открытии формы объекта, если вызов не удавался, потому, что объект уже был заблокирован, то форму открывали только для чтения. Теперь же, с переходом на управляемые блокировки, это стало невозможно, т.к. в таком режиме блокировок эта функция не работает


Пессимистические блокировки есть и в управляемых формах:
- ЗаблокироватьДанныеФормыДляРедактирования()
- ЗаблокироватьДанныеДляРедактирования(<Ключ>, <ВерсияДанных>, <ИдентификаторФормы>)
- РазблокироватьДанныеФормыДляРедактирования()
- РазблокироватьДанныеДляРедактирования(<Ключ>, <ИдентификаторФормы>)
6. Алексей Соловьев (Silenser) 412 25.05.17 20:28 Сейчас в теме
(5)Понятно, спасибо. Уберу эту подсистему, а блокировки справочников перепишу на типовые функции.
ПС: Печально даже не то, что я упустил и замечал эти функции несколько лет, а то, что многие вещи делал не совсем оптимально. Чтож, будем исправляться.
7. Алексей Соловьев (Silenser) 412 03.06.17 23:16 Сейчас в теме
Добавлен пример использования подсистемы статусов объектов.
8. Алексей Соловьев (Silenser) 412 02.07.17 22:19 Сейчас в теме
Добавлены подсистемы:
- определения рабочих баз на основе строки соединения,
- хранения файлов во внешних СУБД двумя способами: ODBC (MS SQL, Postgre SQL и т.п.) и RESTHeart (MongoDB)
Оставьте свое сообщение