Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции публикации категорий товаров в магазин WooCommerce, с комментариями внутри.
Преамбула.
Эта статья является логическим продолжением и дополнением этой моих статей: "Первый шаг" и "Второй шаг". А также полностью с ними взаимосвязана, отсылки к ним будут периодически здесь появляться.
Здесь мы рассмотрим код 1С, с помощью которого сможем сделать следующее с категориями товаров магазина на сайте:
Создать.
Обновить/изменить.
Посмотреть 1.
Посмотреть список.
Удалить.
Всё это мы будем делать в контексте привязки к категории картинки (Миниатюры).
Публикация Категорий товаров.
Конечные точки WordPress / WooCommerce используемые для категорий товаров.
Является моим вольным переводом документации разработчика, источник.
Мои комментарии: образец моего комментария.
REST API - это мощная часть WooCommerce, которая позволяет вам читать и записывать различные части данных WooCommerce, такие как заказы, продукты, купоны, клиенты и зоны доставки.
Формат Запроса / Ответа
Формат ответа по умолчанию - JSON. Запросы с телом сообщения используют обычный JSON для установки или обновления атрибутов ресурсов. Успешные запросы вернут состояние HTTP 200 OK.
Даты возвращаются в формате ISO8601: YYYY-MM-DDTHH:MM:SS
Идентификаторы ресурсов (id) возвращаются в виде целых чисел.
Любая десятичная денежная сумма, например цены или итоги, будет возвращена в виде строк с двумя десятичными знаками.
Другие суммы, такие как количество элементов, возвращаются в виде целых чисел.
Пустые поля обычно включаются в качестве строки "null" или "emtpy" вместо того, чтобы быть пропущенными.
Ошибки
Иногда вы можете столкнуться с ошибками при доступе к REST API. Существует четыре возможных типа:
Код Тип
400 Bad Request плохой запрос недопустимый запрос, например, с использованием неподдерживаемого метода HTTP
401 Unauthorized ошибка проверки подлинности или разрешения, например, неправильные ключи API
404 Not Found не найдены запросы к ресурсам, которые не существуют или отсутствуют
500 Internal Server Error Внутренняя ошибка сервера ошибка сервера
Категории продуктов.
API категорий продуктов позволяет создавать, просматривать, обновлять и удалять отдельные или пакетно категории товаров.
Свойства категории продукта.
Атрибут
Тип
Описание
id
целое число
Уникальный идентификатор ресурса / категории. Только для чтения. В контексте приведенного ниже кода использую, генерируется системой автоматически
name
строка / текст
Имя ресурса / категории. Обязательный. В контексте приведенного ниже кода использую, необходимо создавать самому
slug
строка / текст
Слаг, буквенно-цифровой идентификатор объекта, уникальный для его типа.
В контексте приведенного ниже кода использую, лучше создавать самому, в латинице. Может генерироваться системой автоматически.
parent
целое число
ID родителя ресурса. В контексте приведенного ниже кода использую, аналогично группам товаров в 1С.
description
строка / текст
HTML описание ресурса / категории.
display
строка / текст
Категория архивного тип отображения. Опции: default, products, subcategories and both. По умолчанию default. В контексте приведенного ниже кода не использую
image
объект
Данные картинки. Описание смотрите ниже. В контексте приведенного ниже кода использую, аналогично привязанным картинкам к товарам в 1С.
menu_order
целое число
Порядок меню, используемый для пользовательской сортировки ресурса. В контексте приведенного ниже кода использую.
count
целое число
Количество опубликованных продуктов для данного ресурса. Только для чтения.
В контексте приведенного ниже кода не использую, можно использовать для информации.
Категория продукта - свойства изображения
Атрибут
Тип
Описание
id
целое число
ID изображения. Обязательный. В контексте приведенного ниже кода использую.*
date_created
дата-время
Дата создания изображения в часовом поясе сайта. Только для чтения. В контексте приведенного ниже кода не использую, можно использовать для информации.
date_created_gmt
дата-время
Дата создания изображения, в GMT. Только для чтения. В контексте приведенного ниже кода не использую, можно использовать для информации.
date_modified
дата-время
Дата последнего изменения изображения в часовом поясе сайта. Только для чтения. В контексте приведенного ниже кода не использую, можно использовать для информации.
date_modified_gmt
дата-время
Дата последнего изменения изображения - GMT. Только для чтения. В контексте приведенного ниже кода не использую, можно использовать для информации.
src
строка/текст
URL изображения.
name
строка/текст
Наименование изображения. В контексте приведенного ниже кода не использую.*
alt
строка/текст
Альтернативный текст изображения. В контексте приведенного ниже кода не использую.*
* Из всех выше описанных атрибутов, для привязки изображения / картинки к категории, нам нужен только ID.
Как создать / опубликовать картинку можете прочитать в этой статье.
Создать категорию товаров.
Этот API поможет вам создать новую категорию продуктов.
POST /wp-json/wc/v3/products/categories
или
Создать -> /wp-json/wc/v3/products/categories
В контексте кода 1С.
Получить категорию товара.
Этот API позволяет получить категорию товара по идентификатору. Одну.
GET /wp-json/wc/v3/products/categories/<id>
или
Получить -> /wp-json/wc/v3/products/categories/<id>
В контексте кода 1С. id - обязательный аргумент.
Список всех категорий продукта.
Этот API позволяет извлекать все категории товаров.
GET /wp-json/wc/v3/products/categories
или
Список -> /wp-json/wc/v3/products/categories
В контексте кода 1С.
Обновить категорию товаров.
Этот API позволяет вносить изменения в категорию товаров.
PUT /wp-json/wc/v3/products/categories/<id>
или
Обновить -> /wp-json/wc/v3/products/categories/<id>
В контексте кода 1С. id - обязательный аргумент.
Удалить категорию товаров.
Этот API позволяет удалить категорию товаров.
DELETE /wp-json/wc/v3/products/categories/<id>
или
Удалить -> /wp-json/wc/v3/products/categories/<id>
В контексте кода 1С. id - обязательный аргумент.
Доступные параметры
Параметр
Тип
Описание
force
строка
Необходимо установить true (Истина в 1С), если категорию не надо помещать в "Корзину".
Надеюсь, теперь теоретически вы подкованы, пора переходить к практике.
Публикация категорий товаров на сайт, в магазин WooCommerce.
Для этого использую внешнюю обработку на обычных формах. Код на управляемых формах не будет отличаться от приведенного здесь, чуть-чуть сложнее, но думаю для вас не составит труд адаптировать. Мне, честно говоря, было лень.
Исходные данные.
Аргументы запроса
Что означают первые 4 пункта, можно прочитать здесь.
Token.
Server
Маршрут
КонечнаяТочка
Наименование - "name" в контексте WooCommerce. Строка.
Описание - "description" в контексте WooCommerce. Строка.
Слаг - "slug" в контексте WooCommerce, временное имя файла, если всё хорошо, становится ссылкой. Строка.
КартинкаФото - "id" изображения в контексте WooCommerce. Число.
id_родителя - "parent" в контексте WooCommerce. Число.
Аргументы с 5 по 9 должны присутствовать в реквизитах элемента справочника (иной сущности) 1С. Можно иные данные, как вам будет удобнее.
Повторюсь, важное замечание: с самого начала, делал реквизиты на английском, как в WordPress. Однако в последствии столкнулся с тем, что многие "аглицкие" названия зарезервированы самой 1С, про этот момент забыл. Поэтому пришлось делать структуру перевода с "Русского" на "Английский" и обратно.
Подробнее под спойлером.
Процедуры и функции работы со структурами перевода
//////КЭШ переменные необходимо объявить в модуле формы
Перем ВП_СтруктураСоответствийСАнгНаРусского, ВП_СтруктураСоответствийСРусскогоНаАнг;
#Область Текст_РаботасСТекстами
Процедура опф_СоздатьКэшСтруктуруСоответствияРусскогоАнглийского()
ВП_СтруктураСоответствийСАнгНаРусского=Новый Структура;
ВП_СтруктураСоответствийСРусскогоНаАнг=Новый Структура;
////маршруты ВП
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Категория") , "/wp-json/wp/v2/categories/");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Медиа") , "/wp-json/wp/v2/media/");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Посты") , "/wp-json/wp/v2/posts/");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Страницы") , "/wp-json/wp/v2/pages/");
////--- маршруты ВЦ
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Товары") , "/wp-json/wc/v3/products/");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ТоварыКатегория") , "/wp-json/wc/v3/products/categories/");
////команды/конечные точки запросов ВП
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Список") ,"GET");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Получить") ,"GET");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Создать") ,"POST");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Обновить") ,"POST");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Удалить") ,"DELETE");
////---команды/конечные точки запросов ВЦ
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("СписокТовары") , "GET");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ПолучитьТовары") , "GET");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("СоздатьТовары") , "POST");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ОбновитьТовары") , "PUT");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("УдалитьТовары") , "DELETE");
//////ключи значений ВП
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("id") , "id");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("АтрибутыТовара"), "attributes");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("АтрибутыТоваров"), "default_attributes");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ТермыАтрибута"), "options");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ВидимостьАтрибута"), "visible");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("категорияТОвара") , "categories");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Описание") , "description");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("_Заголовок") , "title");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("КраткаяАннотация"), "excerpt");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("слаг") , "slug");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("контент") , "content");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("основное_фото"), "featured_media");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("id_поста") , "post");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("id_родителя") , "parent");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("альт_текст") , "alt_text");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("м_описание") , "caption");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("РасширениеФото"), "mime_type");
////ключи значений ВЦ
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Наименование") , "name");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("КраткоеОписание") , "short_description");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("КартинкаФото") , "image");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Артикул") , "sku");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Остаток") , "stock_quantity");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ТекущаяЦена") , "regular_price");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Архивный") , "has_archives");
////////------ Реквизиты Общие для всех
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Дата_Создания") ,"date_created");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Дата_Изменения") ,"date_modified");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Дата_Изменения_gmt") ,"date_modified_gmt");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Дата_Создания_gmt") ,"date_created_gmt");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Групповые_Продукты") ,"grouped_products");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Цена_РасПродажи") ,"sale_price");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Цена") ,"price");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Прямая_Ссылка") ,"permalink");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Похожие_ids") ,"upsell_ids");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Тип") ,"type");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Управляемый_Запас") ,"manage_stock");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Налоговый_Статус") ,"tax_status");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Видимость_Вкаталоге") ,"catalog_visibility");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Всего_Продано") ,"total_sales");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Дата_Начала_Распродажи_gmt") ,"date_on_sale_to_gmt");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Альтернатива") ,"alt");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Источник") ,"src");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Ссылки") ,"_links");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Собственно_Ссылка") ,"href");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Собственно") ,"self");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Коллекции") ,"collection");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("status") ,"status"); //// array Limit result set to orders assigned a specific status. Options: any, pending, processing, on-hold, completed, cancelled, refunded, failed and trash. Default is any.
/////Конвертируем ВП_СтруктураСоответствийСАнгНаРусского
Для каждого КлючИЗначение Из ВП_СтруктураСоответствийСРусскогоНаАнг Цикл
Если СтрНайти(КлючИЗначение.Значение,"-")>0 Тогда
НовыйКлюч= СтрЗаменить(КлючИЗначение.Значение,"-","_");
Иначе
НовыйКлюч=КлючИЗначение.Значение;
КонецЕсли;
Попытка
ВП_СтруктураСоответствийСАнгНаРусского.Вставить(НовыйКлюч,КлючИЗначение.Ключ);
Исключение /////значит уже есть
Продолжить;
КонецПопытки;
КонецЦикла;
КонецПроцедуры
//// <Поиск и возврат значения по ключу в ВП_СтруктураСоответствийСРусскогоНаАнг>
//
// Параметры:
// <ВхКлюч> - <Тип.ЛюбоеЗначение> - <ключ структуры>
//
// Возвращаемое значение: ИсхЗначение
// <Тип.ЛюбоеЗначение> - <значение >
//
Функция _Текст_ПеревестиНаАнгл_ПолучитьЗначениеПоКлючу(ВхКлюч) Экспорт
ВрегВхКлюч=Врег(ВхКлюч);
Попытка
Возврат ВП_СтруктураСоответствийСРусскогоНаАнг[ВрегВхКлюч];
Исключение
Возврат ВхКлюч;
КонецПопытки;
КонецФункции
////бывшая
Функция _Текст_ПеревестиСАнглРус_ПолучитьЗначениеПоКлючу(ВхКлюч) Экспорт
Если СтрНайти(ВхКлюч,"-")>0 Тогда
ВхКлюч= СтрЗаменить(ВхКлюч,"-","_");
КонецЕсли;
ВрегВхКлюч=Врег(ВхКлюч);
Попытка
Возврат ВП_СтруктураСоответствийСАнгНаРусского[ВрегВхКлюч];
Исключение
Возврат ВхКлюч;
КонецПопытки;
КонецФункции
#КонецОбласти
Данные для тестов представлены в виде "Справочника", иерархический, с множеством подгрупп для наглядности.
Процедура ПослатьЗапросНаСайтКатегорииНажатие
Процедура ПослатьЗапросНаСайтКатегорииНажатие(Элемент)
ТекСтрока=ЭлементыФормы.КатегорииГруппыТоваров.ТекущаяСтрока;
Если НЕ ЗначениеЗаполнено(ОперацииСКатегориямиСайта) Тогда
Сообщить("Не выбрана конечная точка!");
Возврат;
КонецЕсли;
СтруктураПараметров=Новый Структура;
СтруктураПараметров.Вставить("Token",СоединениеССайтом_JWToken);
СтруктураПараметров.Вставить("Server",СоединениеССайтом_JWTServer);
СтруктураПараметров.Вставить("Маршрут",ТоварыКатегорияМаршрут);
СтруктураПараметров.Вставить("КонечнаяТочка",ОперацииСКатегориямиСайта);
////СтруктураПараметров.Вставить("",);
Если НЕ ОперацииСКатегориямиСайта="СПИСОК" Тогда
СтруктураПараметров.Вставить("Наименование",ТекСтрока.Ссылка.Наименование);
СтруктураПараметров.Вставить("Описание",ТекСтрока.Описание);
ТекСтрока=ЭлементыФормы.КатегорииГруппыТоваров.ТекущаяСтрока;
Если ОперацииСКатегориямиСайта="СОЗДАТЬ" Тогда
СтруктураПараметров.Вставить("Слаг",ТекСтрока.Слаг);
/////Если id картинки = 0 , то необходимо сначала опубликовать картинку
Если ТекСтрока.idКартинка=0 Тогда
/////собираем структуру для публикации
СтруктураПараметровКартинки=Новый Структура;
СтруктураПараметровКартинки.Вставить("Token",СоединениеССайтом_JWToken);
СтруктураПараметровКартинки.Вставить("Server",СоединениеССайтом_JWTServer);
СтруктураПараметровКартинки.Вставить("Маршрут","Медиа");
СтруктураПараметровКартинки.Вставить("КонечнаяТочка","СОЗДАТЬ");
СтруктураПараметровКартинки=ДобавитьДанныеМедиаВСтруктуру(СтруктураПараметровКартинки, ТекСтрока.СсылкаМедиа);
СтруктураОтветаССайта = _рс_публикация_ПодсистемаWordPressМедиа(СтруктураПараметровКартинки);
////обработка ответа
ПарсерСтруктура=_рс_ПостОбработка_РаспарситьПростуюСтрокуДерева(СтруктураОтветаССайта["ЗначениеОтвета"]);
КартинкаОбъект=ТекСтрока.СсылкаМедиа.ПолучитьОбъект();
ТекСтрока.idКартинка=ПарсерСтруктура.id;
КартинкаОбъект.id=ПарсерСтруктура.id;
КартинкаОбъект.Слаг=ПарсерСтруктура.Слаг;
КартинкаОбъект.link=ПарсерСтруктура.link;
КартинкаОбъект.status=ПарсерСтруктура.status;
КартинкаОбъект.Записать();
КонецЕсли;
СтруктураКартинки=Новый Соответствие;
СтруктураКартинки.Вставить("id",ТекСтрока.idКартинка);
СтруктураПараметров.Вставить("КартинкаФото",СтруктураКартинки);
Если ТекСтрока.Уровень()>0 Тогда
Если НЕ ЗначениеЗаполнено(ТекСтрока.id_родителя) Тогда
ТекСтрока.id_родителя=ТекСтрока.Родитель.id;
КонецЕсли;
СтруктураПараметров.Вставить("id_родителя",ТекСтрока.id_родителя);
КонецЕсли;
Иначе
Если ТекСтрока.id=0 Тогда
Сообщить("id=0, продолжение невозможно.");
Возврат;
КонецЕсли;
СтруктураПараметров.Вставить("id",ТекСтрока["id"]);
Если ОперацииСКатегориямиСайта="УДАЛИТЬ" Тогда
СтруктураПараметров.Вставить("force","true");
КонецЕсли;
КонецЕсли;
КонецЕсли;
СтруктураОтветаССайта = _рс_публикация_ПодсистемаWordPressПостыСтраницы(СтруктураПараметров);
ФормаПросмотраОтветаССайта=ПолучитьОбщуюФорму("ФормаПросмотраОтветаССайта");
ФормаПросмотраОтветаССайта.КодСостояния =СтруктураОтветаССайта["КодСостояния"];
ФормаПросмотраОтветаССайта.ОписаниеОтвета =СтруктураОтветаССайта["ОписаниеОтвета"];
ФормаПросмотраОтветаССайта.РезультатКонвертацииИзJSON =СтруктураОтветаССайта["ЗначениеОтвета"];
ФормаПросмотраОтветаССайта.Открыть();
КатегорияОбъект=ТекСтрока.Ссылка.ПолучитьОбъект();
Если ОперацииСКатегориямиСайта="УДАЛИТЬ" Тогда
ТекСтрока.id=0;
ТекСтрока.id_родителя=0;
КатегорияОбъект.id=0;
КатегорияОбъект.id_родителя=0;
ИначеЕсли ОперацииСКатегориямиСайта="СПИСОК" Тогда
/////ничего не обрабатываем
Возврат;
Иначе
ПарсерСтруктура=_рс_ПостОбработка_РаспарситьПростуюСтрокуДерева(СтруктураОтветаССайта["ЗначениеОтвета"]);
ТекСтрока.id=ПарсерСтруктура.id;
ТекСтрока.id_родителя=ПарсерСтруктура.id_родителя;
ТекСтрока.Слаг=ПарсерСтруктура.Слаг;
КатегорияОбъект.id=ПарсерСтруктура.id;
КатегорияОбъект.Слаг=ПарсерСтруктура.Слаг;
КатегорияОбъект.id_родителя=ПарсерСтруктура.id_родителя;
КатегорияОбъект.Описание=ПарсерСтруктура.Описание;
КонецЕсли;
КатегорияОбъект.Записать();
КонецПроцедуры ///ПослатьЗапросНаСайтКатегорииНажатие
Типовая процедура, как было описано в предыдущих статьях. Есть небольшое отличие, о котором напишу.
Если id картинки = 0 , то необходимо сначала опубликовать картинку.
Собираем структуру данных для публикации картинки.
Публикуем картинку.
Получаем id картинки.
Сохраняем полученные данные от сайта в реквизитах картинки.
Добавляем id картинки в структуру данных для публикации категории в магазин WooCommerce.
И, собственно всё, отправляем данные на публикацию категории.
Процедуры и функции модуля объекта.
Описывать их здесь, наверное, нет надобности. Так как всё подробно описал в предыдущих статьях.
Небольшая видео демонстрация, показывающая, простоту взаимодействия из 1С с сайтом / магазином WooCommerce.
Заключение.
Как видим, опубликовать категории товаров на сайте / магазине WooCommerce не составляет большого труда.
Желаю приятных экспериментов на ниве обмена из 1С с сайтом WordPress.
Плюсуем, не стесняемся, делимся, комментируем.
Особенно ПЛЮСУЕМ, это есть очень большой мотиватор для меня. Если вы не поставили "+" предыдущей публикации, прошу сюда.
Продолжение следует. В следующей публикации продолжим работу с магазином WooCommerce, с товарами и будем их публиковать в "пакетном" (batch) режиме.
Статьи интересные, но посмотрел Ваш сайт и увидел, что с WEB-дизайном у Вас беда.
А там ничего особенного нет, практически всё штатно.
А у кого не беда? Другой мой сайт, гугл адаптивность под мобильные показывает то 86-88, то 90-92 балла.
Те, кому приходилось делать REST API на базе HTTP-сервисов 1С, могли в какой-то момент столкнуться с необходимостью разработки методов, которые позволяли бы возвращать данные с пагинацией, т.е. последовательными порциями.
В языках общего назначения пагинация реализуется простым использованием операторов OFFSET и LIMIT в SQL-запросе к базе данных. В языке запросов 1С оператора OFFSET нет, поэтому всем приходится решать эту задачу обходными способами.
Один из таких обходных способов представлен в этой статье.
В статье собраны некоторые полезные и интересные примеры доработок выгрузки из 1С на сайты на платформе Битрикс (Возможно, что-то подойдёт и для WordPress и других платформ, принимающих типовую выгрузку на сайт из 1С). Доработки рассмотрены без привязки к конкретным конфигурациям, примеры кода взяты в основном из доработок УТ 10 и 11. Некоторые доработки требуют изменений на стороне Битрикса, некоторые укладываются в типовой функционал.
Примеры взяты из личного опыта, возможно, описание где-то не полное, т.к. доработки делались в разное время. Если материал будет интересен или будут аналогичные актуальные задачи, буду стараться дополнять статью более подробным описанием и примерами.
Онлайн-сервисы, построенные на 1С, могут использовать все многообразие веб-технологий. О том, как спроектировать, реализовать и красиво оформить интерфейс продукта 1С, в докладе на конференции Infostart Event 2021 Post-Apocalypse рассказал CTO компании WiseAdvice Олег Филиппов.
С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2.
Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.
На написание статьи побудило чтение книги "Технологии интеграции "1С:Предприятия 8.3"" Хрусталевой Е.Ю. В первой главе там постоянно чередуются слова REST, REST-интерфейс, архитектура REST и т.д. Мне стало интересно, я начал копать, что это такое, и тема оказалась достаточно интересной.
При обновлении релиза УПП до 1.3.178.2 пользователи начали жаловаться, что не отправляются в ФСС документы "Ответ на запрос ФСС для расчета пособия" и "Сведения о застрахованных лицах, ФСС". В статье предложен вариант обхода данной ошибки, возможно, это кому-то поможет.
В статье описаны критерии WYSIWYG HTML редакторов и общая картина интеграции с платформенными механизмами. На момент платформы 1С 8.3 и возможно для будущих релизов описание будет скорее всего актуально. Апробировано на 1С 8.3.20 и 8.2.12, а также на мобильной платформе 8.3.19.59.
1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя.
Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.
На онлайн-митапе «Бизнес-анализ по данным базы 1С. Интеграция c платформами BI» выступил ведущий разработчик WiseAdvice.tech Дмитрий Фурцев. Дмитрий рассказал о том, как отдать миллионы строк из 1С в платформу бизнес-аналитики и не потратить на это сутки.
В курсе обобщен опыт работы аналитика на проектах в течение пяти лет, в нескольких фирмах. Подходы к написанию документов унифицированы и по возможности не привязаны к конфигурациям 1С.
В статье хочу поделиться опытом настройки подключения 1С к стороннему HTTP-сервису, использующему авторизацию посредством передачи клиентского SSL-сертификата.
Это вторая часть цикла статей, посвящённых типовому модулю интеграции 1С Предприятия и Битрикс24. Цель данной части: рассмотреть тонкости, связанные с обменом товарами и сопутствующими сущностями (спойлер - единицы измерения и свойства товаров). Также затронем некоторые нюансы связи сущностей 1С и Б24 (относящиеся не только к товарам) и их побочное влияние при переносе данных из модуля в модуль (при смене конфигурации, переустановки или обновлении модуля).
Мы дали ему название adm1c, он позволяет посредством веб доступа удалять или смотреть на сеансы в 1С базах и при необходимости удалять их. Да и что тут такого, сказали бы, есть же консоль на win, с нее же это можно делать, и все верно, но есть пара но.
На днях взялся за реализацию печатной формы, где данные должны быть представлены на иностранном языке. На удивление нашёл крайне мало информации по данному вопросу. Поэтому решил написать эту статью.
Цель статьи - указать на подводные камни и нюансы, о которых “не пишут на заборах” и которые встретились мне за время внедрения типового модуля интеграции 1С и Битрикс24. Будет интересна для людей, кто подумывает о том, чтобы настроить интеграцию, и хотят понять, с чем столкнутся. А также для тех, кто уже работает с подобным обменом, столкнулся с какими-то из описанных ситуаций и хочет понять, что пошло не так и “как жить дальше”. Постараюсь все описать “человеческим” языком с минимальной долей терминов, так как статья, надеюсь, будет полезна не только программистам.
Рассказываем о WEB и HTTP сервисах, их практическом применении, о шишках, которые мы набили, и о выводах, которые сделали. Спойлер: тех, кто дочитает статью до конца, ждет бонус от автора.
ГИИС ДМДК - единая информационная платформа для взаимодействия участников рынка драгоценных металлов и драгоценных камней. с 01.09.21 стартовал обязательный обмен данными с Федеральной пробирной палатой (ФПП) исключительно через ГИИС. А постепенно - с 01.01.2022 и с 01.03.2022 - все данные о продаже драгоценных металлов и камней должны быть интегрированы с ГИИС.
У многих пользователей возникает вопрос как автоматизировать обмен между программой 1С и ГИИС ДМДК.
В настоящей статье ВЦ Раздолье поделится своим опытом о реализации такого обмена.
Автор статьи - Мордовин Антон - архитектор систем на базе 1С Внедренческого центра "Раздолье".
С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.
Потребовалось отправить картинку в теле запроса в HTTP сервис методом POST, куча реализаций, но есть маленькие нюансы, если хотя бы кому-то поможет, то уже это было не напрасно.
Все чаще разработчики склоняются к использованию 1C в качестве бэкенда при разработке веб-приложений. Но благодаря встраиванию веб-клиента 1С в сайт можно получить еще больше готовой функциональности. О том, как реализовать гибридное приложение за счет связки 1С с другими веб-технологиями, рассказал разработчик компании Neti Эльдар Мингалиев.
Использование веб-сервисов 1С при обмене 1С – 1С позволяет быстро передавать достаточно большие объемы данных из базы-источника в базу-приемник в объектах языка 1С.
Данный метод обмена может применяться при бесшовной интеграции между двумя базами 1С, но требует определенной серверной инфраструктуры (установленного и настроенного WEB-сервера).
СПАРК помогает предотвратить мошенничество со стороны компаний и предпринимателей, благодаря актуальным сведениям о компаниях и системе выявления факторов риска.Сервис позволяет управлять налоговыми рисками и комплексно оценивать благонадежность контрагентов.
Путешествие начинающего программиста 1С. Глава вторая. Призываем экспертов в комментарии, оптимизируем код, ругаемся на кривые руки автора.
Автор же, в свою очередь, делится своим опытом, читает умные комментарии, стремится дать те знания, за которыми он сидел ночами тем, кто их хочет найти.
В статье будет много примеров кода с комментариями работы расширения для обмена данными УТ11.4 с Яндекс.Маршрутизацией через выгрузку/загрузку EXCEL файла.
В платформе 8.3.16 появилась возможность выводить на страницах сайта информацию из веб-клиента 1С так, что пользователь даже не заметит, что работает с платформой. Руководитель компании Айтон Михаил Пинягин на онлайн-митапе «Web-клиенты для 1С» рассказал о том, какие особенности нужно учесть при настройке встраиваемого веб-клиента, и какие возможности он дает.
При разработке сайтов, интегрированных с 1С через HTTP-сервисы, приходится бороться с кодировками, искать производительные интерфейсные решения и задумываться над безопасностью. В ходе онлайн-митапа «Web-клиенты для 1С» Юрий Лазаренко показал на практике, как работает магия самодельного веб-клиента и как решать проблемы, возникающие при интеграции.
Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд).
Точность распознания до 98%.
Как мы решали проблемы с доставкой в нашем интернет-магазине, внедрили новый бизнес-процесс за 3 месяца и научились меньшим количеством машин привозить больше заказов клиентам.
На Infostart Meetup «Интеграционные решения для 1С» выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами кейсами из собственной практики: какие интеграционные решения остаются актуальными до сих пор, а каких приемов стоит избегать – даже в безвыходных ситуациях.
Примеры вызова в 1С методов API до реестров открытой части Электронного кабинета налогоплательщика, Украина.
Тестирование проводил на 1С:Предприятие 8.3 (8.3.10.2561).
Статья - пример для разработчика, как можно, не используя подсистему Интеграция с Документооборотом, управлять процессами, а именно на нашем примере прерывать выполнение процессов в 1С: Документооборот.
Используя данный пример, можно организовать http-сервис в любой конфигурации 1С, которая поддерживает механизм HTTP сервисов.
Чем больше в компании различных конфигураций и сервисов, тем актуальнее становится проблема единой системы авторизации single Sign-On. Его лидером практически безоговорочно считается Okta. Но на просторах интернета очень мало информации про интеграцию 1С с Okta через протокол OpenID Connect. Что ж, настало время восполнить недостающие пробелы и перевернуть эту печальную страницу в вашей истории