Создаем сайт ресторана на OneScript














































В статье изучаются возможности http-сервисов OneScript по созданию web-приложений на примере сайта ресторана

Введение

После создания новой версии каркасной конфигурации, для разработки web-приложений на основе http-сервисов OneScript, необходимо было на практике пощупать новые функции и оценить ее применимость для создания бизнес-ориентированых web-приложений. В качестве web-приложения, был выбран сайт небольшого ресторана или кафе. Как показал анализ выдачи гугла, этот вид приложений достаточно распространен в мире и как правило, представляет собой одностраничный сайт, позволяющий рассказать о ресторане, просмотреть меню и забронировать столик. Поскольку в 90% случаев при создании сайтов используются готовые шаблоны, я решил поступить таким-же образом. В готовых решениях Битрикс, был найден подходящий шаблон сайта (RestoPesto). Я обратился в компанию Novastar, которая является автором вышеуказанного решения, с просьбой предоставить мне этот шаблон для миграции на OneScript. Антон Яшин любезно предоставил мне ссылку на исходный шаблон, за что ему огромное спасибо. Как оказалось — это html шаблон на основе библиотеки bootstrap, который не содержит кода php.

О том, что получилось — вы можете прочитать ниже или посмотреть, нажав кнопку "Показать демо".

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

Компьютер под управлением Windows 7 или более поздней версии.

Установленный .NET Framework версии 4.5.2 или более поздней.

Платформа 1С:Предприятие версии не ниже 8.3.6.1977.

Первый тест

Файловая структура шаблона, после скачивания и распаковки имеет следующий вид:

 

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

Создадим общий макет, типа ТекстовыйДокумент, и поместим в него содержимое файла index.html.

Также создадим http-сервис, с корневым url – index.os, добавив функцию-обработчик GET-запроса нижеследующего содержания:

 

Добавим созданные объекты в подсистему ОбъектыКонфигурацииWebПриложения.

 

Выгрузим конфигурацию, затем в режиме предприятие создадим и обновим web-приложение.

Скопируем папки изображений, js-скриптов etc. В папку web-приложения, таким образом, что файловая структура web-приложения будет иметь нижеследующий вид:

 

Для доступа к локальным файловым ресурсам из 1С:Предприятие, для web-публикации 1С:Предприятие создадим правила url rewrite.

 

Протестируем наше web-приложение и убедимся, что его поведение не отличается от поведения демонстрацинного сайта-источника.

 

Внешний вид сайта

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

Шапка

 

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

Приветствие (Welcome)

Фактически — это начальный экран, на который попадает пользователь при открытии сайта. В верхней части находится слайдер изображений, с поясняющим текстом для каждого изображения (Заголовок, Заголовок1, Текст ). В нижней части — текст с кратким описанием заведения, фотография, а также заголовки к данному функциональному разделу. Обычно данная информация постоянна, либо меняется достаточно редко.

Специальные блюда (Specialties)

 

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

Меню (Menu)

 

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

Резервирование столика (Reservation)

 

Данная секция содержит фоновое изображение, заголовки секции, а также форму заказа столика. Информация в этой секции может считаться условно-постоянной.

События ресторана (Events)

 

Данная секция содержит информацию о предстоящих событиях, которые будут происходить в заведении. Это могут быть дни каких-либо блюд, праздники etc. Также как и предыдущая, данная секция содержит фоновое изображение и заголовки секции, которые можно считать условно-постоянными, а также список событий, который может обновляться достаточно часто. В дальнейшем, мы более подробно остановимся на динамической генерации списка событий.

Контакты (Contact)

 

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

Подвал

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

Условно-постоянная информация

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

Для работы с данными в формате yaml, добавим методом сравнения/объединения (не забывая объединить состав подсистем) в нашу конфигурацию соответствующую библиотеку. Также, заимствуем методом Ctrl+C, Ctrl+V общий модуль, с функциями для работы с шаблонами из этой демонстрационной конфигурации.

Cоздадим общий макет типа ТекстовыйДокумент с именем ОформлениеСайта и поместим его (и общий модуль Макеты) в подсистему ОбъектыКонфигурацииWebПриложения.

Импортируем прочие файлы приложения, затем добавим полученный архив в макет ПрочиеФайлы, а сам макет в подсистему ПрочиеФайлыWebПриложения.

Отредактируем исходный код страницы, разделив его на области вывода, заменим необходимый текст на параметры и внесем параметры в макет ОформлениеСайта. При этом, на данном этапе оставим области, отвечающие за вывод специальных блюд, меню и событий как есть.

Также отредактируем код нашего http-сервиса с учетом вывода областей. При этом содержимое макета ОформлениеСайта и код http-сервиса примут нижеследующий вид:

 

 

 

 

Обновим наше web-приложение и протестируем его.

 

Как можно увидеть, наше web-приложение аналогично оригиналу и имеет возможность изменения оформления.

Вывод списка специальных блюд

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

Объекты в учетной системе

Для эмуляции соответствующих объектов учетной системы, создадим справочники Номенклатура, ВидыНоменклатуры, а также документ УстановкаЦенНоменклатуры. Эти объекты будут содержать информацию, соответственно о блюдах (Номенклатура), категориях блюд (ВидыНоменклатуры), а также их стоимости (УстановкаЦенНоменклатуры).

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

Объекты на стороне сайта

Для хранения необходимых данных на стороне сайта используем СУБД SQLite. Изображения блюд будем хранить в отдельных файлах.

Для удобства дальнейших действий, создадим некое подобие ER-диаграммы, а также http-сервис, в который впоследствии поместим скрипт создания БД.

 

Также, в папке web-приложения создадим папку db, где будет расположен файл БД сайта, и добавим разрешения на запись аккаунту, из под которого выполняется наше web-приложение.

Создадим параметры соединения с СУБД

 

Создадим запрос на создание таблицы category и выполним его.

 

В процессе выполнения команды возникнет исключительная ситуация, которая обусловлена ошибкой в коде и не влияет на выполнение команды.

Проверим наличие таблицы, выполнив запрос на чтение из этой таблицы.

 

Сформируем код запроса, скопируем его и вставим в http-сервис создания БД.

 

Аналогичным образом создадим другие таблицы и сформируем код создания БД, а также саму БД.

При этом код создания нашей БД (обработчик http-сервиса createdb.os) будет выглядеть примерно следующим образом

 

Данный код будет прекрасно работать в тестовой среде, однако будет непригоден для развертывания в производственной среде. Проблема заключается в том, что при создании строки соединения с СУБД мы указали физический путь к файлу БД. Так как мы заранее не знаем, на каком диске, в какой папке и под управлением какой операционной системы будет выполняться наше приложение, указание прямого физического пути к файлу скорее всего приведет к проблемам. В нашем случае, наиболее универсальным будет метод, использующий пути в стиле web. В нашем случае — это ~/db/, однако провайдеры СУБД не работают с такими форматами путей, поэтому разумным подходом будет хранение пути к СУБД в вышеуказанном формате, с последующим преобразованием в физический путь во время выполнения.

Для решения этой задачи, используем библиотеку HttpMeans, которая не входит в каркасную конфигурацию, поэтому подключим эту библиотеку "вручную".

Для этого, создадим подсистему БиблиотекаСредстваHTTP, общий макет типа ДвоичныеДанные с именем ИсполняемыеФайлыБиблиотекаСредстваHTTP, поместив его в вышеуказанную подсистему, а также в подсистему ИсполняемыеФайлыWebПриложения.

Скачаем последнюю версию библиотек c github’а, удалим из архива все dll, кроме HttpMeans.dll и поместим получившийся архив в макет.

Создадим общий макет типа ТекстовыйДокумент с именем appSettingsHttpMeans и добавим его в подсистемы БиблиотекаСредстваHTTP и СекцияAppSettingsФайлаWebConfig.

В соответствии с документацией, добавим в содержимое макета необходимый ключ, для регистрации библиотеки в OneScript.

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

Реализуем функцию, возвращающую открытое соединение к БД, примерно следующим образом

 

А также функцию, преобразующую виртуальный путь в физический

 

Создадим новые параметры соединения с СУБД с кодом DbConn, копированием параметров TestConn и заменим физический путь на строку {{ПутьКФайлуБД}}.

 

Сгенерируем необходимые ключи и вставим их в соответствующие макеты.

 

В нашем случае — это макеты connectionStringsПоУмолчанию и appSettingsПоУмолчанию.

Также изменим код обработчика http-сервиса createdb таким образом, чтобы он для создания соединения с СУБД использовал функцию ПлатформозависимыеФункции.НовыйСоединениеБД.

В дальнейшем, мы будем использовать ее во всех наших функциях, реализующих работу с БД.

Обмен данными между 1С:Предприятие и сайтом

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

У каждого объекта конфигурации, учавствующего в обмене (в данном случае — это справочники ВидыНоменклатуры, Номенклатура, документы — УстановкаЦенНоменклатуры, а также СпециальныеБлюда) создаются подписки на события ПриЗаписи, ПередУдалением для справочников и ОбработкаПроведения, ОбработкаОтменаПроведения для документов.

При измененении объектов, обработчики подписок формируют данные, необходимые для обмена в формате json и помещают их в очередь изменений.

Элемент очереди изменений представляет собой документ, который содержит признак вида изменений, а также данные об изменяемом объекте в формате json.

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

В случае неудачи, к примеру временного отсутствия связи с сайтом, попытка обновления будет предпринята при следующем запуске регламентного задания.

Для реализации данного механизма, методом Ctrl+C, Ctrl+V перенесем необходимые объекты в нашу конфигурацию и добавим их в подсистему RestoОбъекты1С.

Создадим общий модуль ОбменССайтом, куда поместим необходимые обработчики подписок на события, а также http-сервисы, которые будут обновлять данные на стороне сайта.

Пример создания обмена с сайтом

В качестве примера, рассмотрим процесс реализации обмена справочника ВидыНоменклатуры.

Создадим подписки на события с именами ОбновитьВидНоменклатурыНаСайте и УдалитьВидНоменклатурыНаСайте.

В качестве источника событий, укажем справочник ВидыНоменклатуры.

Первая подписка будет обрабатывать событие ПриЗаписи, которое возникает при записи нового элемента справочника или обновлении существующего элемента. Вторая подписка будет обрабатывать событие ПередУдалением, которое возникает перед удалением элемента справочника. Код обработчиков подписок представлен ниже:

 

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

 

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

Для выполнения обновлений на стороне сайта, создадим http-сервисы uc.os и dc.os, которые будут соответственно создавать новые или обновлять существующие категории, а также удалять категории, которые были удалены в учетной системе.

Для облегчения работы, в консоли работы с СУБД, создадим запрос, который создает новый элемент таблицы category, которая является представлением справочника ВидыНоменклатуры на сайте.

 

И выполним его.

Для просмотра результатов выполнения — создадим запрос, который получает запись из таблицы категорий, по определенному id

 

Как можно увидеть, запись с указанными нами параметрами была успешно добавлена в БД.

Для удаления категорий, создадим запрос, который удаляет запись в таблице с определенным Id

 

Установим значение параметра id таким же как при добавлении и выполним запрос.

Для проверки откроем запрос получения записи по id и выполним его.

 

Как можно увидеть, запись была успешно удалена.

Создадим обработчики http-сервисов uc.os и dc.os, используя автоматически-генерируемый код ранее созданных запросов.

 
 

Обновим web-публикацию 1С:Предприятие, добавив созданные http-сервисы.

В режиме предприятия, заполним значения констант ИмяХостаСайта (в нашем случае — localhost), а также ОтносительныйUrlСайта (в нашем случае — /Resto2/hs/).

Создадим элемент справочника ВидыНоменклатуры и через некоторое время посмотрим на очередь обновлений.

 

Проверим наличие категории на сайте.

 

Изменим наименование, а также, пометим элемент справочника к удалению.

Вновь просмотрим очередь обновлений и состяние объекта в БД.

 
 

Как можно увидеть, изменения в учетной системе успешно реплицируются на сайт.

Удалим элемент справочника и убедимся, что он исчез из БД сайта.

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

Вывод списка

Получение данных

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

Для тестирования нашего запроса создадим два документа, один будет прошедшей датой, а другой — будующей.

 
 
 

Дождемся завершения репликации данных на сайт и приступим к написанию запроса.

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

 

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

Для тестирования запроса, создадим три документа установка цен номенклатуры, один из которых будет будующим числом.

 
 
 

Затем, создадим и протестируем соответствующий запрос

 

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

Создадим и протестируем запрос, возвращающий вышеуказанную информацию для актуального документа-списка, скомбинировав ранее созданные запросы.

 

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

 

Отображение на странице

В макете главной страницы, отредактируем область СпециальныеБлюда так, что она примет нижеследующий вид:

 

В модуле http-сервиса, отредактируем функцию ВывестиСписокСпециальныхБлюд, в соответствии с внесенными изменениями:

 

Обновим конфигурацию и протестируем вывод.

 

Вывод меню ресторана

Фактически, меню ресторана — это список товаров (блюд), которые ресторан предлагает к продаже. Конечно, этот список может меняться со временем. Также, возможны такие ситуации, когда меню формируется на предстоящий период заранее. Как правило, меню группируется по видам (напитки, первые блюда, закуски etc.). Соответственно при выводе меню на сайте необходимо предусмотреть данную группировку. 

Объекты в учетной системе

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

Объекты на стороне сайта

В БД сайта, создадим таблицы product_lists и product_list аналогично тому, как это было сделано для документа СпециальныеБлюда (таблицы special_products и special_product).

 

Обмен данными между 1С:Предприятие и сайтом

Для организации обмена, создадим подписки обработки проведения и обработки отмены проведения аналогично тому, как это было сделано для документа СпециальныеБлюда. Также, создадим http-сервисы upl и dpl, аналогично тому, как это было сделано для других объектов.

Затем, необходимо опубликовать новые http-сервисы и обновить переопределения Url.

Вывод меню

Для простоты, порядок вывода категорий блюд, будет определяться кодом соответствующих элементов справочника ВидыНоменклатуры.

Получение данных

Получение данных из БД аналогично получению данных списка специальных блюд. Создадим и соответствующий запрос в консоли запросов, а затем перенесем его в функцию ПолучитьМенюРесторана.

 

Отображение на странице

Преобразуем область МенюРесторана в макете главной страницы таким образом, чтобы он принял нижеследующий вид:

 

Обновим конфигурацию, опубликуем вновь созданные http-сервисы, создадим несколько видов номенклатуры и распределим ранее созданные товары между ними. Затем, протестируем сделанные изменения. Меню ресторана будет отображаться примерно следующим образом:

 

Заказ столика

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

Схема обмена данными

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

Клиент заполняет данные формы и нажимает кнопку подтверждения заявки.

Заявка сохраняется в локальной БД сайта.

Клиент получает сообщение о том, что его заявка принята.

Учетная система запрашивает информацию о заявках и формирует соответствующие документы.

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

Соответствующий сервис сайта удаляет заявки, которые уже есть в учетной системе.

Создание заказа на основании данных web-формы

В исходном шаблоне, передача данных введенных клиентом осуществляется посредством отпраки post запроса с данными формы. Данный метод является стандартным и достаточно простым, однако при его использовании страница будет перерисована заново. Также, будут некоторые неудобства, связанные с выводом сообщения об успешном или неуспешном создании заявки. В нашем случае, при нажатии кнопки подтверждения мы будем формировать ajax запрос к http-сервису сайта, который будет создавать заявку в локальной БД сайта и возвращать результат этой операции. После выполнения запроса, пользователю будет выведено диалоговое окно с соответствующим сообщением. В серьезных проектах, данный функционал должны реализовывать разработчики frontend части, а мы должны пердоставить соответствующие http-сервисы, однако поскольку таких разработчиков под рукой не оказалось  — я позаимствовал идею и основу кода  у коллег из Novastar.

Отредактируем шаблон нашей страницы нижеследующим образом:

Создадим блок, соответствующий диалоговому окну

 

Подключим jQuery и добавим обработчик нажатия кнопки подтверждения заказа, который будет отправлять запрос с данными формы в формате JSON и выводиить соответствующее диалоговое окно.

 

Объекты на сайте

При помощи консоли запросов, создадим в БД таблицу order, которая будет отвечать за хранение заявок на резервирование.

 

Объекты в учетной системе

Для реализации данного функционала создадим документ ЗаявкаБронирования, который будет содержать информацию, введенную клиентом на сайте, а также идентификатор заявки на сайте.

Обмен данными

Создадим http-сервис no.os, который будет принимать введенные данные и сохранять в локальной БД.

 

Создадим http-сервис go.os, который будет возвращать заказы из БД сайта в учетную систему для импорта

 

Создадим http-сервис do.os, который будет удалять заказ с определенным идентификатором, после появления его в учетной системе

 

Создадим регламентное задание ПолучитьЗаявкиССайта, с нижеследующим обработчиком:

 

Обновим конфигурацию ИБ, опубликуем новые http-сервисы и протестируем функционал.

 
 
 

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

Создание галереи событий ресторана аналогично созданию списка специальных блюд. В учетной системе, события представлены справочником СобытиеРесторана, который аналогичен справочнику Номенклатура. Список событий на сайте формируется документом УстановкаСобытийРесторана. На стороне сайта, этим объектам соответствуют таблицы event, event_lists и event_list. Для обмена данными используются http-сервисы ue.os, de.os, uel.os, del.os.

Обратная связь

Реализация этого функционала аналогична реализации приема заявок на резервирование. На стороне учетной системы, обращения клиента представлены документом ОбращениеКлиента. На стороне сайта, данный объект представлен таблицей feedback. Для обмена данными используются http-сервисы cf.os, gf.os и df.os.  Для периодического получения обращений клиентов используется регламентное задание ПолучитьОбращенияКлиентов.

Итоговая структура БД сайта представлена на рисунке ниже.

 

Создание web-приложения OneScript

Поскольку в процессе создания и тестирования приложения мы добавили строку соединения с СУБД, а также библиотеку СредстваHTTP, нам необходимо полностью перевыгрузить приложение. Однако, поскольку учетная система и БД сайта уже содержат некоторые данные, перед полной выгрузкой приложения сформируем архив "прочие файлы" и поместим его в одноименный макет. Обновим конфигурацию и выгрузим ее в файлы. Затем, в режиме предприятия на всякий случай создадим архив нашего приложения. Далее обновим приложение с установленным чекбоксом Обновить приложение. Также необходимо заново добавить права на запись для папок db и img пользователю IUSR.

Протестируем созданное приложение.

Развертывание web-приложения.

Для развертывания в различных средах, могут быть использованы методики, описанные в статьях:

В нашем случае — развернем приложение на web-хостинге.

Заключение

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

Теперь о впечатлениях, полученных в процессе создания данной демонстрационной конфигурации:

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

 

Инструменты для работы с БД оказались достаточно удобными и вместе с автогенерацией кода сэкономили массу времени при разработке и отладке.

Механизм сравнения/объединения оказался удобным, для включения библиотек.

Механизм макетов также оказался кстати, так как не приходилось думать о размещении файлов.

Хранение конфигурационных файлов в формате yaml также оказалось очень удобным, ввиду возможности динамического добавления элементов и читаемого вида.

Конечно для создания web-приложений необходимы хотя-бы базовые знания html, css и javascript, поскольку небольшие правки практически неизбежны. Альтернативой является наличие отдельного специалиста по frontend.

Неудобным является необходимость программировать обмен для каждого объекта информационной базы, который должен быть отображен на сайте. В результате появляется большое количество http-сервисов с похожим кодом. Хотя этот код несложен и быстро создается, особенно с использованием автогенерации, все-таки это отнимает время и его создание является достаточно нудным занятием.  По всей видимости эту проблему можно решить, создав подсистему, в которой будет реализован обмен "типовых" справочников и документов, которую можно включать сравнением/объединением в новые проекты.

 

 

61 Comments

  1. Gureev

    Отличная статья!

    Единственный вопрос:

    Это хобби? Или os+web используется для решения реальных бизнес задач?

    Reply
  2. Alien_job

    Где можно пощупать результат и будет ли пример прикручивания оплаты?

    Reply
  3. blackhole321

    (2)Результат — по кнопке «Показать демо». Конфигурация — в аттаче к публикации. Код открыт. Можете развернуть у себя etc.

    Пример прикручивания оплаты — можно конечно сделать.

    Reply
  4. Alien_job

    (3) Спасибо, не знал про эту кнопку

    Reply
  5. blackhole321

    (1)Используется в паре небольших проектов.

    Reply
  6. iolko

    Все отлично и доступно. Можно ли данный функционал залить на рабочий хостинг? Т.е. полноценно использовать это решение.

    Так же есть ли вариант «прикрутить» платежные сервисы ? Допустим Сбер банк?

    Reply
  7. blackhole321

    (6)

    Можно ли данный функционал залить на рабочий хостинг? Т.е. полноценно использовать это решение.

    Да, конечно, только хостинг должен поддерживать asp.net

    Вот пример

    Так же есть ли вариант «прикрутить» платежные сервисы ? Допустим Сбер банк?

    Да. Каждая эквайринговая система предоставляет api (как правило — это POST-запросы + json), а также виджеты кнопок, для перехода на страницу оплаты (ввод номера карты etc.).

    Наверное таки надо сделать демо-пример оплаты 🙂

    Reply
  8. aximo

    очень интересная вещь!

    Reply
  9. Evil Beaver

    А конфигурация, генерирующая сущности БД — это она? https://infostart.ru/public/817239/

    Reply
  10. blackhole321

    (11)

    А конфигурация, генерирующая сущности БД — это она?

    Нет, это была первая версия.

    Вот эта

    https://infostart.ru/public/841785/

    Reply
  11. Evil Beaver

    (12) Заплюсовал, спасибо

    Reply
  12. amd1986

    Все красиво, главное вопрос трудозатрат и масштабируемости. Судя по ним все печально.

    Reply
  13. blackhole321

    (14)Что привело Вас к такому заключению?

    Reply
  14. amd1986

    (15)

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

    2. Сейчас куча требований от ya и google по сайтам, если их не выполнять, сайт будет в перде и тд. Интеграция с различными сервисами.

    3. Отказоустойчивость низкая.

    Reply
  15. blackhole321

    (16) Давайте по пунктам, если не возражаете:

    3. Отказоустойчивость низкая.

    Почему Вы так считаете? Что конкретно ее снижает по сравнению — ну пусть будет с битриксом (или приведите Ваш пример)?

    2. Сейчас куча требований от ya и google по сайтам, если их не выполнять, сайт будет в перде

    Какие же конкретно хитрые требования, которые трудновыполнимы в данном случае предъявляют яндекс и гугл?

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

    Опять таки непонятно, на основании чего сделан такой вывод. Пожалуйста разверните Вашу мысль, лучше с небольшим конкретным примером.

    Reply
  16. blackhole321

    (19)

    Я тоже не знаю нюансов

    Тогда предлагаю вычеркнуть этот пункт

    1.

    Механизмы автоматического бэкапирования.

    Мне кажется, что это никак не связано именно с отказоустойчивостью и тем не менее:

    Если Вы размещаете сайт на хостинге — то как правило данная функциональность уже в наличии. Если Вы размещаете сайт у себя — используйте штатные средства системы. И windows и linux позволяют производить резервное копирование файловых ресурсов без всяких проблем.

    Оповещение через смс и тд, когда сайт лежит.

    Аналогично с п. выше. Никакого отношения к отказоустойчивости не имеет. Самый простой и правильный вариант проверки работоспособности сайта, который используется и в таких системах, как System Center — это периодическая отправка тестовых http-запросов, желательно также и из сегмента сети клиентов. Соответственно создаете регламентное задание и вперед.

    — Ддос защита

    Если Вы размещаете сайт на хостинге, то как правило — она есть. Если у себя — и подчеркну это актуальная проблема, то наилучшим решением — будет покупка соответствующего hardware.

    Я скептически отношусь к встроенным в cms средствам защиты от DDoS атак и сомневаюсь, что приведенное Вами software может защитить от атак типа icmp storm etc.

    — Защита от взлома

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

    Reply
  17. amd1986

    (20)

    Если я не знаю именно(нет перед глазами списка), то это не значит что его нет. Требования есть — это факт. И у гугла и у яндекса. Например яндекс: https://yandex.ru/support/webmaster/recommendations/intro.xml#intro.

    Если сайт не будет работать, то спрашивать будут у вас. Вы будете чинить, а не хостер. А если данные сайта потеряются — вы будете страдать, а не хостер. Хостер далеко, вы рядом.

    Например самая модная штука: двухфакторная авторизация( по 2 параметрам — паролю и телефону.)

    Reply
  18. blackhole321

    (19)

    А потом я не смогу от вас соскочить, т.к. другой разработчик не сможет разобраться в вашей разработке и они выпишут огроменный счет.

    Это на мой взгляд какие-то надуманные страхи.

    Если мы ведем речь о сайте из статьи, где пяток (ну пусть будет 20) таблиц и одна страница — то найти разработчика, который не разберется будет сложно, хотя и возможно. Если мы говорим об большом и сложном проекте — то Вы и так не соскочите ввиду сложности проекта либо получите, как Вы написали, огроменный счет.

    Возьмем тот же самый битрикс. Очень много сайтов для серьезных клиентов сделано на нем. Я точно буду знать, что их решение работает.

    Вы не поверите, но на ASP.NET сделано не меньше сайтов для не менее крупных клиентов, достаточно взглянуть на stackoverflow или microsoft с Azure 🙂

    -Например клиент захотел функционал оплаты через банковские карты. Сколько будет стоить запилить такой функционал? В том же самом битриксе(и не только) это уже реализовано по умолчанию. Да ладно с этим. Как вы будете обходить закон ФЗ-54? Или интеграция с кладр. Или интеграция ФСН.

    Это все болезни начального этапа. Если инструмент удобный — то появится и все то, о чем Вы написали 🙂

    Кстати Вы полагаете, что функционал оплаты банковскими картами настолько сложен, что требует для своей реализации огромных трудозатрат?

    Как вы будете обходить закон ФЗ-54?

    А зачем его обходить? Вы полагаете, что скажем эквайринг Сбербанка, Яндекс Кассы или Робокасса не поддерживают требования этого закона?

    Reply
  19. amd1986

    (22)

    Надуманные страхи? Вы рассматриваете все со стороны разработчика. Клиентам(заказчикам) плевать на ваши суждения. Им главное приемлемый результат, как можно дешевле и меньшими рисками. Ваш пример в принципе не имеет конкурентных преимуществ для стороннего клиента. Если бы я был безденежный студент, который захотел бы себе запилить сайт — такой вариант подошел бы. Да и то, нужно 1С покупать, а это деньги.

    Более того, нахрена тут 1С? Здесь по сути нет никакого учета. Это все можно на сайте запилить. Но вместо этого, а давайте на 1С! Заплатим за него, сделаем одно узкое место(обмен)

    Reply
  20. blackhole321

    (19)

    Я правильно понимаю, что остальные вопросы отпали :)?

    Ваш пример в принципе не имеет конкурентных преимуществ для стороннего клиента.

    Неплохо-бы к этой фразе добавить три слова: по моему мнению

    Им главное приемлемый результат, как можно дешевле и меньшими рисками.

    Абсолютно верно. И в случае, когда у вас уже есть разработчики 1С, которые владеют предметной областью, а также имеют необходимые знания о бизнес-процессах компании и учетной системе, возможно более дешевым и менее рискованным будет вариант — заказать frontend у web-студии и сделать backend своими силами.

    Да и то, нужно 1С покупать, а это деньги.

    Мы не рассматриваем сферического клиента в вакууме. Предполагается, что у клиента уже есть учетная система на платформе 1С-предприятие. Соответственно сайт является частью учетной системы предприятия.

    Более того, нахрена тут 1С? Здесь по сути нет никакого учета.

    Ну хорошо, рассмотрим не примере конфигурации из статьи 🙂

    Скажем, у Вас есть ресторан, в ресторане Вы используете скажем 1С:Ресторан (подставьте название подходящей конфигурации). В учетной системе УЖЕ формируется меню. Вы предлагаете вводить его руками на сайте? Также у вас со временем могут меняться цены. Поступим аналогично? Скажем у вас появляются некие блюда со скидками, и их введем вручную?

    Наверное нам придется нанять человека, который все это будет делать?

    Ну и т.п. 🙂

    Reply
  21. blackhole321

    (25)

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

    Честно говоря — не в курсе. А подскажите пожалуйста, с какими cms есть штатный обмен в УНФ? Есть ли с woocommerce, opencart, может быть с magento?

    Даже уже в типовые конфигурации внедрена интеграция по commerce ML.

    Подскажите пожалуйста, почему периодически возникают различные публикации и статьи, использующие то прямую запись в БД , то вызовы API http-сервисов при помощи различных обработок и иных средств?

    — Вы хоть представляете сколько сделать серьезный проект с нуля?

    Допустим — да :).

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

    По моему никто и не предлагал писать с нуля Али Экспресс или твиттер (к тому-же системы такого уровня пишут так, что получается как с нуля). Давайте как-то определимся с размером проектов, которые мы рассматриваем.

    Чтобы не выдумывать, возьмем для начала пример из статьи, который является распространенным и реальным. Потом, если будет желание — можем проэкстраполировать на что-то более крупное :). И более того, никто не утверждал, что какая-либо другая система (битрикс, wordpress, допишите нужное) чем-то плоха, а вот то, что предлагается — это «серебряная пуля» и решение всех проблем.

    Собственно суть дискуссии в Вашем первом исходном тезисе —

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

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

    Так вот таки хотелось-бы увидеть от Вас аргументированный, относительно развернутый и конкретный комментарий того, на основании чего Вы сделали такое заключение.

    Если Вы это утверждаете — значит у Вас есть какие-то количественные оценки ну и Вы уже произвели сравнение и выявили все минусы.

    Вот и поделитесь этой информацией для начала, для данного конкретного случая.

    Думаю не только мне это будет интересно.

    Reply
  22. amd1986
    Reply
  23. Alien_job

    (27)

    извините что влезаю, можно пример?

    enterprise data и многие используют эту технологию

    Только собирался писать свой велосипед

    Reply
  24. blackhole321
    Reply
  25. blackhole321

    (21)

    (21)

    Требования есть — это факт. И у гугла и у яндекса. Например яндекс:

    Ну и? Какие там особенные требования, которые нельзя реализовать в сайте на простых html страницах?

    Например самая модная штука: двухфакторная авторизация( по 2 параметрам — паролю и телефону.)

    Сайт без двухфакторной авторизации будет понижен в выдаче или заблокирован?

    Это говорят вышеприведенные правила?

    Давайте-таки ближе к теме 🙂 Хорошо, что Вы нашли ссылку на рекоммендации.

    Reply
  26. CSiER

    (17) По пункту 1 в части «поддержка и расширение» коллега на текущий момент прав. Вы используете набор готовых компонент и свои наработки — если Вы перестанете поддерживать свои труды, то с очередным обновлением что-то может «пойти не так» и конечный пользователь останется один на один с данной проблемой. Ванскрипт могут перестать поддерживать, asp обновится и на текущую версию будет сложно найти хостинг и т.д. Другими словами, говорить про поддержку более распространенных решений проще именно ввиду наличия комьюнити. С другой стороны, если вспомнить историю php — комьюнити «дело наживное» 🙂

    Reply
  27. blackhole321

    (31)

    Вы используете набор готовых компонент и свои наработки — если Вы перестанете поддерживать свои труды, то с очередным обновлением что-то может «пойти не так» и конечный пользователь останется один на один с данной проблемой. Ванскрипт могут перестать поддерживать, asp обновится и на текущую версию будет сложно найти хостинг и т.д. Другими словами, говорить про поддержку более распространенных решений проще именно ввиду наличия комьюнити

    Полностью с Вами согласен, относительно существования такого риска. Этот риск так или иначе существует для любого продкта/системы. Несомненно, в данном случае он на порядки выше. Вопрос о том, принимать или не принимать этот риск думаю будет зависеть от баланса того, что Вы можете в итоге потерять и какие преимущества можете приобрести.

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

    Reply
  28. amd1986
    Reply
  29. blackhole321

    (33)

    Рад за вас. Да и за нас, есть куда продвигать ентерпрайс решения))

    Так вот оно что 🙂

    Вы рассматриваете проблему со стороны разработчика, я со стороны бизнеса. Король тот, кто платит, а не тот, кто делает.

    Почему же Вы НЕ являясь тем самым бизнесом, который платит Вам деньги говорите от его имени и пытаетесь решать, что ему нужно, а что нет? Может быть бизнес сам примет необходимые решения?

    Время отклика быстрее. Вы раньше узнаете о проблеме, вы раньше исправите проблему. Чем раньше исправите, тем меньше денег потеряете.

    Коллега, Вы путаете мониторинг состояния службы с отказоустойчивостью. Я не собираюсь Вас в чем-либо переубеждать. Если Вы считаете, что Ваше enterprise решение более отказоустойчиво, чем другие, но не можете внятно объяснить в каком месте, то пусть так и будет 🙂

    Без доработок, по commerce ML, в 1С придет заказ в УНФ. А этот заказ можно интерпретировать по разному уже на уровне 1С.

    Голый woocommerce без доп плагинов?

    Тема заказа столиков совсем не раскрыта. Как будем заказывать?

    Если брать текущий функционал, то ваш вариант дешевле(если трудозатраты на все меньше 50-60К). Но со стороны бизнеса этого функционала недостаточно. Если добавить этот функционал, то ценник будет уже больше, чем если бы использовать готовое решение. Поддержка будет больше.

    Какой функционал? Чатик? Наберите в google — бесплатный онлайн чат для сайта. Все, что Вам потребуется в дальнейшем — зарегистрироваться и добавить javascript виджета на свою страницу.

    Какой еще enterprise функционал Вы бы порекомендовали добавить?

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

    То есть, я должен заплатить 30К, возможно еще купить шаблон, разобраться в платформе, чтобы написать сайт, аналогичный демонстрационной конфигурации, только с чатом :)?

    Reply
  30. amd1986
    Reply
  31. blackhole321

    (33)

    В том числе и являемся.

    Ну понятно 🙂 Сами себе продаете свою систему.

    Без доработок, по commerce ML, в 1С придет заказ в УНФ. А этот заказ можно интерпретировать по разному уже на уровне 1С.

    woocommerce без плагинов нет.

    Зачем пытались ввести людей в заблуждение?

    Клиенту все равно как это называется. Ему важен работающий сайт 24 часа в сутки. Без мониторинга простой больше.

    Коллега, скажу прямо, Ваши посты по данному вопросу, равно как и по вопросу неких правил поисковых систем показывают Вашу некомпетентность.

    Поскольку и Вы и я изложили свои мнения — предлагаю завершить дискуссию, ввиду ее бессодержательности.

    Reply
  32. amd1986

    (37)

    Ну понятно 🙂 Сами себе продаете свою систему.

    Если я буду говорить, сколько и что — то будет ясно где я работаю и кто я. Я этого не хочу.

    (37)

    Зачем пытались ввести людей в заблуждение?

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

    (37)

    Коллега, скажу прямо, Ваши посты по данному вопросу, равно как и по вопросу неких правил поисковых систем показывают Вашу некомпетентность.

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

    Мы люди работающие с разных позиций, с разным опытом и разным мышлением.

    Reply
  33. cssprite

    (25)

    (25)

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

    Вы путаете причины и потребности, я думаю у «крупняка» потребности как у всех остальных субъектов бизнес сферы, но у них другие приоритеты.

    Тут скорей важно гарантированное покрытие задач за гарантированное время, и ГЛАВНОЕ, это благодаря тому, что эти решения тиражные, если все не взлетит, есть объяснение у принявшего решение, что это «интерпрайз решения за миллионы»,

    НО если получится заинтересовать ответственных менеджеров нестандартными решениями, вполне возможно в их среде и использование разработок «с нуля».

    Повторюсь, проблема даже не в том, что в разработках под заказчика дороже или дешевле, дольше или быстрее, а в том, что используя решения известные, принимающие решения менеджеры снимают с себя ответственность, типа «как все, так и мы» но «не взлетело»…

    Reply
  34. blackhole321

    (38)

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

    Коллега, давайте посмотрим:

    Вы:

    У них универсальный протокол обмена с сайтом. Подходит для платформы Битрикса, UMI, CS-Cart и других. Причем, как у Битрикса и у многих других, есть отдельные бесплатные модули интеграции, который еще больше расширяют функционал. Причем работающие не только по commerce ML. 1С сейчас очень сильно продвигает enterprise data и многие используют эту технологию.

    Я:

    Я правильно понимаю, что я в wordpress выбираю тему, устанавливаю плагин woocommerce, в 1С:Унф указываю url сайта м.б. логин, пароль и все? У меня появятся цены, товары, характеристики скидки и продажи автоматически попадут в 1С:Предприятие? А если у меня нет продаж, а нужно резервировать столики?

    Без доработок, по commerce ML, в 1С придет заказ в УНФ. А этот заказ можно интерпретировать по разному уже на уровне 1С.

    Собственно как изволите это трактовать?

    Заказ без плагина, т.е. без доработки как Вы понимаете никуда не придет. И товары не появятся. И если Вы посмотрите требования к настройке — там вплоть до правки php (возможно сейчас его уже вылизали).

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

    Какие запросы и куда Вы проверили? Изначально, Вы писали:

    Вы:

    2. Сейчас куча требований от ya и google по сайтам, если их не выполнять, сайт будет в перде

    Я:

    Какие же конкретно хитрые требования, которые трудновыполнимы в данном случае предъявляют яндекс и гугл?

    Что я должен аргументировать? Вы прочли рекоммендации, которые Вы нашли? Теперь можете ответить на мой вполне конкретный вопрос, который находится выше по тексту?

    Ну вот при всем моем к Вам уважении 🙂

    Reply
  35. amd1986
    Reply
  36. blackhole321

    (41)

    Если по woocommerce, то зависит от плагина. Если UMI, Битрикс, то передаются цены, товары, характеристики, заказы. Скидки смотря где. Скидки вообще сложная штука. Лучше готовые цены передавать, чем скидки.

    Коллега, Вам был задан конкретный вопрос, на который был получен конкретный ответ (см диалог), который не совпадает с действительностью.

    Я вам дал ссылку на официальную страницу Яндекс, где описаны требования. Мне вам ее что ли пересказать и дать краткое содержание?

    Пожалуйста прекратите флуд. Вам был задан конкретный вопрос, на который Вы внятно не смогли ответить.

    Reply
  37. amd1986

    (42) Ясно, по существу сказать ничего не можете.

    Коллега, Вам был задан конкретный вопрос, на который был получен конкретный ответ (см диалог), который не совпадает с действительностью.

    По функционалу ответил, что точно есть. Что спросили — то и ответил.

    Пожалуйста прекратите флуд. Вам был задан конкретный вопрос, на который Вы внятно не смогли ответить.

    Я ведь скинул вам выдержуку из доки. Там четно написаны рекомендации.

    Я выше писал уже, у нас разный взгляд и разный опыт. Что то вам доказывать бессмысленно. Живите с своем мире.

    Reply
  38. amd1986

    (39)

    Вы путаете причины и потребности, я думаю у «крупняка» потребности как у всех остальных субъектов бизнес сферы, но у них другие приоритеты.

    Тут скорей важно гарантированное покрытие задач за гарантированное время, и ГЛАВНОЕ, это благодаря тому, что эти решения тиражные, если все не взлетит, есть объяснение у принявшего решение, что это «интерпрайз решения за миллионы»,

    НО если получится заинтересовать ответственных менеджеров нестандартными решениями, вполне возможно в их среде и использование разработок «с нуля».

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

    Reply
  39. Perfolenta

    (31) ерунду говорите… точнее, очевидные вещи… майкрософт прекратила поддержку многих своих продуктов… все переучивались и переходили на другие продукты… 1С заставила семерочников переучиваться на восьмерочников, а бизнес менять работающие решения… с другими производителями ПО та же история… комьюнити ни на что не годится, если производитель закрыл тему… вообще, ничего нового не могло бы возникнуть, если бы все так рассуждали как вы… каждая технология и каждый продукт вначале ходит в детских штанишках, но некоторые из них как-то вырастают…

    если вы программист и вам лично на первый взгляд нравится новый язык или новая технология, пробуйте… и только попробовав решайте…

    Reply
  40. CSiER

    (45) сложно ответить на Ваш комментарий, потому что он больше похож на поток сознания (сплошные многоточия). По порядку:

    ерунду говорите… точнее, очевидные вещи

    — попробуйте таки определиться;

    майкрософт прекратила поддержку многих своих продуктов…

    — закрытие проприетарных проектов не относится к моему комменту и к теме обсуждения;

    все переучивались и переходили на другие продукты

    — очень спорно, отвечать смысла не вижу;

    1С заставила семерочников переучиваться на восьмерочников, а бизнес менять работающие решения

    — если сравнивать с dot net (java) и т.д. — здесь скорее «освоить новую версию», а не «переучиваться» (вендор тот же, предметка та же, материалы для перехода и т.п.);

    комьюнити ни на что не годится, если производитель закрыл тему

    — если исходники открыты, коммьюнити жива и нет правовых споров — то никаких проблем ;

    вообще, ничего нового не могло бы возникнуть, если бы все так рассуждали как вы

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

    каждая технология и каждый продукт вначале ходит в детских штанишках, но некоторые из них как-то вырастают

    — да, этот рост связан как раз с интересом людей (пользователей, разработчиков, инвесторов и т.д.). К чему эта фраза?

    если вы программист и вам лично на первый взгляд нравится новый язык или новая технология, пробуйте… и только попробовав решайте

    — на мой взгляд это спорный подход, если Вам он нравится — пользуйтесь.

    Reply
  41. maxx

    Крутяк

    Reply
  42. Perfolenta

    (46) если у Вас возникли проблемы с приемом моего потока сознания, то могли бы и не тратить время на ответ… 🙂 извините, если что… так бывает в жизни, я ему про Фому, а он мне про Ерему… последняя фраза относится к нам обоим… поговорили каждый о своем…

    Reply
  43. pvlunegov

    Автору огромное человеческое спасибо за титанический труд. Озадачился подобным веб-движком и нашел это чудо. Очуметь! Круто!

    Знаю на ты php, html, javascript, css, 1c. Писал сайта, одностраничники, конфигурации на 1с.

    МНОГО ЛЕТ ждал подобного решения на 1с, которое позволит в родном, РУССКОЯЗЫЧНОМ синтаксисе описать языком высокого уровня логику веб-приложения. Это чудо расчудесное.

    Я считаю, для рядового программиста, который по НЕОБХОДИМОСТИ осваивает чужеземные веб-технологии, русскоязычный синтаксис экономит время, мозг, нервы, память.

    — Не нужно в процессе работы переключаться между раскладками клавиатуры

    — Обмен данными на http-сервисах позволяет встроить обмен и отладку на стороне 1с, с трансляцией объектов запросов во встроенные объекты 1с.

    — Логику веб-приложения пишем на родном русскоязычном языке.

    — Есть поддержка, есть документация, есть библиотеки, есть плагины.

    Я считаю, данную технологию нужно развивать и добавлять функционала.

    В защиту технологии должен заметить:

    — WordPress, Bitrix и другие CMS на заре развития, несколько лет назад — были голыми системами с малой толикой сегодняшнего функционала

    — Доп функционал можно добавлять постепенно, плагинами, библиотеками и др.

    — Русскоязычный синтаксис с лихвой компенсирует все перечисленные противниками малые недостатки.

    Как программист, освоивший множество смежных веб-технологий, заявляю — моя любовь к платформе 1с горит в сердце незатухающим огнем. Готов тратить время, ресурсы на развитие подобного проекта.

    Reply
  44. pvlunegov

    1с это интерпретируемый язык высокого уровня абстракции. Разработка такового языка делается для:

    — быстроты и удобства использования ПРИКЛАДНЫМ программистом (тот, который реализует бизнес-логику в рамках языка)

    — Основная черта высокоуровневых языков — это абстракция

    — разработаны для платформенной независимости сути алгоритмов

    — Зависимость от платформы перекладывается на инструментальные программы — трансляторы

    В данном решении выбран язык высокого уровня абстракции — 1с, известный прикладным программистам

    1с:

    — обладаем русскоязычным синтаксисом

    — структура языка похожа на осмысленные предложения русского языка.

    — при беглом прочтении прикладным разработчиком, суть программы становится ИНТУИТИВНО ПОНЯТНОЙ

    это обеспечивает:

    — экономию времени на прочтение и улавливание СУТИ кода на языке

    — быструю разработку, не вдаваясь в подробности реализации конкретных механизмов взаимодействия.

    Что дает данная разработка:

    — экономятся денежные ресурсы предприятия

    — вместо программиста php, веб-программиста, используется квалифицированный 1с-программист с начальными знаниями функционирования веб-сайтов

    — используется встроенные механизмы 1с-платформы для реализации обмена данными и отладкой на стороне 1с

    — для создания сайта используется русскоязычный синтаксис высокой степени абстракции. Это позволяет абстрагироваться от заучивания низкоязыковых ИНОСТРАННЫХ конструкций, использовать ИНТУИТИВНО ПОНЯТНЫЙ СИНТАКСИС при разработке веб-приложения.

    Reply
  45. pvlunegov

    Многие противники, которые выступают против данной технологии приводят кучу аргументов, которые легко опровергаются.

    НО ОНИ НЕ ПОНИМАЮТ СУТИ:

    — 1script сделан для УДОБСТВА ПРОГРАММИСТА.

    — РУССКОЯЗЫЧНЫЙ СИНТАКСИС языка высокого уровня ИНТУИТИВНО ПОНЯТЕН РУССКОМУ разработчику.

    — Абстракция позволяет АБСТРАГИРОВАТЬСЯ от конкретной реализации метода/функции с помощью технологии MVC (Модель, Представление, Контроллер).

    Знаете такое МНОГОЛЕТНЕЕ явление — священные войны между программистами ?

    Выходит новый язык программирования и начинается Священная война между адептами старых языков и нового.

    Суть войн заключается в следующем:

    — Какой язык лучше

    — Какой язык круче

    — Какой язык быстрее

    — Какой язык ПОНЯТНЕЕ

    И по мере развития НОВОГО языка, он все больше обрастает фишками, последователями, библиотеками.

    Все просто — новый язык НРАВИТСЯ программистам по тем или иным причинам.

    и дело вовсе не в ПРИБЫЛИ, ЗАРАБОТКЕ, ПОДДЕРЖКЕ. Все это — ничего не значит в СВЯЩЕННЫХ ВОЙНАХ языков.

    Точно такую же Священную войну в миниатюре разыграли противники данной технологии.

    От себя скажу, что мне НЕ НРАВИТСЯ php, c javascript имею дело по принуждению (выбора нет).

    Если появится возможность ЗАМЕНИТЬ их на язык высокого уровня абстракции, то с удовольствием это сделаю, несмотря ни на что.

    Что касается ДЕНЕЖНОЙ реализации.

    Можно написать ПРостой сайт с интеграцией с 1с.

    При наличии времени и команды можно реализовать веб-морду к любой типовой конфигурации 1с и продавать это дело отдельно!

    Reply
  46. blackhole321

    (49)

    Готов тратить время, ресурсы на развитие подобного проекта

    Ну дык при соединяйтесь :), код, в том числе и движка — открыт.

    Reply
  47. Aleksey81

    Очень не хватает мануала, позволяющего за полчаса запустить ваше решение и оценить его возможности.

    Нет ли где информации, как имея конфигурацию cf, платформу с настроенным вебсервером — запустить ваш сайт?

    Reply
  48. blackhole321

    Здесь подробно описана настройка web-сервера

    https://infostart.ru/public/789679/

    Это описание базовой конфигурации. Здесь же описано как выгружать приложение

    https://infostart.ru/public/841785/

    Здесь описана установка на linux

    https://infostart.ru/public/794882/

    Reply
  49. AlexB.

    Правильно ли я понял, что, чтобы достать данные из базы данных, не получится пользоваться удобной консолью запросов 1С? Нужно писать руками запросы к используемой базе данных?

    Reply
  50. blackhole321

    (55)

    Правильно ли я понял, что, чтобы достать данные из базы данных, не получится пользоваться удобной консолью запросов 1С? Нужно писать руками запросы к используемой базе данных?

    Если Вы имеете ввиду конструктор запросов — его нет, нужно писать руками selecy from ….

    Reply
  51. for_sale

    (24)

    Я правильно понимаю, что остальные вопросы отпали :)?

    У меня те же самые вопросы и они никуда не отпали. Я смотрю в эту статью и вижу велосипед, который, конечно же, ездит, возможно, даже хорошо ездит, но непонятно, для чего его было изобретать, если велосипедов много. Т.е. как хобби и просто так — конечно, интересно покрутить это всё. Но как коммереское решение? Серьёзно? Свой битрикс-вордпресс-джумла на 1С с преферансом и поэтессами?

    Даже посмотреть на размер текста этой статьи — я быстрее сайт на вордпрессе примерно похожего содержания разверну, чем это всё прочту. А это не худлит, это ещё и осмыслить надо и повторить! Сколько на это уйдёт? Неделя? Какова себестоимость такой разработки?

    Следующий момент, вы пишете, что у вас там 20 таблиц и можно легко найти того, кто в этом разберётся. Это отлично, только я как клиент не хочу искать кого-то, кому надо будет разбираться в этом всём. Я хочу чтобы человек сразу сел и принялся за доработку, уже зная систему. Единственный человек на рынке, кто знает эту вашу разработку — это вы, программист 1С, который возьмёт с меня от 1500 в час. А тех, кто знает вордпресс-битрикс — тысячи, на любом фрилансе по три копейки продаются.

    Дальше — мне вот это всё хозяйство чтобы завести, нужно ещё и сервер 1С купить, коробку, СУБД, с лицензиями и прочим весельем, развернуть свой сервер или покупать спецхостинг и т.п. Во сколько это выльется? Обычных ПХП-хостинг для битрикса-вордпресса стоит от 1200 в год — купил, включил, загрузил, забыл. И даже не знаешь таких страшных слов, как ИТС, лицензии, анкеты и проч.

    Даже если у меня уже есть база 1С, из которой надо грузить сайт, всё равно готовые решения будут стоить в разы дешевле — для битрикса уже куча готовых коннекторов, для вордпресса-джумлы можно накидать на коленке за пару часов просто на структуре их БД (это из личного опыта).

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

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

    Reply
  52. blackhole321
    Reply
  53. blackhole321

    (57)Вот Вам примеры:

    https://infostart.ru/project/1088172/

    https://infostart.ru/project/1087417/

    Готовы сделать два проекта за 4 часа ;)?

    Reply
  54. acanta

    А вообще кто нибудь получал оплату за проекты в тендере?

    А то тут курсы есть по выстраиванию отношений с клиентами в том числе.Может сначала надо купить курсы, а только потом участвовать в конкуренции за проекты?

    Reply
  55. for_sale
    Reply
  56. for_sale

    (59)

    У меня есть типовой обмен 1С и битрикс, который не допиливается и работает. Что я делаю не так? 🙂

    Reply
  57. blackhole321

    (62)Ну а у других надо допиливать 🙂 Так Вы сделаете два проекта за четыре часа :)? Или внедрите типовой обмен так, чтобы было как у Вас?

    Reply
  58. for_sale

    (63)

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

    Reply
  59. blackhole321

    (64)

    Нет, Вы не правильно поняли (как и предыдущий коллега). Речь идет о том, что когда Вы что-то утверждаете — будьте готовы к тому, что Вас попросят обосновать Ваше утверждение. Не более того 🙂

    Я же не тянул Вас за язык, делать различные утверждения, а при попытке выяснить, на чем они основаны, Вы начинаете злиться 🙂 и путать простой эксперимент с какими-то продажами, передергиваниями и сокрытием какой-то информации.

    P.S.

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

    Reply
  60. for_sale

    (65)

    Злиться?))) На что мне злиться?))) Это вы после простых вопросов о вашем детище начали злиться, на одни вопросы не отвечаете, на другие даёте какие-то выдернутые из контекста данные. Я ведь как раз об этом и говорю — если вы пишете статью, то будьте готовы, что вам зададут вопросы. Вопросы вам задали, а вы говорите — «Нет, не буду отвечать, просто моё решение экономически выгоднее всех на свете!» И пытаетесь теперь перевернуть всё с ног на голову, будто это кто-то делает утверждение и это он обязан доказывать. Хотя утверждение делали вы («моё решение как минимум такое же выгодное, как существующие»), но доказать его даже не пытаетесь, сразу перейдя к манипуляциям.

    Вы тогда уж определитесь — это «простой эксперимент, не путайте с продажами» и тогда вам больше спасибо, эксперимент действительно хороший и подробный. Или же это невиданное доселе суперкоммерческое решение, которое разорит битрикс и всех остальных — тогда вы мне, как потенциальному клиенту, ни на один вопрос не ответили по существу))

    Reply
  61. blackhole321

    (66)

    Вы вроде как откланялись уже 🙂

    Вы тогда уж определитесь — это «простой эксперимент, не путайте с продажами»

    Вы аннотацию к статье читали :)?

    Там написано:

    В статье изучаются возможности http-сервисов OneScript по созданию web-приложений на примере сайта ресторана

    Есть какие-то двусмысленности :)?

    Не согласны с моим мнением о том, что это можно использовать для создания простых сайтов и это сопоставимо по трудозатратам с адаптацией темы под wordpress?- Конструктивно аргументируйте.

    Это вы после простых вопросов о вашем детище начали злиться, на одни вопросы не отвечаете, на другие даёте какие-то выдернутые из контекста данные. Я ведь как раз об этом и говорю — если вы пишете статью, то будьте готовы, что вам зададут вопросы. Вопросы вам задали, а вы говорите — «Нет, не буду отвечать, просто моё решение экономически выгоднее всех на свете!»

    Коллега, какие конструктивные вопросы Вы задали и получили ответ, про экономическую выгоду?

    Ну, …., даже не знаю :).

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *