1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки

Публикация № 1051234 22.04.19

Приемы и методы разработки

интеграция python vue.js django rest framework

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

В этой статье мы рассмотрим поэтапное создание одного вэб-проекта, начиная от 1С и заканчивая этой же 1С.

 
 Лирика

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

  • Статья не претендует на best-practice. Описано все на примере одного проекта со своими нюансами и допущениями.
  • Да, можно сделать более технологично, улучшить часть моментов, что-то доавтоматизировать и т.д. 
  • Я пытаюсь показать, что иногда простую вещь не нужно делать сложно, как это часто нам пытаются навязать "конторы с мировым именем", томными вечерами изобретая дизайн и адаптируя верстку сайта-одностранички. 

Схема

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

Дано:

  • Сервер 1С, расположенный в офисе компании.
  • VPS, арендованный у хостинг-провайдера. На нем будет размещен итоговый сайт, БД сайта и бэкенд на DRF.

Если вы поднимаете VPS с нуля и он у вас тоже будет на debian 9, рекомендую мой мануал по развертыванию LEMP + DRF.

В нашем случае, было придумано так:

  1. Раз в день, в определенное время, из 1С выгружается информация о товарах, ценах и остатках + сервисные справочники. Она сохраняется локально на сервере в формате XML, рядом кладутся изображения номенклатуры.
  2. Получившиеся файлы загружаются на VPS по протоколу FTP, тем же регламентным заданием в 1С.
  3. Раз в день, в определенное время, на VPS происходит обработка новых XML файлов и загрузка информации из них в СУБД. Загрузка производится средствами python. СУБД - MariaDB 10.1
  4. К той же базе подключено приложение на Django + Django REST Framework. Задача DRF - по запросу отдавать на фронтенд нужную информацию из базы.
  5. Фронтенд на Vue.js. Его задачи - отрисовать сайт, общаться с бэкэндом на предмет: авторизации, получения информации о товарах и добавления новых заказов.
  6. DRF, получив новый заказ, отправляет ответственному за клиента менеджеру письмо с уникальным ID заказа.
  7. Менеджер открывает в 1С обработку, вставляет в нужное поле полученный ID и заказ загружается, создается документ в 1С.
  8. Менеджер управляет пользователями на сайте из 1С. Создает новых пользователей, назначает им тип цены и т.д. Общение 1С и DRF по части пользователей происходит через HTTP POST и GET запросы. Управление пользователями на самом сайте становится ненужно, а значит и админку для этого писать не придется.

Как видите, ни разу не прозвучало слово "дизайн". Это потому, что сайт у нас в первую очередь функциональный, и только потом - презентативный. Его красивость мы обеспечим бутстрапом, спецификой фреймворка и популярной оболочки для него - vuetify. Забавный факт вам скажу - попробовав эту связку один раз, вы будете видеть аналогичный дизайн везде. 

Нарисуем нашу схему и приступим уже к реализации.

 


Часть 1. Выгрузка из 1С и загрузка на FTP

 

Основная задача, которая стоит перед этим этапом - выгрузить так, чтобы в дальнейшем не заниматься каким-либо изменением этих данных. Каждая дополнительная операция на других слоях разработки - увеличение времени обработки, увеличение нагрузки и размазывание области траблшутинга. Поэтому мы должны сформировать такие XML, чтобы потом их можно было просто взять и "вставить" в нашу БД на VPS.

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

Выгрузка изображений

Наверняка, картинок у вас много. У нас порядка 30 тысяч. Если положить их все в один каталог, вы его потом с трудом откроете. Возможно, вы уже замечали, как некоторые сервисы или CMS хранят картинки в подпапках из одной двух букв, по 100-1000 штук в каждой. Сделать такую структуру средствами 1С не сложно.

 
 Код 1С

Получается, что для номенклатуры с GUID bf0d2eb7-5caa-11e3-a144-001e6711eb85 картинка будет лежать сначала в папке b/, потом в папке f/ и только потом будет сама картинка bf0d2eb7-5caa-11e3-a144-001e6711eb85.jpg. С увеличением числа изображений мы просто увеличиваем в этом коде наш уровень вложенности до 3-4-5 каталогов. В XML же мы сразу пишем путь, по которому эта картинка будет доступна на сайте.

<ImagePath>/static/images/b/f/bf0d2eb7-5caa-11e3-a144-001e6711eb85.jpg</ImagePath>

Числа с плавающей точкой

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

 
 Код 1С

Иерархические справочники

С одной стороны, структура справочника номенклатуры в самой СУБД в любом случае будет храниться двумерно, с другой - распарсить питоном иерархический XML в список, а потом этот список обратно преобразовать в иерархический объект - не сложно. Поэтому выгружаем иерархически. Получаем запросом список каталогов, формируем древо значений через Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией) и обходим

 
 Код 1С

Блок Info в каждом XML

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

<?xml version="1.0" encoding="UTF-8"?>
<Root>
	<Info>
		<Key>PriceValues</Key>
		<Description>Значения для типа цены - 1234</Description>
		<Argument>000001234</Argument>
	</Info>
	<Items>
		<Item>
			<ID>bb5b71eb-3915-11e7-80b7-001e6711eb85</ID>
			<Value>899.99</Value>
		</Item>
        ...
	</Items>
</Root>

И на той стороне уже увидят, что в каждом файле есть некий ключ Key, который можно использовать как идентификатор - что это за файл и как его обработать. А если появится программист, который будет что-то менять в выгрузке, он увидит этот блок и (будем надеяться) поймет, что это важно.

Выгрузка на FTP

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

Все это находится в двух корневых каталогах: IMAGES для картинок и XML для всех получившихся XML-файлов.

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

Сразу предостерегу вас - не используйте для этих задач встроенные механизмы FTP-клиента 1С. Он ужасен, он неэффективен, он ненадежен. Проверено. Вместо него в windows лучше воспользоваться сторонним приложением, вызывая его через COM-объект. Например, WinSCP.
Просто посмотрите, насколько лаконичнее и, поверьте, эффективнее, становится код в 1С. Приведу его полностью.

 
 Выгрузка на FTP средствами WinSCP

 

Итог

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


Часть 2. Загрузка в СУБД

В принципе, вовсе не обязательно, чтобы данные из XML были загружены в СУБД именно с помощью pyhton. Этот этап полностью изолирован от всех остальных, он чисто сервисный. Я выбрал python потому, что понимал, как это нужно сделать. Основу скрипта составит библиотека SQLAlchemy. Для ее работы сначала мы создадим модели наших таблиц. Делать это мы будем декларативно, потому что мы не хотим заниматься ручным созданием таблиц в нашей базе, SQLAlchemy сделает это для нас. От нас на подготовительном этапе потребуется только создать саму базу и пользователя для работы с ней.

 
 Пример модели Goods (Товары) 
 
 Пример модели Prices (Цены)

Обратите внимание на блоки init в каждой модели. Дело в том, что при чтении наших XML, False, True, Null будут представлены для python в виде текста и для дальнейшей работы с этими полями уже из самой БД нам нужно преобразовать их в типы, понятные python. Поэтому мы и проверяем, что если поле == 'null', то эквивалентом для python будет тип None и т.д. Если этого не сделать, мы столкнемся с проблемой при загрузке, когда попытаемся в поле БД с типом TINY_INT засунуть строку с текстом 'False'.

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

Чтобы не заниматься прописыванием методов и полей в коде загрузки, сделаем некий словарь, где по ключу в XML будем определять, какие там поля и как они должны быть загружены в БД.

 
 Описание Dict

Для того, чтобы получить данные из наших XML не сплошным текстом, а неким объектом, воспользуемся библиотекой lxml.

 
 Чтение XML 

Когда механизм чтения готов, можно приступать к самой загрузке.

 
 Главный метод, которым все и загружается
 
 Код _sql.py

Вы могли заметить, что вызов загрузки также вызывает очистку всех таблиц в базе данных. Да, это так. Специфика нашего проекта позволяет нам просто взять и удалить данные из всех таблиц, в которые мы собираемся что-то загружать. Поэтому мы не тратим время и ресурсы на какую-то сложную логику по определению уже существующих данных, их соответствие загружаемым и т.д. (ON DUPLICATE UPDATE создаст дополнительный слой операций) Мы точно знаем, что перед загрузкой таблица будет пуста и точно знаем, что нужно загрузить абсолютно все. А это, в свою очередь, позволяет нам формировать INSERT-команды пачками по 100-1000 штук и засылать в commit. Таким образом, загрузка данных общей протяженностью около 400.000 строк занимает секунд 15. Если в других таблицах нашей БД (например, в заказах) будут использоваться ключи от очищенных таблиц - они будут оставлены как есть (потому что перед загрузкой мы отключаем для БД ForeignKeyChecks) и после загрузки снова станут актуальны.

Итог

Данные загружены в СУБД, теперь с ними можно работать.


Часть 3. Django, REST Framework

Прежде чем начать, рекомендую обзавестись удобным инструментом для отладки HTTP-запросов - Postman

С помощью него вам будет гораздо удобнее отлаживать свои запросы к API.

Models

Django (Джанго), как и SQLAlchemy, в своей работе тоже использует ORM-принципы, поэтому для того, чтобы научить наш бэкенд понимать таблицы в нашей БД, нам снова придется описать все модели. По одной на каждую таблицу. Но, в отличие от загрузки из XML, тут мы также будем описывать такие модели как "Profile, Order, OrderItems". Опять таки, мы ничего не будем создавать непосредственно в СУБД, механизмы Django сделают это для нас (python manage.py makemigrations и pyhton manage.py migrate).

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

 
 И снова пример для Goods и Prices
 
 А это уже новая таблица - Profiles
 
 Ну и последние две таблицы - Orders и OrderItems

 

Serializers и Views

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

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

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

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

 
 Класс для отображения товаров в прайсе

Тем, кто плотно занимается 1С, эта логика будет вполне понятна. Есть некий отчет view, написанный программно на построителе. Есть запрос - queryset, есть фильтры и отборы построителя, которые могут применяться, а могут и не применяться - search_fields, filterset, есть поля сортировки - ordering_fields. Ну и, конечно, наш построитель - serializer_class. Все это, естественно, несколько сложнее, но любое понимание сложного начинается с раскладывания его на простые части.

Выбор полей для нашего отчета - это как раз к сериализации.

 
 Вот так выглядит наш класс MainGoodsSerializer

И, естественно, мы можем эти поля модифицировать еще на этапе получения.

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

id_brand = SvcBrandsSerializer(required = False)

Который очень прост 

class SvcBrandsSerializer(serializers.ModelSerializer):
   class Meta:
      model = SvcBrands
      fields = ('id', 'name')

Если мы еще раз взглянем на нашу модель товаров, то увидим

class MainGoods(models.Model):
    ...
    id_brand = models.ForeignKey('SvcBrands',
                                 models.SET_NULL,
                                 related_name = 'goods',
                                 db_column = 'id_brand', blank = True, null = True)

Т.е. поле id_brand - это ссылка, ForeignKey на соотв. запись в таблице SvcBrands, one-to-many relational field. Поэтому на этапе сериализации мы можем при получении объекта автоматически получить не только ID нашего брэнда, но и все остальные сериализуемые поля из связанной таблицы. И view отдаст нам данные не в виде представления поля:

id_brand: '123123'

А уже как объект:

id_brand: {
   id: '123123',
   name: 'SAKURA'
}

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

 
 ViewSet профиля

И запрос\модификация к нашим моделям Order и OrderItems:

 
 ViewSet заказов и товаров заказа

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

Авторизация пользователей

Авторизацию мы полностью отдаем на расширение для Django - Djoser. Как только мы зарегистрировали его в своем конфиге, добавили его url в urls.py - нам уже доступны методы управления пользователем через HTTP-запросы. Мы можем получить authorization_token, отправив правильный POST-запрос с логином\паролем на нужный url, а потом добавлять этот токен в наш ajax.headers, и наш бэкенд будет видеть нас как авторизованного пользователя. У Djoser нет механизмов token_expiration, однажды выданный пользователю токен будет валиден, пока его не уничтожат или пока пользователь не запросит для себя новый токен. Token_expiration можно реализовать самостоятельно, но для нашего проекта в этом не было необходимости.

Отправка почты

То, что мы используем DRF, никак не ограничивает нас в использовании всех остальных возможностей python. Наши "представления" (Views) вовсе не обязаны ссылаться на какие-то модели и сериализации. Мы можем объявить любой удобный для нас url и привязать к нему свою процедуру обработки. Так и происходит в нашем случае с отправкой почты.

 
 urls.py нашего API
 
 Соотв. view из views.py
 
 Код отправки email

 

Итог

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

Для входа в Django и DRF я рекомендую пройти начальный курс на youtube. Например, вот этот русскоязычный канал. Потратьте на него недельку и вы уже будете понимать, что вы делаете и что вам нужно сделать. Там же вы найдете и практические применение написанного бэкенда при разработке фронта на том же Vue.js 


Часть 4. Фронтенд и Vue.js

До этого я не сталкивался с фронтенд фреймворками на javascript. Только всякие CMS типа джумлы, ворпресса или битрикса. Я не стал останавливаться на REACT.js или Angular.js в виду того, что Vue позиционирует себя как очень простой, легкий как в работе, так и в освоении инструмент. Достаточно понять его логику, пройти пару туториалов и вы готовы начинать. Все ваши дальнейшие вопросы будут скорее касаться непосредственно JS, а не самого Vue. И в некоторых случаях ваша идея уже будет иметь практически готовое решение в виде компоненты для Vue. 

При выборе инструментов помимо Vue, я остановился на популярном Material Design компонентном фреймворке Vuetify. Здесь вы найдете практически все необходимые компоненты, чтобы нарисовать ваш сайт.

Для хранения и модификации глобальных переменных, я использовал Vuex. Тоже общепринятая практика, рекомендуется один раз понять, как им пользоваться и больше не искать ответ на вопрос "а как взять переменную А и чтобы она была единой для компонента Б1 и Д2? И чтобы оба компонента реактивно реагировали на ее изменение?"

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

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

  • template
  • script
  • style *scoped

В template вы расписываете визуализацию вашей страницы. С использованием тэгов html или тэгов компонент.

 
 App.vue #template

В script - код вашего компонента, переменные, методы и т.д.

 
 App.vue #script

В style - css для каких-то элементов, если это необходимо. Если добавить scoped - эти css будут применяться только для элементов, описанных в данном компоненте.

 
 App.vue #style

Как вы уже, наверное, поняли, style - необязательный.

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

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

И больше всего кода тут всегда сконцентрировано в .vue-файлах. И то только из-за толстых template секций.

Если вас интересует, как же происходит общение с бэк-эндом. Очень просто - через ajax и jquery

 
 Выжимки из script компоненты PriceTable
 
 Простой пример POST запроса из секции script в компоненте NewAccount.vue

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

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

Как и в Django, development-mode Vue (npm run serve) позволяет реагировать на изменения в коде и автоматически обновляться отображение страницы в браузере. Т.е., вы сидите за двумя мониторами, в одном открыт ваш сайт на localhost, в другом IDE (pycharm, в моем случае). Вы что-то меняете в компоненте vue и это сразу визуализируется в окне браузера. Вы сразу видите результат. А еще для chrome и firefox есть расширение, которое в dev-mode на вашем сайте может показать прямо в браузере, в page-inspection, все ваши переменные отображаемого компонента. Поищите Vue.js devtools

Я не буду больше расписывать какие-то элементы с этого этапа, в конце концов, там все сводится к стандартной js-акробатике. Преобразование и манипуляция с данными, их обработка по событиям, хранение каких-то значений в local storage браузера и т.д.


Часть 5. Возвращаемся в 1С и заканчиваем

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

Сейчас нам нужно решить две вещи:

  1. Управление пользователями сайта из 1С
  2. Загрузка заказов с сайта в 1С

Управление пользователями

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

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

Мы больше не будем заниматься формированием каких-то XML, зачем, ведь у нас уже есть API, который готов обрабатывать HTTP-запросы.

 
 Код кнопки "Создать профиль"
 
 Код общего модуля "ОнлайнПрайс", часть процедур

Аналогично мы поведем себя и в случае с обработкой входящих заказов. У нас менеджер получает письмо, в котором сообщается, что клиент сделал заказ с сайта на сумму N, у заказа такой-то ID.

Менеджер копирует этот ID и вставляет его в поле обработки в 1С.

 
 Функция получения товаров заказа с сайта

На этом все, если фронтенд готов, можно начинать тестировать, а потом и работать.

Итог

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

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


Заключение

Если кого-то интересует, как оно в итоге выглядит - пожалуйста. Без авторизации сайт работает как публичное предложение.

Просьба не кидаться тухлыми яйцами, у меня тонкая ранимая натура (нет). У меня уже сейчас есть идеи, как сделать лучше там, как оптимизировать тут, улучшить безопасность здесь и т.д. Работа над сайтом будет продолжаться. Суть в том, что, зачастую, не все так сложно, как нам пытается преподнести подрядчик. Когда мы искали разработчика и озвучивали сроки с ценником (месяц за пятизначный), в одной компании мне ответили: "если вам где-то говорят, что оно стоит столько и готовы сделать это в такой срок - задумайтесь, это явно какие-то разводилы." Я более чем уверен, что опытный full-stack программист (без 1С) сделал бы все за этот месяц, сделал бы лучше и явно не за полмиллиона.

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

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

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

Да, Vue и DRF, по сути своей, тоже можно называть "конструктором для программиста" (фреймворки же) и они не идеальны, но на выходе вы получите проект, который будет работать так и только так, как вы его описали кодом. И ничего лишнего.

Ну а тем, кому еще и важен внешний вид и анимации фронтенда - рекомендую посмотреть, какое кунг-фу в нем исполняют на Vue.js некоторые опытные люди. Заметьте, там тоже говорят, что это все "просто".

 

В разделе для скачивания будет архив. В нем вы найдете:

  • Две обработки для 1С: 1. Выгрузка в XML и загрузка на VPS через FTP. 2. Загрузка заказа покупателя. Она еще умеет excel грузить, но это, как я и говорил, мы расширили функционал того, что уже было. Вырезать его мне лень, поэтому отдаю как есть.
  • Тексты общих модулей, которые мы используем для работы с API и для отправки почты.
  • Программа на python для обработки файлов XML и загрузки информации из них в БД. Исполняемый файл - load_xml.py
  • Шаблон-заготовка для Django + DRF. Можно скопировать, заполнить настройки, выполнить миграцию и разрабатывать.
  • Шаблон для Vue + Vuex + Vuetify. Сперва, конечно, нужно будет предварительно все проинсталлить через npm. Это шаблон к только что созданному проекту.

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

Наименование Файл Версия Размер
Архив с заготовками для Django, Vue и некоторыми обработками для 1С

.zip 84,27Kb
34
.zip 84,27Kb 34 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 133 22.04.19 10:07 Сейчас в теме
Хорошо что у меня нет возможности ставить минусы, иначе я влепил бы два.
Первый за англицизмы в статье, это просто какой-то русско-английский суржик двоечника. Что в статье, что на сайте.
Второй за символ хероллара в шапке сайте.
morin; rossoxa; +2 34 Ответить
2. rintik 19 22.04.19 10:39 Сейчас в теме
(1) Можете пояснить для тех кто плохо понимает англицизмы и суржик, что такое "хероллара"?
Maxanamoon; unknown181538; antonsat49; CnupT; biz-intel; jaroslav.h; md-grp; Kalam; for_sale; A_Max; +10 Ответить
9. for_sale 862 22.04.19 12:39 Сейчас в теме
(2)
Я тоже долго размышлял над данным суржиковым словом данного суржиконенависника. Даже подумал, было, что это такое имя. Ну типа, "ХероЛара Крофт, расхитительница гробниц". Может, человек не согласен таким отношением к гробницам? Или качество фильмов не нравится (тут я тоже согласен, что ХероЛара Крофт подошло бы лучше). Но потом я поиграл с ударением и решил, что, возможно, это такая рифма на "доллар", картинка с которым и правда нашлась в шапке сайта. Кейс клоузд.
unknown181538; user774630; Alien_job; +3 Ответить
3. Robbi 57 22.04.19 10:41 Сейчас в теме
Все, что в статье касается 1с - прошлый век.
Xml xls ftp зачем об этом всем писать, это чуть-ли не с начала 2000 в ходу
Про ftp в 1С - около 5 лет ежедневных выгрузок фото на ftp сайта раз в полчаса средствами 1С, ни одного сбоя, Самая простая и беспроблемная часть обмена всегда была.
tolya_kruglov; rderepin; +2 Ответить
5. riposte 336 22.04.19 11:22 Сейчас в теме
(3)
Основная причина, по которой мне не понравились механизмы FTP-клиента 1С - отсутствие синхронизации каталогов.
Вторая причина проистекает из первой - долго. Циклы.
Третья - тяжело было соорудить так, чтобы не ломалось. У меня, во всяком случае, не получалось, когда доходило до выгрузки изображений. Нет-нет, а через 1000-другую файлов начинало отваливаться, причем каскадно.

А с WinSCP все получилось очень просто и без бубна.
Тем не менее, как и было замечено, процедуры формирования XML и обмены по FTP уже со всех сторон неоднократно рассмотрены.
sashapere; bio.ejiki; +2 Ответить
11. SShipilov 22.04.19 13:32 Сейчас в теме
(5)
ья - тяжело было соорудить так, чтобы не ломалось. У меня, во всяком случае, не получалось, когда доходило до выгрузки изображений. Нет-нет, а через 1000-другую файлов начинало отваливаться, причем каскадно.

(8)

Господа, зачем прицепились к FTP. Может в текущей реализации это было удобнее всего. Зато какая клевая остальная архитектура. Статья очень познавательная.
Некоторые блоки правда напрашиваются на замену, но это придирки))
Автор, спасибо за хороший пример.
user811626; +1 Ответить
4. nbeliaev 22.04.19 11:05 Сейчас в теме
Отлиная работа, автор спасибо!
6. YPermitin 11219 22.04.19 11:56 Сейчас в теме
(0) создан монстр, но читать было интересно!
Stanislav1993; biz-intel; +2 Ответить
7. riposte 336 22.04.19 12:36 Сейчас в теме
(6)
Можно приоткрыть тему монстра? Ну... для саморазвития. Хотя бы тезисно.
YPermitin; +1 Ответить
10. YPermitin 11219 22.04.19 12:39 Сейчас в теме
(7) это была не критика, читать правда было интересно.

Просто когда читаешь статьи про фронтенд, то там столько технологий и фреймворков всегда понапехано, что для этой сферы норма. А для 1С это немного непривычно :)

Еще раз спасибо, пишите еще!
sashapere; +1 Ответить
8. smile2009 22.04.19 12:36 Сейчас в теме
Соглашусь, что FTP - прошлый век. Но автор показал нам возможность использования стека современных технологий. Однозначно плюс. Спасибо автору. Ждем новых статей!
12. zqzq 23 22.04.19 15:21 Сейчас в теме
Дизайн сайта конечно жесть :) В стиле WEB-2000. И конечно обязательно нужны мельтешащие видео и слайды в шапке. Лучше уж wordpress как по мне.

Но сама работа добротная проделана, раз всё работает.

В общем, я предложил - мне дали добро. Срок поставили - месяц. Справился за полтора, ибо замену картриджей никто не отменял.
Что-то мне подсказывает, что лучше выбрать специализацию не такую широкую, если про картриджи буквально было.
13. riposte 336 22.04.19 15:31 Сейчас в теме
(12)
В первоначально версии не было блока commercials (той самой полоски с рекламой вверху).
Я пытался объяснить, что добавление всех этих вещей - это уменьшение эффективного пространства самого приложения - таблицы с товарами, да и в принципе лишнее, учитывая предназначение сервиса. Но заказчик был неумолим.
Скорее всего, через пару версий корневая страница будет представлять из себя стандартную для многих магазинов простыню из баннеров, а сам функционал прайса будет вынесен на отдельную страницу безо всяких мельтешащих реклам и каруселей.
14. shard 261 22.04.19 15:53 Сейчас в теме
Предложенный алгоритм выгрузки данных на сайт (получение данных в 1с -> формирование xml и отправка на сайт -> разбор xml на стороне сайта и запись в бд) можно упростить, формируя текст запроса к субд непосредственно в 1с. Т.е. на выходе из 1с не xml, а текст с уже сформированными командами insert, который достаточно сразу отдать на выполнение субд (можно даже планировщиком).
ivan_luzinov; +1 Ответить
16. riposte 336 22.04.19 16:56 Сейчас в теме
(14)
Можно и прямыми запросами к API вносить изменения прямо из 1С. Сформировав нужный блок процедур на самом бэкэнде.
Но от выгрузки xml уже не избавиться.
Эти файлики еще один из клиентов забирает себе на сайт.

(15)
Не знал про него и даже как-то не натыкался. Спасибо, посмотрю.
47. philya 83 24.04.19 08:11 Сейчас в теме
(16) Можно сделать еще шаг. И подключить внешние источники данных к 1с и лить данные в базу данных сайта напрямую из 1с без всяких файликов.
15. bonv 1177 22.04.19 16:08 Сейчас в теме
(0)
Если вас интересует, как же происходит общение с бэк-эндом. Очень просто - через ajax и jquery
А почему jquery, а не Axios?
stilet; riposte; +2 Ответить
17. s_vidyakin 22.04.19 17:12 Сейчас в теме
(15) точнее - почему не cheerio+axios
Вообще можно было без питона обойтись, все на node.js сделать, но раз человек знает питон...
+ Можно из 1С сразу через веб-сервис отдавать zip-архив с таблицами в JSON и картинками, на сервере распаковать и раскидать в базу
19. nvv1970 22.04.19 23:14 Сейчас в теме
(17) объясните "танкистам": python - это ацтой? или просто node.js - это топчик? и ни на чем другом писать не стоит...
Пытаюсь сам развиться и подучиваю питон... Может не стоит?
21. s_vidyakin 23.04.19 09:09 Сейчас в теме
(19) Да нет, питон тоже топ) но он больше применяется в BigData, ИИ, обработке данных, научных исследованиях.
Веб тоже можно, но это не мейнстрим, скорее исключение. Вот pinterest, dropbox и инстаграм до сих пор на джанго крутятся.

Можно и наоборот, написать все на питоне, кроме Vue на клиенте, в питоне есть библиотека beautifulSoup4 типа cheerio для работы с html, сам сайты парсил ей
22. nvv1970 23.04.19 10:22 Сейчас в теме
(21) спасибо за разъяснения
питон начал учить ради аналитического интереса, в копилку и в помощь 1с, sql, bash, ps, oscript и т.п., да и просто ради разминки мозга. Уж больно синтаксис хорош ))
Вот и думаю, где в жизни мне он реально понадобится... Понадобится ли... За рамки бэкенда вылазить не планирую. А учить все языки на свете - моск лопается. Да и возможности для этого есть только при работе на предприятиях, когда за время можно не отчитываться. ((
24. riposte 336 23.04.19 10:34 Сейчас в теме
(22)
Ботов на нем удобно писать. И для телеграма, и для прочих мессенджеров\сервисов.
Ну и, собственно, эти боты могут применяться в самых разных сферах.
Сам хочу написать бота в телеграм под заббикс с пачкой скриптов на примитивные операции по управлению серверами - рестарты служб, перезагрузки и т.д. Но хотелок, как всегда, больше чем времени.
ivan_luzinov; Kalam; acanta; +3 Ответить
30. nvv1970 23.04.19 11:31 Сейчас в теме
(24) А как вам такое:
Например, реализуем некую примитивную игру, которую можно разделить на серверную и клиентскую части (общаемся удаленно по API - http-сервису). Пусть, условно, это будет карточная (дурак, 1000 и т.п.).
Цель - развлечение и тренировка реализации. Сервер общий, клиенты - разные (живые или битва ботов).
Все очень быстро и легко реализуется на 1С. Но... в интернет официально не выставишь... Лицензии )
Вот и думаю потренироваться питоном...
18. smirnovserg.s@gmail.com 22.04.19 19:23 Сейчас в теме
Автор, молодец!
Тоже ковыряю тему подобных интеграций Python + 1C и как раз публикация в тему.
Кстати, твой проект можно и на гитхаб залить ;-)
stilet; nvv1970; +2 Ответить
20. user1209201 23.04.19 08:09 Сейчас в теме
Я вообще рад за автора, если внедрение прошло и клиент получил инструмент. Даже полмиллиона можно ставить в ценник, так как гарантия стоит тоже денег, и не только во времени плотного сидения в отпуске дело, а в том, что менеджеры смогут удобнее барыжить ещё три-четыре квартала, пока можно плотно сидеть над решением без 1с, если на него будет заказ, а если не будет, то эти четыре квартала превратятся в, страшно сказать, ...? Четырнадцать?
23. Diversus 2197 23.04.19 10:34 Сейчас в теме
(0) Ваша модель имеет несколько серьезных недостатков:

1. Длинная цепочка и сложность взаимодействия
Есть старое доброе правило: чем больше в цепи разных звеньев, тем цепь становится не надежнее и если появится слабое звено, то цепь порвется. В вашей последовательности, если что-то отвалится, то весь механизм перестанет работать. Это плохо и это минус.
2. Только вы адекватно сможете поддерживать эту систему
Для работодателя это плохо. Если вы завтра захотите уйти из фирмы, то фирма может пострадать от того, что не будет специалистов, которые смогут восстановить работу или что-то дописать. Для вас это хорошо, для работодателя плохо. И после вас придет какой-нибудь разработчик и скажет, что все надо переписать и что он удивляется как это все работает до сих пор.
3. Оперативность
Ее просто нет. Выгрузка раз в день всех позиций может быть не достаточной. Зачем-то менеджерам нужна по сути самостоятельно запускать загрузку нужного заказа. Это время.

Зачем столько сложностей? У Вас может быть законный вопрос: "ну вот ладно, ты Виталий, тут критикуешь, а что можешь по существу сказать?". Вопрос правильный и сказать мне есть что.

Почему не написать в базе HTTP-сервис, который бы все это делал? При этом: все было бы оперативно, в одной базе, могло дописаться любым 1С-ником.
Я столкнулся с подобной проблемой, для нашего решения Управление IT-отделом 8 необходимо было сделать личный кабинет пользователей для создания заявок из веба. По сути - это ваша задача, только надо не заказы вносить сторонним пользователям, а задания в техподдержку, но тут нужна оперативность.
Как поступил я?
Я пошел по другому пути. Сделал возможность вносить HTML-файлы, файлы стилей, картинки, js-скрипты в отдельный справочник. Создал HTTP-сервис, который определял какой файл нужно показать в данный момент и отдаю по HTTP данные построенные в 1С.
Как выглядит скриншот результата можно увидеть во вложениях:

Получилось то, что хотел и можно посмотреть видео как оно работает:
https://youtu.be/yEjMlcnH3Vk

Если тема интересная могу отдельную статью написать.
Прикрепленные файлы:
kuzyara; user774630; kote; eeeio; riposte; acanta; +6 Ответить
25. herfis 428 23.04.19 10:56 Сейчас в теме
(23) Не до конца понятна фраза "Создал HTTP-сервис, который определял какой файл нужно показать в данный момент".
Это типа мини-вебсервер получился?
Ну а диплоймент из 1С - это такое... Не сказать, что киллер-фича.
26. Diversus 2197 23.04.19 10:58 Сейчас в теме
(25)
Не до конца понятна фраза "Создал HTTP-сервис, который определял какой файл нужно показать в данный момент".
Это типа мини-вебсервер получился?

Да, получается так. Apache или IIS присылает запрос, этот запрос разбирается, строится страница и выдается HTTP-ответ.
Причем странички можно изменять "на лету" в режиме предприятия.
27. herfis 428 23.04.19 11:18 Сейчас в теме
(26)
Причем странички можно изменять "на лету" в режиме предприятия

Каким именно образом? При записи "пушатся" на сервер через какой-то API вашего сервиса? Или каким-то более "рабоче-крестьянским" методом?
29. Diversus 2197 23.04.19 11:28 Сейчас в теме
(27)
Каким именно образом? При записи "пушатся" на сервер через какой-то API вашего сервиса? Или каким-то более "рабоче-крестьянским" методом?

По сути, вся логика построения странички вынесена в справочник в поле "Алгоритм заполнения". Там код на языке 1С, этот код строит страничку при поступлении запроса. Если этот алгоритм заполнения мы поменяем в режиме предприятия, то изменения применяться сразу же и сервис начнет отдавать новый результат.
Этот код так же может взаимодействовать с остальными частями конфигурации.
Например, есть веб-форма новое задание, пользователь нажимает на кнопку "Отправить", HTTP-сервису передается POST-запрос, который он обрабатывает, читает значения реквизитов и создает новое задание кодом на 1С (закладка "Алгоритм заполнения").
31. riposte 336 23.04.19 11:32 Сейчас в теме
(23)
Кстати, не знал что 1С так может. В свое время дико раздражал факт, что нельзя предоставить нелицензируемый доступ к какой-то базе через вэб, а только вэб-клиент и лицензия под него с ключа или сервера.

Если тема интересная могу отдельную статью написать.

Интересная, жду статью.
58. утюгчеловек 32 15.08.19 09:56 Сейчас в теме
(31) Формально http-соединения к 1С лицензируются)
32. TODD22 18 23.04.19 11:33 Сейчас в теме
(23)
Почему не написать в базе HTTP-сервис, который бы все это делал?

1. Потому что этот сервис в базе 1С. Со всеми вытекающими из этого проблемами.(клиенты будут часто запросы отправлять, за дидосят базу)
2. У Джанго есть много разных полезных модулей которые на 1С скорее всего придётся писать самому.
d4rkmesa; +1 Ответить
35. Diversus 2197 23.04.19 11:43 Сейчас в теме
(32)
Потому что этот сервис в базе 1С. Со всеми вытекающими из этого проблемами.(клиенты будут часто запросы отправлять, за дидосят базу)

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

У Джанго есть много разных полезных модулей которые на 1С скорее всего придётся писать самому.

Дак используйте Джанго в связке, кто мешает? Повторюсь, мы в своем проекте используем Bootstrap + JQuery + chart.js и никто не мешает использовать ваш Джанго. Заливайте в справочник папочку с Джанго. Добавляете странички, которые используют этот фреймворк Джанго, из 1С это все отдается и вуаля, Джанго освобожденный! :)
36. riposte 336 23.04.19 11:45 Сейчас в теме
(35)
А другой программист, когда придет, разберется, как это все работает? )
Ладно, шучу. Ждем статью.
acanta; TODD22; +2 Ответить
56. Diversus 2197 13.05.19 11:10 Сейчас в теме
37. TODD22 18 23.04.19 11:45 Сейчас в теме
(35)Зачем его "заливать" в 1С?
39. Diversus 2197 23.04.19 11:47 Сейчас в теме
(37) Можете в тексте странички использовать CDN-ссылки на скрипты, но для возможности использовать в локальной сети, которая может быть без доступа к интернету лучше "залить".
40. avk72 75 23.04.19 11:56 Сейчас в теме
(23) То, что Вы предлагаете, не всегда применимо по нижеследующим причинам:
1. Не всегда есть возможность разместить 1с на стороннем хостинге.
У автора веб сайт функционирует независимо от 1с и может работать автономно, в качестве веб витрины предприятия. Поэтому, я бы на его месте, также бы делал веб сайт с собственным бекэндом. Да, необходимо организовывать обмены, но основной плюс в том, что мы на выходе имеем две слабосвязанные системы, которые могут работать независимо друг от друга.
2. 1с требует периодического останова на регламентные операции и прочее.

3. Конфиденциальность.
Обычно, базы 1с размещают на внутренних серверах компании, потому, что не все что есть в базе должно быть публично.

2. Только вы адекватно сможете поддерживать эту систему

Я не уверен, что обыкновенный одинэсник разбирается в javascript и может исправить при необходимости выдачу контента через http сервис.
Можеть быть, для управления IT отделом, Ваш подход вполне применим, но для веб витрины все же предпочтительней отдельное веб приложение с собственным бекэндом и базой данных.

(0) Автору хочется пожелать удачи. Сайт вполне неплох. Молодец.
van_za; d4rkmesa; TODD22; +3 Ответить
41. Diversus 2197 23.04.19 12:06 Сейчас в теме
(40) Да, вы правы. Есть плюсы, есть минусы того, или иного подхода.
Решение, которое реализовали мы - это "нативный" подход. У автора свое видение и свое восприятие ситуации, которую надо решить в определенном месте с конкретными условиями, но как сказал выше автор, он не знал, что так можно.
Безусловно то, что автор реализовал такую задачу - это отлично и он молодец! С этим никто и не спорит.
28. riposte 336 23.04.19 11:19 Сейчас в теме
1. Критичное звено - это этап выгрузки и последующей загрузки. Если оно даст сбой, информация в базе будет неполной или неактуальной. Этот этап будет в ближайшее время пересмотрен, т.к. на момент создания не было четкого понимания возможностей rest api.
2. Ну тут можно практически про что угодно так сказать. Написал обработку, которая что-то делала, а через два года она сломалась и нет программиста 1С, который может с полпинка в ней разобраться и поправить. Как бы, если отваливается выгрузка или падает бэкенд, то в любом случае нужен будет специалист, чтобы это починить.
Другое дело, когда написано по-китайски или лапшой. Я надеюсь, что у меня не настолько сложный и непонятный код. По поводу "другой разработчик, все переписать" - да и пусть себе переписывает. Если другой разработчик преследует цель сделать как ему нравится или как он считает нужным, он найдет аргументы в пользу "все фигня, надо по другому".
3. Задачи постоянной выгрузки или полной интеграции не стояло. Цены в УТ устанавливаются на день и не так часто, актуальность оперативных остатков с точностью до минуты тоже не является обязательным фактором. Итоговый заказ, сформированный на сайте, не факт что будет реализован именно так, как придет. Что-то уже в резервах, что-то будет предложено из альтернатив, что-то пойдет в допоставку - это уже работа отделов. Требование к менеджеру вручную загружать и обрабатывать заказ скорее организационное, нежели из-за лени реализовать автоматическое формирование заказа. "Не заметил уведомление, забыл и т.д." А так менеджер берет номер заказа и обрабатывает его сразу до этапа согласования и выставления счета.

По поводу вэбклиента на базе 1С.
Немного непонятно, это что-то вроде реализации шаблонизатора Jinja? Было бы неплохо, конечно, использовать непосредственно 1С как источник данных и бэкэнд, но узким местом в нашем случае будет доступность самого сервера, который нельзя разместить вне офиса, не такой широкий канал, и физически он всего один. Плюс даунтаймы из-за периодических проблем с электричеством или из-за того, что с сервером возникли проблемы. Крайне редко, конечно, но случается. Обеспечить хорошую доступность и аптаймы 24/7/365 мы не можем.

Хотелось бы заменить стэк XML->FTP->DB на что-то типа DRF<-1C API или 1C->DB API. Где-то натыкался на реализацию REST-запросов к 1С, сяду этим заниматься, обязательно найду. Но отдавать HTML самой 1С... видится мне менее надежным, нежели когда 1С отдает JSON, а рисованием страниц занимается обычный JS-фреймворк.
33. Diversus 2197 23.04.19 11:36 Сейчас в теме
(28)
Но отдавать HTML самой 1С... видится мне менее надежным, нежели когда 1С отдает JSON, а рисованием страниц занимается обычный JS-фреймворк.

А кто сказал, что рисованием страниц занимается 1С? :) 1С отдает HTTP-файлы (html, js, css, картинки и прочее), а в этих файлах могут быть любые данные, в том числе и страницы фреймворков, скрипты и прочее. Например, наш проект для вывода данных использует Bootstrap + JQuery + chart.js Т.е. 1С нам нужна именно для генерации полезного кода, все остальное отдается браузеру как есть. Есть шаблон заполнения странички, есть алгоритм заполнения недостающих частей страницы, алгоритм выполняется 1С. Итоговый результат отправляется пользователю.
И да - это в какой-то мере и шаблонизатор.
34. riposte 336 23.04.19 11:42 Сейчас в теме
(33)
Тогда вопрос по нагрузке. Сколько активных клиентов может выдержать 1С, сохраняя комфортную работу всех остальных локальных пользователей?
Кто-то уже спрашивал вроде про ддос и прочие прелести заваливания сервера мусорными запросами.
38. Diversus 2197 23.04.19 11:46 Сейчас в теме
(34) ответ в (35) единственное дополню.
Вот ссылка на повышение производительности http://v8.1c.ru/o7/201604service/index.htm
42. avk72 75 23.04.19 12:30 Сейчас в теме
(0) Я тоже смотрел в строну фреймворка Vuetify и вообще разработки на Vue, но мне не хватило некоторых компонентов:
Селектора с возможностью выбора из дерева.
Пошагового селектора, когда выбираем сначала, например, страну, а затем город в этой стране.
Некоторых других вещей.
После долгой переписки с разработчиками, пришел к выводу, что проще самому сделать эти компоненты. чем ждать, пока их реализуют.

Список товаров, думаю, можно сделать с VDataIterator и показывать отдельными карточками. Так наверное лучше выглядеть будет.
43. riposte 336 23.04.19 12:44 Сейчас в теме
(42)
VDataIterator используется при отрисовке на малых экранах. (XS, SM). Можете проверить, уменьшив окно браузера.
45. s_vidyakin 23.04.19 15:45 Сейчас в теме
46. avk72 75 23.04.19 16:08 Сейчас в теме
(45) Там возникли проблемы с наползанием элементов друг на друга и со скрытием меню во время выбора.Я уже не помню точно. Я и другие смотрел варианты. Предпочтительно, чтобы все компоненты были реализованы в одном фреймворке и имели более менее согласованный стиль оформления. В итоге сделал кастомный билд Vuetify с нужными компонентами. Их пришлось делать собственноручно. Сейчас думаю, как бы все это оформить отдельной библиотекой. Но все упирается во время.
У автора были две недели. А у меня с этим сложности....
44. Kalam 105 23.04.19 14:17 Сейчас в теме
Автор красавчик. Если был бы такой же запрос, тоже бы так сделал.
Работа конечно проделана большая и всё, имхо подобрано и сделано удачно, ну да с обменами можно было бы подумать, но сроки не дали ))
Тоже думал что-то такое с прайсами и заказами сделать, но времени нет, всё так же как и с ботами под телегу для заббикса ;)
48. baracuda 2 25.04.19 11:17 Сейчас в теме
Добавил в закладки спасибо, я проделывал уже такое.
правда данные на сайт лил простым POST запросом с JSON данными. Отрабатывает на ура, и файлики не нужны.
49. herfis 428 26.04.19 09:21 Сейчас в теме
Интересно было прикоснуться к питоновой инфраструктуре, спасибо.
50. user778014 8 28.04.19 00:50 Сейчас в теме
А вот добавил бы господин Нуралиев в 1с доступ к html верстке и лицензирование 1c по ядрам, так и не нужна бы была вся эта приблуда с Python, Django, Vue.js и прочая лабудистика
51. _Z1 38 29.04.19 11:49 Сейчас в теме
(50) Не очень понятно чем это поможет.Ведь в данном решении все таки два сервера
один это сервер где приложение 1с
Второй сервер это VPS хостинге.

Предположим что у Вас нет цен за Лицензию 1c.
Вы хотите совместить эти два сервера и пустить внешних клиентов в свою внутреннюю сетку ?
или Вы хотите на втором сервере который снаружи полностью написать сайт на 1с ?
55. riposte 336 01.05.19 00:48 Сейчас в теме
(50) https://infostart.ru/public/305854/
Если так хочется, можно делать из сервера 1С бэкенд. Но Фронт на базе того же 1С уже будет слишком.
Тем не менее, вэб-сеансы будут нуждаться в лицензировании.
А вот когда 1С выступает просто источником данных и иницатором обмена с бэкендом через регламентное\фоновое задание - лицензия не требуется (кроме лицензии на сервер 1С).
Сохраняется безусловная безопасность самой базы 1С, т.к. прямого доступа к ней из интернета нет. В СУБД на бэкенде присутствует только выгруженная информация, необходимая для работы приложения, поэтому она не критична сама по себе. Ну и падение 1С не останавливает работу сайта, как падение сайта не останавливает работу 1С. Разделение задач и сред выполнения таки повышает в целом стабильность системы. По аналогии и с серверами - не пихают все в одну ОС, а создают несколько серверов, каждый выполняющий свои 1-3 задачи. Создание комбайнов, которые "делают все" чревато остановкой работы всего при их отказе.
А еще для повышения доступности и отказоустойчивости можно организовывать региональные кластеры практически всего и вся. Но это уже для энтерпрайзов уровня страны\мира.
_Z1; acanta; +2 Ответить
63. user1255028 10.09.19 11:30 Сейчас в теме
(55)
Судя по https://its.1c.ru/db/v8313doc#bookmark:adm:TI000000304
Лицензии на любые интернет-сервисы не требуются.
52. user778014 8 29.04.19 12:34 Сейчас в теме
Да разные варианты можно сделать. И первый и второй. Сейчас на 1с этот вариант не пройдет так как лицензирование нужно на каждое подключение, а у вас непонятно сколько пользователей будет заходить на сайт, плюс на 1с невозможно написать свой произвольный веб интерфейс.

Просто я о том что легким движением 1С руки, можно бы было сделать ненужными всю эту какафонию технологий
53. acanta 29.04.19 12:43 Сейчас в теме
54. user778014 8 29.04.19 13:52 Сейчас в теме
(53) В принципе даже просто добавив лицензирование по ядрам уже можно бы было использовать 1с в различных вебсервисах более активно
57. albert.goncharov 91 28.07.19 13:34 Сейчас в теме
Не смотрел, но сам подход абалденный!
59. silberRus 70 15.08.19 12:04 Сейчас в теме
Не смотрел, не могу ничего сказать.
но когда вижу rest и ftp рядом - не понимаю, зачем.
60. riposte 336 15.08.19 14:32 Сейчас в теме
(59)
Один из клиентов забирает отведенные ему файлики выгрузки на свой сайт.
С оформления для него этой выгрузки все и началось.
А раз это уже было сделано, то рядом делать выгрузку через API не стал.
Так то да, обновлял бы через запросы. Оно и напрашивается.
64. barricade2 04.09.20 15:22 Сейчас в теме
(60)
Можешь предоставить ссылку без стартмани? Также хотел уточнить, может же DRF взаимодействовать с 1С с помощью Json запросов, который вырабатывает DRF? Для этого же нужно написать со стороны 1С обработчик HTTPЗапросов, который по местам все распределяет?
65. riposte 336 13.09.20 11:27 Сейчас в теме
(64)
http://ai-frame.net/arch/1c-share/PUBID_1051234-Scratches.zip

может же DRF взаимодействовать с 1С с помощью Json запросов

Может, но DRF придется предварительно авторизоваться в 1С, если требуется что-то делать с данными в 1С. Или пилить свой http-сервис. Не занимался еще таким, не приходилось.
В обратную сторону - без проблем и даже, с моей стороны, проще. Т.е. когда 1С инициирует общение с DRF.
61. andron58 19.08.19 12:14 Сейчас в теме
А почему через ту же Django POST'ами инфу не заливать в БД (либо xml скармливать DJANGO, без использования FTP, 21 век же, ну)
62. andron58 19.08.19 12:16 Сейчас в теме
(61) понятно, увидел ответ выше
66. quick 578 12.01.21 14:48 Сейчас в теме
Хорошее решение! Спасибо за столь подробное объяснение. Понравился и выбор стека и экспорт через xml. Нечто подобное предстоит сделать как раз для публикации прайсов клиентам.
67. fuxic 295 14.06.21 09:27 Сейчас в теме
Надеюсь разработчики смогут сдвинуться и притушить 1С. Отличное решение и стек, явно много работы в разработке получилось. Хотя дизайн сайта, как уже заметили выше, вырвиглазный. Надеюсь генерацию структуры джанго базы сможете доделать из 1С, чтобы разрабы ничего не умели и дальше :))

Работа через xml/ftp при полноценной работе rest непонятна, скорей всего просто принцип "работает - не ломай" после первой рабочей версии.:) Почему XML и подготовка данных полей вручную, если есть JSON? Часть проблем, решенных в статье из-за выбора именно xml

Добавлю к теме статьи, под vuejs есть много фреймворков с готовыми элементами и в актуальном дизайне
Список инструментария на vuejs

Полагаю у вас из-за жесткой шаблонизации на базе 1с смена верстки усложняется. Стоило полностью отвязать от 1С, чтобы при необходимости можно было подключить веб-разраба без знаний 1С. Только API. В любой день может понадобиться забыть даже про vuejs, если вдруг angular/react/ember/swelte победят или выстрелит случайный rxjs-стек.

Список фреймворков. Топовые фреймворки уже включают версии на vue3. Нравятся vuetify, quasar (PWA/SSR/meta/vue3), ant, element-plus.

Ссылка https://ai-frame.net/articles/lemp нерабочая
68. fuxic 295 14.06.21 10:03 Сейчас в теме
Использовать jQuery с vuejs чуть моветон. Если понадобилось лишь для ajax, то лучше все же классический axios.
69. pashamix 04.10.21 13:47 Сейчас в теме
Очень круто! Интересно!
Сам начал недавно изучать Python, в планах построить мини erp систему.
На 1С писал простые конфигурации с нуля, для учета деталей ПК и их сборок/разборок.
Оставьте свое сообщение

См. также

Безопасная работа с транзакциями во встроенном языке Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    46697    tormozit    58    

Тестирование API 1C Postman

WEB v8 Абонемент ($m)

Тестирование вашего API, который вы сделали на 1С.

1 стартмани

18.08.2021    2927    kolya_tlt    7    

Пример создания документа с движениями в ERP 2.5.7

БСП (Библиотека стандартных подсистем) Практика программирования v8 ERP2 Россия УУ Абонемент ($m)

Пример создания документа с движениями в ERP 2.5.7, а также включение документа в основные подсистемы, а именно по управлению доступом, датам запрета изменения, контролю остатков, использованию характеристик и серий и прочее.

1 стартмани

10.08.2021    2387    maraty    10    

Семеро одного не ждут? Асинхронное исследование асинхронности

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

08.06.2021    5753    Alxby    47    

План подготовки к аттестации на 1С: Специалиста по платформе (+ Ссылки на материалы) Промо

Решение задач на 1С:Специалист v8 Россия Абонемент ($m)

Хочу поделиться собственным планом подготовки к аттестации на 1С: Специалист по платформе 8.3 со ссылками на материалы (и указанием стоимости).

1 стартмани

23.12.2017    25965    UtSpar    39    

БСП. Подключаемые команды. Команды заполнения

БСП (Библиотека стандартных подсистем) v8 ERP2 БП3.0 ЗУП3.x Россия Абонемент ($m)

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

1 стартмани

11.05.2021    7653    kondrp    7    

Модель запроса

Универсальные функции v8 v8::Запросы 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

01.03.2021    3037    kalyaka    25    

Как сдать экзамен 1С:Специалист по платформе?

Решение задач на 1С:Специалист v8 Россия Абонемент ($m)

Не пора ли получить сертификат 1С:Специалист по платформе? Для этого ...

1 стартмани

18.01.2021    18480    vasilievil    10    

Как выполнить отчет на СКД через COM и получить данные отчета? Промо

Практика программирования v8 УПП1 Россия Абонемент ($m)

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    33842    wowik    3    

Запрещаем администратору системы заходить в конфигуратор (внешнее управление сеансами)

DevOps Сервера v8 Абонемент ($m)

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

1 стартмани

08.01.2021    2917    ardn    5    

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

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

07.12.2020    5426    user1502278    18    

Cбор и анализ ошибок при помощи Sentry, или как упростить жизнь себе и пользователям

Интеграция с сервисами Практика программирования v8 Абонемент ($m)

Цель данной статьи - сделать процесс сбора и анализа ошибок, происходящих в базе, максимально простым, быстрым и удобным, собирать статистику по ошибкам, местам их возникновения и частоте их появления, а также в деталях разобрать все тонкости по интеграции 1С с Sentry.

1 стартмани

09.10.2020    7947    hexhoc    12    

Как нарисовать граф на 1С Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

09.08.2013    73744    ildarovich    117    

Программная корректировка при выводе отчета СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

08.10.2020    11696    dabu-dabu    16    

Библиотека программного изменения формы (УФ)

Инструментарий разработчика Работа с интерфейсом Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

07.08.2020    7145    BuriyLesha    20    

Работа с хранилищем конфигурации из режима 1С: Предприятие минуя конфигуратор

Хранилище v8 1cv8.cf Абонемент ($m)

Описание приемов работы с хранилищем конфигурации 1С из режима 1С: Предприятие минуя конфигуратор. Статья содержит ряд примеров работы с хранилищем по протоколу HTTP, описание "внутренностей", а также демонстрационную обработку

3 стартмани

11.06.2020    7472    MaxxG    19    

Простой способ индексирования интервалов Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

28.09.2016    42253    ildarovich    22    

История данных и БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

09.06.2020    5337    zeegin    17    

Выбираем российского провайдера для интеграции с WhatsApp

WEB Интеграция с сервисами v8 Россия Абонемент ($m)

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

1 стартмани

19.05.2020    7790    ripreal1    5    

Telegram bot API - разбор документации с примерами

WEB v8 Абонемент ($m)

Перевод документации на язык 1С.

1 стартмани

06.04.2020    83801    leongl    68    

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

1 стартмани

01.02.2018    38696    rpgshnik    59    

Методика обновления формы объекта данных при изменении объекта

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

09.03.2020    22045    tormozit    16    

Отправка уведомлений с помощью командной строки, Оповещения с сервера на клиент с помощью командной строки

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

05.03.2020    8322    user5300    3    

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо

БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Абонемент ($m)

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    55391    dsdred    46    

Вывод сообщений в HTML поле средствами 1С

Практика программирования v8 v8::УФ Абонемент ($m)

Пример использования вывода большого количества сообщений в поле HTML. С возможностью открывать ссылочные объекты и создавать новые объекты передавая параметры прямо из HTML поля. Протестировано на релизах 8.3.12 и 8.3.15+

2 стартмани

31.01.2020    12238    burni4    16    

Краткое руководство по внесению изменений в конфигурацию

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.01.2020    23347    sapervodichka    41    

Интеграция 1С и Active Directory на сервере

Скрипты автоматизации v8 v8::УФ Россия Абонемент ($m)

Получить информацию Active Directory на управляемых формах со стороны сервера, под любым пользователем домена.

1 стартмани

21.12.2019    15266    DrZombi    16    

Некоторая работа с данными через COM Промо

Практика программирования v8 Абонемент ($m)

В статье приведены примеры работы с Платформой 8.X через COM (точнее, через объект COMConnector). Примеры кода были использованы при реализации прикладных задач в процессе трудовой деятельности.

2 стартмани

05.12.2012    60226    wowik    32    

Разбираемся с web-kit в 1С, на примере интеграции TinyMCE в управляемую форму в УТ 11.4. Допиливаем обмен с сайтом в УТ 11.4

Обмен данными и распределенная БД Интеграция с сервисами Адаптация типовых решений v8 v8::УФ УТ11 Абонемент ($m)

Многие уже знают, что в релизе платформы 8.3.14.1565, браузер Internet Explorer был заменен на Web-Kit, это на самом деле большой шаг вперед, но я уверен, многим, как и мне, пока не совсем понятно, что к чему. Возник опыт использования web-kit в 1С, вызова JS из 1С и вызова 1С из JS. Давайте вместе попробуем понять, чем одно отличается от другого, и заодно сделаем, что-нибудь полезное. Да и наверняка многим придется переписывать свои подобные поделки после обновления на новую платформу, так что надеюсь мой опыт окажется полезным.

2 стартмани

08.12.2019    9781    Бэнни    25    

Массовое изменение режима поддержки объектов конфигурации

Структура метаданных v8 1cv8.cf Абонемент ($m)

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

05.11.2019    5059    VKislitsin    12    

"Живые" картинки со Snap.SVG

WEB Работа с интерфейсом Практика программирования v8 Абонемент ($m)

В статье рассмотрен пример использования http-сервисов для визуализации данных

1 стартмани

24.10.2019    15279    blackhole321    7    

Работа со схемой запроса Промо

Инструментарий разработчика v8 v8::Запросы Абонемент ($m)

Стандартом взаимодействия с реляционной базой данных стал язык SQL. Приемником SQL в 1С является язык запросов. Язык запросов, также как и SQL, является структурированным. Составляющие структуры запроса отвечают на разные вопросы о том, какие данные требуется получить и какие манипуляции с множествами данных необходимо произвести при получении. В простых случаях текст запроса можно написать вручную, однако в сложных случаях, а также при программном формировании, - лучше воспользоваться объектной моделью запроса и использовать объект "Схема запроса". В статье дается описание объектной модели и особенностей работы с ней, а также приводится решение, упрощающее взаимодействие с объектом "Схема запроса".

1 стартмани

24.04.2018    52616    kalyaka    41    

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью Rest API сайта. Часть 1. Авторизация

WEB v8 Абонемент ($m)

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью функционала Rest API предоставляемого платформой (CMS) WordPress (WooCommerce). Без дополнительных приложений на PHP/вставьте сюда любой другой язык программирования/.

1 стартмани

12.10.2019    47998    osivv    36    

Вебхук. Путь Телеграма

Внешние источники данных Интеграция с сервисами v8 Абонемент ($m)

Долгое (на самом деле нет) и нелегкое путешествие телеграма к неведомым (из за РКН) конфигурациям 1С. Памятка себе.

1 стартмани

03.10.2019    24429    platonov.e    26    

Многопоточная обработка данных на примере перепроведения документов

Обработка документов Практика программирования v8 ERP2 УТ11 КА2 Абонемент ($m)

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

1 стартмани

17.09.2019    13213    ids79    46    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов Промо

Математика и алгоритмы Универсальные функции HighLoad оптимизация Практика программирования v8 1cv8.cf Россия Абонемент ($m)

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

26.05.2017    51631    DarkAn    87    

Описание формата внутреннего представления данных 1С в контексте обмена данными

Внешние источники данных Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на "внутреннюю кухню" платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм "быстрого массива", который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно "на лету" программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

1 стартмани

06.09.2019    21989    Dementor    31    

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

Практика программирования v8 Абонемент ($m)

Если Вам часто приходится просматривать в отладчике сложные пакетные запросы с большим количеством временных таблиц, то эта статья для Вас.

1 стартмани

27.08.2019    13111    ids79    22    

Обмен большими данными между клиентом и сервером

Внешние источники данных v8 Абонемент ($m)

В статье рассматривается вопрос передачи больших объемов данных, превышающих теоретический лимит сеансовых данных (4Гб за вызов) (они же временное хранилище) как с клиента на сервер, так и в обратном направлении.

1 стартмани

27.08.2019    16019    logos    32    

Агрегатное суммирование строк в запросе – сложно, но не невозможно Промо

Математика и алгоритмы v8 Абонемент ($m)

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

1 стартмани

09.09.2013    85546    ildarovich    57    

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

Практика программирования v8 1cv8.cf Абонемент ($m)

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

2 стартмани

24.08.2019    17740    BenGunn    26    

Изменяющееся контекстное меню в 1С 8.3

Работа с интерфейсом Инструментарий разработчика Практика программирования v8 v8::УФ Абонемент ($m)

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

1 стартмани

06.08.2019    23141    signum2009    16    

Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery с кэшированием

WEB v8 1cv8.cf Абонемент ($m)

В статье описан способ создания "фронтенда" на HTML/CSS/jQuery и скрипт кеширования AJAX запросов на PHP.

1 стартмани

06.08.2019    15305    Sedaiko    28    

Новый запрос и новая таблица значений как функции Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

27.11.2012    46605    ildarovich    49    

Менеджер потоков: реализация "любой" задачи в потоках

HighLoad оптимизация Инструментарий разработчика v8 Абонемент ($m)

Менеджер потоков – один их новых инструментов, который упрощает работу разработчиков. Насколько легко с ним, на конференции Infostart Event 2018 Education показал начальник отдела автоматизации 1С Иван Филимонов компании «Трансстроймеханизация».

01.08.2019    11560    DarkAn    7    

Процедура ПриКомпоновкеРезультата

Практика программирования v8 1cv8.cf Абонемент ($m)

Коллекция кода

1 стартмани

26.07.2019    60928    vasilev2015    67    

10 способов получить модуль числа (а может, и больше)

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Пишем функцию вычисления модуля числа. Сколько способов существует? Давайте посчитаем!

1 стартмани

11.07.2019    15341    sam441    34    

Уровни, глубина, прародители, циклы и аналоги запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

В продолжение публикации «Транзитивное замыкание запросом» [http://infostart.ru/public/158512/] добавлены другие варианты использования того же приема. Приведены запросы для быстрого определения уровней всех элементов справочника, максимальной глубины справочника, прародителей произвольных элементов справочника, запрос для быстрого определения циклов (на примере справочника спецификаций «1С:Управление производственным предприятием») и определения множеств аналогов номенклатуры (также на примере конфигурации «1С:Управление производственным предприятием»).

1 стартмани

13.11.2012    120977    ildarovich    102    

Мониторинг производительности и искусственный интеллект

HighLoad оптимизация Искусственный интеллект (AI) Практика программирования v8 Абонемент ($m)

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

1 стартмани

01.07.2019    10464    ivanov660    28    

"Убер на складе": динамический расчет маршрутов с учетом реальных расстояний

Учет ТМЦ Учет ТМЦ Практика программирования v8 УУ Абонемент ($m)

Представляю методику и инструмент для динамического расчета маршрутов отбора на высоконагруженных складах для максимального повышения эффективности склада, ускорения проходимости и, как следствие, экономии денег. Это методика и обработка для интеграции в WMS решения. Тестировалось на 1С 8.3.14.1565.

3 стартмани

24.06.2019    19878    informa1555    17    

1С:Ассемблер. Немного летнего веселья!

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Все вы, наверное, слышали, что 1С-ники жалуются на свою систему, считая язык 1С недостаточно низкоуровневым, скучным и т.п. Все они с тоской поглядывают в сторону "настоящих" языков программирования. Так вот, господа, они неправы. В системе 1С есть места, где можно размять программерский мозг и получить удовольствие от низкоуровневой техники. Предлагаю вам погрузиться в недра виртуальной машины 1С и понять, как она работает. Там есть свой "ассемблер" и мы попробуем его в действии!

1 стартмани

21.06.2019    34387    Evil Beaver    147    

Простые примеры сложных отчетов на СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

12.06.2019    37454    Hatson    32