Расширение Бром для интеграции с 1С

Публикация № 1084522 06.08.19

Интеграция - Внешние источники данных

интеграция обмен расширение загрузка выгрузка RPC web-сервис .Net C# PHP Python

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

Предисловие

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

  • механизмы взаимодействия через COM-соединение;
  • механизмы web/http - сервисов;
  • механизмы обмена XML-пакетами (конвертация данных, EnterpriseData и пр..);
  • стандартизированный протокол OData.

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

Мы решили упростить процесс интеграции с 1С и создали расширение, которое и хотим вам представить.

 

Возможности расширения

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

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

Функциональность позволяет создать в клиентском приложении свою ORM. Вообще-то, мы уже сделали это за вас, но об этом далее.

 

Принцип работы

Принцип интеграции с 1С следующий:

  1. Подготавливаем инфраструктуру на стороне 1С:
    1. В конфигурацию 1С устанавливаем расширение Бром. Расширение содержит веб-сервис, который будет отвечает на клиентские запросы. Также расширение содержит собственный сериализатор, который преобразует данные 1С в XDTO-объекты и обратно.
    2. Создаем одного или нескольких пользователей, которым доступны роли основной конфигурации и роли расширения (или выдаем эти роли существующим пользователям);
    3. Публикуем конфигурацию на веб-сервере, чтобы она откликалась по HTTP;
  2. В клиентском приложении подключаем готовую библиотеку, создаем клиентский объект-коннектор и пользуемся им.

На момент написания данной статьи реализованы клиентские библиотеки для .Net Core, PHP и Python.

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

 

Примеры использования

Теперь давайте посмотрим как выглядит клиентский код. В этой статья я буду использовать C#. Код на PHP и Python полностью аналогичен.

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

 

Подключение и инициализация

Подключаемую библиотеку можно скачать с сайта проекта или репозитория (библиотеки для .Net Core и Python лучше ставить из репозитория, т.к. они имеют зависимости). После подключения библиотеки к проекту нам необходимо создать объект "БромКлиент". Сделать это можно одной командой:

dynamic клиент = new БромКлиент(@"
	Публикация = http://domainname.ru/publication_name;
	Пользователь = username;
	Пароль = userpassword
");

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

Наш бром-клиент готов к использованию. Поехали дальше!

 

Вызов процедур и функций 1С

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

var числоПрописью = клиент.ЧислоПрописью(2547, "Л = fr_FR");

// -> "Cent vingt-trois mille cent vingt-trois 00"

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

var цвета = клиент.СтрРазделить("Красный,Синий,Зеленый", ",");

// -> Массив ["Красный", "Синий", "Зеленый"]

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

var доллар = клиент.Справочники.Валюты.НайтиПоКоду(840);

//-> СправочникСсылка (Доллар)

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

var данные = клиент.РаботаСКурсамиВалют.ПолучитьКурсВалюты(доллар, DateTime.Today);

//-> Структура

var курс = данные.Курс;
var кратность = данные.Кратность;

В этом примере мы обратились к функции общего модуля, передали в нее ссылку на элемент справочника и дату. Функция вернула нам объект типа "Структура". Обращаться с этим объектом мы можем так же как и в 1С.

Доступность тех или иных методов можно ограничивать с помощью настроек областей видимости в расширении. Так, например, если указать область «Справочники.*.НайтиПоКоду», то будет доступен только метод «НайтиПоКоду» во всех справочниках конфигурации.

Работа со ссылками

Мы уже умеем находить ссылки на объекты коллекций в 1С. Давайте теперь получим данные этих объектов:

var заказ = клиент.Документы.ЗаказКлиента.НайтиПоНомеру("ТД00-000018", new Date(2017, 1, 1));

var датаЗаказа		= заказ.Дата;
var контрагент		= заказ.Контрагент;
var иннКонтрагента	= заказ.Контрагент.ИНН;

foreach (var стр in заказ.Товары) {
	Console.WriteLine((стр.Номенклатура, стр.Количество));
}

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

Если вам известен уникальный идентификатор объекта, то вы можете получить ссылку на стороне клиента без обращений к серверу:

var текСсылка = клиент.Документы.ЗаказКлиента.ПолучитьСсылку(new Guid("5a32b6ab-4661-11e9-912a-38d547755ef7"));

Если вам нужна ссылка на предопределенный элемент, то получить ее предельно просто:

var ставкаНДС = клиент.Перечисления.СтавкиНДС.НДС18_118;

var рольИсполнителя = клиент.Справочники.РолиИсполнителей.ОтветственныйЗаКонтрольИсполнения;

 

Редактирование объектов

Читать данные объектов мы теперь умеем. Давайте попробуем их отредактировать:

var заказ = клиент.Документы.ЗаказКлиента.НайтиПоНомеру("ТД00-000018", new Date(2017, 1, 1));

var заказОбъект = заказ.ПолучитьОбъект();

заказОбъект.Дата = DateTime.Today;
заказОбъект.Номер = "ТД00-000055";

заказОбъект.Товары.Очистить();

var стр = заказОбъект.Товары.Добавить()

стр.Номенклатура = клиент.Справочники.Номенклатура.НайтиПоКоду("000000104");
стр.Количество = 3;

заказОбъект.Записать(РежимЗаписиДокумента.Проведение);

В данном примере мы получили объект документа из ссылки, изменили реквизиты и табличную часть. Теперь попробуем создать номенклатуру и поместить ее в группу, которую тоже предварительно создадим:

// Создаем контекст группы справочника
var группаОбъект = клиент.Справочники.Номенклатура.СоздатьГруппу();
группаОбъект.Наименование = "Новая группа";
группаОбъект.Записать();

// Создаем контекст элемента справочника
var товарОбъект = клиент.Справочники.Номенклатура.СоздатьЭлемент();
товарОбъект.Родитель = группаОбъект.Ссылка;
товарОбъект.Наименование = "Новый товар";
товарОбъект.Артикул = "T-00012321";

// Записываем объект справочника
товарОбъект.Записать();

// Получаем ссылку на созданный объект
var товарСсылка = товарОбъект.Ссылка;

Теперь редактировать объекты мы тоже умеем! Двигаемся дальше!

 

Формирование выборок

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

var группаМебель = клиент.Справочники.Номенклатура.НайтиПоНаименованию("Мебель");

var текСелектор = клиент.Справочники.Номенклатура.СоздатьСелектор();

текСелектор.
	Выбрать("Наименование, Код, Производитель, Производитель.ИНН").
	Где("ЭтоГруппа", false).
	Где("Ссылка", группаМебель, ВидСравнения.ВИерархии).
	Упорядочить("Производитель").
	Упорядочить("Наименование", НаправлениеСортирвки.Убывание);

foreach (var текСсылка in текСелектор) {
	Console.WriteLine("Наименование: {0}; Код: {1}, Производитель: {2}; ИНН: {3}",
		текСсылка.Наименование,
		текСсылка.Код,
		текСсылка.Производитель,
		текСсылка.Производитель.ИНН
	);
}

// Сохраняем результат выборки в массив для последующего использования
var результат = текСелектор.ВыгрузитьРезультат();

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

Полагаю, принцип работы селектора понятен! Продолжим!

 

Выполнение запросов

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

var запрос = клиент.СоздатьЗапрос(@"
	ВЫБРАТЬ
		Номенклатура.Ссылка КАК Ссылка,
		Номенклатура.Код КАК Код,
		Номенклатура.Наименование КАК Наименование
	ИЗ
		Справочник.Номенклатура КАК Номенклатура
	ГДЕ
		Номенклатура.Артикул = &Артикул			
");
запрос.УстановитьПараметр("Артикул", "Т-0001");

var результат = запрос.Выполнить();

foreach (var стр in результат) {
	Console.WriteLine((стр.Код, стр.Наименование));
}

Мы только что выполнили простой запрос с одним параметром. Давайте теперь выполним шаблонизированный запрос:

var текЗапрос = клиент.СоздатьЗапрос(@"
	ВЫБРАТЬ ПЕРВЫЕ 5
		ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
		ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика,
		ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
	{ВЫБРАТЬ
		Номенклатура.*}
	ИЗ
		РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
			{(&Период)}, 
			{ (Номенклатура).*, (Характеристика).*}
		) КАК ЦеныНоменклатурыСрезПоследних
	{ГДЕ
		ЦеныНоменклатурыСрезПоследних.Цена}
	{УПОРЯДОЧИТЬ ПО
		Номенклатура.*,
		Характеристика.*}
");

// Добавляем дополнительное поле запроса с указанием синонима поля
текЗапрос.ДобавитьПоле("Номенклатура.Производитель.Наименование", "Бренд");

// Добавляем дополнительный отбор по цене
текЗапрос.ДобавитьУсловиеОтбора("Цена", 100, ВидСравнения.БольшеИлиРавно);

// Указываем дополнительное упорядочение по двум полям
текЗапрос.ДобавитьУпорядочение("Номенклатура.Производитель");
текЗапрос.ДобавитьУпорядочение("Характеристика", НаправлениеСортировки.Убывание);

var результат = текЗапрос.Выполнить(ОбходРезультатаЗапроса.Прямой);

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

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

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

 

Обучающие материалы

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

 

Заключение

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

На текущий момент расширение и клиентские модули находятся в стадии beta-тестирования и распространяются по свободной лицензии.

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

Наименование Файл Версия Размер
Расширение Бром для интеграции с 1С

.zip 39,22Kb
5
.zip 1.0.0.4-beta 39,22Kb 5 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. capitan 2342 07.08.19 14:02 Сейчас в теме
Вспоминается...
А Степанида Матвеевна большая дыра ... в компьютерой безопасности нашей фирмы
Старые знакомые. На этот раз без знойных женщин обошлось.
А зря.
Это расширение уже на Хабре мне помнится заклевали.
Безопасность его не нулевая, а отрицательная
В добром здравии и своем разуме редкий человек его поставит на свою конфигурацию

Но на Хабре то люди не курсе стандартов разработки 1С, поэтому они к разыменованию через точку отнеслись спокойно.
А так то в программировании 1С рекомендуют запросами пользоваться
2. itworks 47 07.08.19 18:52 Сейчас в теме
На хабре люди в курсе. Такие особенности работы с объектами есть во многих ORM, 1С в этом плане не особенная. Работа с запросами в расширении предусмотрена, можно получать данные и так и так, и даже третьим способом через выборки с явным указанием полей.

Единственная дыра в безопасности - это закрытый код. Такую проблему можно решить в индивидуальном порядке.
3. capitan 2342 08.08.19 11:15 Сейчас в теме
(2)
Единственная дыра в безопасности - это закрытый код

Я так не смеялся со времен выпускных экзаменов )))

Закрытый код - это реально шедевр, это вам не полуголые женщины в роликах ютюба
За это люблю программистов 1С

// Функция для страпонации декомпилятора, не содержит смысла
Функция СтрапонаторДекомпилятора()
ПеременнаяСтрапонации = "";
МассивСтрапонации = Новый Массив();

ИтоговыйСтрапонатор = "";
Для Каждого Элемент Из МассивСтрапонации Цикл
ВременнаяПеременнаяСтрапонации = СокрЛП(ПеременнаяСтрапонации + Элемент);
Если ВременнаяПеременнаяСтрапонации = ПеременнаяСтрапонации Тогда
СтруктураСтрапонации = Новый Структура();
СтруктураСтрапонации.Вставить("ХуитологическаяКонстанта", ВременнаяПеременнаяСтрапонации + "КонстантаВдупления");

Пока СтруктураСтрапонации.ХуитологическаяКонстанта <> Неопределено Цикл
ЕщеПеременная = 1 / (2 + 5) + СтруктураСтрапонации.ХуитологическаяКонстанта;

Если ЕщеПеременная <> "ПарметрАдекватности" Тогда
СтруктураСтрапонации.Очистить();
Иначе
Если ЕщеПеременная <> "ФакторБыдлокода" Тогда
СтруктураСтрапонации.Вставить("ПоПолной", "Полнее не бывает");
Иначе
Для к = 69 По 69 * 69 Цикл
п = к - (к / 2);
к = к + п;
Переменная_С_Палками = "| | | | | |";
Если к > п Или п = "Страпонированное состояние почти достигнуто" Тогда
Для о = 69 По 69 * (69 - 68) Цикл
п = о - (к / 2);

к = к + п;
Если к > о Или п = "Уже вот вот страпонируется" Или Строка(Истина и Не Ложь) = Истина Тогда
СтруктураСтрапонации.Вставить("ВставлялиУже", "Во внешнем цикдле по полной заправили!");
Иначе
КайфовыйПараметр = " Мир, брат! ";
Возврат СокрЛП(КайфовыйПараметр);
КонецЕсли;

Попытка
Для Каждого БесполезныйПараметр Из СтруктураСтрапонации Цикл
Сообщить(БесполезныйПараметр.Значение);
КонецЦикла;
Исключение
Сообщить("Не фортануло!");
Попытка
Для Каждого БесполезныйПараметр Из СтруктураСтрапонации.ПоПолной Цикл
Если БесполезныйПараметр > 0 Тогда
ПеременнаяОтсутствияСмыслаЖизни = "НеопределеноКакСтрока";
Иначе
Сообщить("Иполнение кода достиго критической безысходности.");
КонецЕсли;
КонецЦикла;
Исключение
Сообщить("Опять не фортануло!");
КонецПопытки;
КонецПопытки;
КонецЦикла;
МассивСтрапонации[0] = ПеременнаяСтрапонации;
МассивСтрапонации[к + 0] = СтруктураСтрапонации.ПоПолной;
КонецЕсли;

МассивСтрапонации[1] = 5 + ПеременнаяСтрапонации + "Этот код обречен быть непонятым...";
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;

Возврат "Смысл не найден!";
КонецЕсли;
КонецЦикла;

Возврат "Декомпилятор успешно страпонирован. Возрадуемся!";
КонецФункции

Функция ИнформацияОбАвторе() Экспорт
Возврат "Модуль разработан ООО ""ИТВОРКС"". Автор исходного кода - Шаганов Антон Павлович (ООО ""ИТВОРКС"").";
КонецФункции
Показать
4. itworks 47 08.08.19 11:47 Сейчас в теме
5. пользователь 08.08.19 12:33
Сообщение было скрыто модератором.
...
7. пользователь 08.08.19 12:56
Сообщение было скрыто модератором.
...
10. пользователь 08.08.19 14:11
Сообщение было скрыто модератором.
...
12. itworks 47 08.08.19 14:45 Сейчас в теме
(10) Спасибо, что предупредили.
6. itworks 47 08.08.19 12:54 Сейчас в теме
(3) Раз уж страпонатор не помогает, выложил с исходниками.
andreosh; Perfolenta; +2 Ответить
9. aspirator23 341 08.08.19 14:10 Сейчас в теме
(6)Чтоб все были такими же щедрыми. :)
8. aspirator23 341 08.08.19 14:08 Сейчас в теме
11. пользователь 08.08.19 14:13
Сообщение было скрыто модератором.
...
13. buzzzard 51 23.12.19 14:40 Сейчас в теме
Интересует пример подключения к Брому из 1С.
14. itworks 47 25.12.19 12:41 Сейчас в теме
(13) Можно подключиться через WS-ссылку на сервис в другой базе, но это довольно муторно.
Между 1С обмены настраивать проще, наверно, через COM или правилами обмена.
15. zhichkin 1325 15.03.20 23:51 Сейчас в теме
На github репозиторий не появился ?
В частности интересует сам клиент Брома на .NET Core.
16. itworks 47 17.03.20 17:51 Сейчас в теме
18. andreosh 103 03.05.21 19:41 Сейчас в теме
Не удается запустить на php c brom.php. include "brom.php"; отрабатывает а на эту строку ругается:
$клиент = new БромКлиент("http://localhost/bromdemo", "BromUser", "1");
Fatal error: in C:\OSPanel\domains\1C\bromclient.php on line 7
А из Перфолента.NET работает
Клиент = Новый БромКлиент("Публикация = http://localhost/bromdemo;Пользователь=BromUser;Пароль = 1;");
Я пытаюсь из
Open Server Panel v5.2.2 с настройкой
Apache-PHP-7.2 PHP-7.2
20. itworks 47 04.05.21 01:11 Сейчас в теме
(18) С кодировкой файлов не может быть проблемы?
Файл, в котором Вы к конструктору обращаетесь, в юникоде сохранен?
19. пользователь 04.05.21 01:10
Сообщение было скрыто модератором.
...
21. andreosh 103 05.05.21 08:28 Сейчас в теме
(20) Вы правы. Заработало. Спасибо.
22. andreosh 103 06.05.21 08:37 Сейчас в теме
А предполагается ли создания Brom.DLL на С++ для Win32 и Win64 ?
24. itworks 47 06.05.21 13:00 Сейчас в теме
(22) Вообще не предполагалось. Именно в таком же виде его будет затруднительно реализовать на С++, т.к. там нет динамических объектов (по той же причине нет реализации для Java). Но в целом, наверно, можно какую-то другую реализацию придумать. В любом случае его можно самостоятельно сделать, используя интерфейс SOAP, который в документации описан.
23. itworks 47 06.05.21 13:00 Сейчас в теме
Вообще не предполагалось. Именно в таком же виде его будет затруднительно реализовать на С++, т.к. там нет динамических объектов (по той же причине нет реализации для Java). Но в целом, наверно, можно какую-то другую реализацию придумать. В любом случае его можно самостоятельно сделать, используя интерфейс SOAP, который в документации описан.
25. andreosh 103 09.05.21 15:12 Сейчас в теме
(23) А еще бы хотелось иметь функцию, которая передает SOAP-пакет и получает XML-строку.
26. andreosh 103 17.05.21 08:16 Сейчас в теме
Столкнулся с проблемой: нет соединения с базой, предполагаю, по причине, что адрес начинается с https. С другими базами, у которых адрес начинается c http таких проблем нет. Через браузер по обращению по адресу после ввода логина и пароля таблицу wsdl выводится в браузере, то есть на сервере в облаке настройки правильные. Может ли быть проблема в https ?
27. andreosh 103 17.05.21 09:21 Сейчас в теме
(26) Проблема, похоже не ваша, так как соединение через PHP проходит нормально. Не соединяет только через Перфолента. Снимаю вопрос.
28. Perfolenta 202 30.05.21 04:08 Сейчас в теме
(27) проблема с https не в Перфоленте, а в библиотеке Брома для NetFramework (библиотеку для Net Core я не проверял и не знаю, может ли она работать с https)
я уже эту проблему решил и скоро выложу библиотеку Брома адаптированную для Перфоленты...
andreosh; +1 Ответить
29. artspeed 179 07.07.22 05:40 Сейчас в теме
Столкнулся с проблемой. При добавлении строки в табличную часть документ 8.3 Уформ через бромклиента - почему то если документ не содержит строк то добавление идет, если же нет, то просто игнорирует.
В общем заполняет только пустую таб часть.

Фрагмент кода
for st in rez:
            овссылка = st.Ссылка
            ов = овссылка.ПолучитьОбъект()
            стр = ов.СписокРабот.Добавить()
            стр.Количество = vremyaraboti
            ов.Записать()


Когда в 1С подобная конструкция работает, то строчка добавляется в конец таблицы. А здесь видимо как-то работает по другому. Или ошибка.
rvd_buzzer; +1 Ответить
31. rvd_buzzer 13.04.23 14:48 Сейчас в теме
(29) Вы как то смогли это обойти?
32. artspeed 179 13.04.23 15:19 Сейчас в теме
(31) я сделал справочник обработчик в 1с. И создание построчное. А в самой 1с написал процедуру обработки этих строк с последующим удалением после отработки. По сути получаю данные а потом как хочу так и обрабатываю.

Заметил еще один глюк. Проблемы с временными таблицами периодически наблюдаются в запросе из python.


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

В общем приспособился к багам. Жаль проект не развивается(
30. Steelvan 281 05.01.23 23:04 Сейчас в теме
Приветствую. уважаемые !

Скачал это решение, начал смотреть код.
Сходу замечание.

Во взятеле __get вы пользуетесь конструкцией Выбор.
Понятно, что это применяется для работы без учета регистра для php, который учитывает регистр.
Типа Объект.КлЮч или Объект.клюЧ чтобы работало.
Меня смущает применение mb_strtolower.
Мало того, что это расширение подключать надо, так оно еще и просадку дает по скорости.
Плюс пухнет кодовая база.

И это только ради эфемерного исправления опечатки в регистре ?
Вы серьезно ?

Ваш класс
```
class КлючИЗначение
{
    function __construct($ключ, $значение)
    {
        $this->key = $ключ;
        $this->value = $значение;
    }
    private $key;
    private $value;
    public function __get($name)
    {
        $strName = mb_strtolower($name);
        switch ($strName)
        {
            case 'ключ':
                return $this->key;
            case 'key':
                return $this->key;
            case 'значение':
                return $this->value;
            case 'value':
                return $this->value;
        }
        return null;
    }
...
}
Показать

```

Думается мне правильнее

```
class КлючИЗначение{
	
	public $Ключ;
	public $Значение;
	
	public function __construct($ВходКлюч, $ВходЗначение){
		$this->Ключ = $ВходКлюч;
		$this->Значение = $ВходЗначение;
	}
}
Показать

```

Код на порядок короче и без метода взятеля __get свойства "Ключ" и "Значение" доступны снаружи.
Кодопис на php и так знает что надо писать сразу в нужном регистре.
33. user1470785 03.06.23 02:39 Сейчас в теме
Интересно. А проект уже заброшен?
На сайте все еще реализация бета. И уже давно.
Оставьте свое сообщение

См. также

Перенос данных из Парус 8 в ЗГУ ред.3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    18374    13    0    

15

Перенос данных из Парус 10 в ЗГУ ред.3

Зарплата Внешние источники данных Кадровый учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    6111    3    8    

5

Автоматическая многопоточная выгрузка данных 1С 8.3 в БД Clickhouse (для работы с данными 1С в BI-системах)

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

Готовое решение для автоматизированной выгрузки данных из 1С 8.3 в базу данных ClickHouse для работы с данными 1С в Yandex Datalens, Apache Superset (и не только) - "Экстрактор данных 1С в BI". Решение отлично работает со всеми типовыми (и не только) конфигурациями 1С 8.3 для управляемых форм. Gозволяет автоматизировать работу бизнес-аналитика по ежедневной выгрузке данных из 1С в БД ClickHouse для последующей работы с этой БД в Yandex Datalens/ Система полностью автоматизирует работу с хранилищем данных в БД Clickhouse. Не надо быть программистом, чтобы одной кнопкой получать любые данные из 1С в Yandex Datalens

84000 руб.

15.11.2022    7080    4    23    

13

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Учет ТМЦ Бюджетный учет Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Внешняя обработка с открытым кодом.

9000 руб.

08.12.2011    77455    116    120    

137

Перенос данных из Парус 7.хх в ЗГУ ред.3

Внешние источники данных Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

24000 руб.

24.04.2017    44696    88    147    

80

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

Внешние источники данных Загрузка и выгрузка в Excel Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате из Парус 10(Торнадо) учреждений через файлы Excel в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ). В принципе, обработка может быть использована для загрузки из файлов Excel, полученных из любых информационных систем.

24000 руб.

16.11.2018    27387    18    29    

17

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Данная обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.

6000 руб.

02.02.2021    12720    28    43    

15

Обмен с СУФД (Федеральным казначейством) для Бухгалтерии предприятия 3.0

Внешние источники данных Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Комплект обработок для обмена СУФД и Бухгалтерии 3.0. Содержит две обработки: для переноса платежных поручений из БП 3.0 в СУФД Федерального казначейства и загрузки выписок из СУФД в БП 3.0.

2400 руб.

30.03.2023    3961    6    0    

9

Загрузка данных из F3 TAIL 3 (еФарма 2) в 1С: Бухгалтерия 3.0 (базовая, ПРОФ, КОРП)

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Бухгалтерский учет 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (базовая, ПРОФ, КОРП).

13200 руб.

19.12.2016    41239    76    101    

62

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ 3. Отчеты по данным загруженным в регистры сведений. Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен.

11856 руб.

25.05.2021    9736    6    4    

6

Драйвер облачной кассы для Бизнес.РУ Чеки

ККМ WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Универсальный драйвер для фискализации чеков для сервиса Бизнес.РУ. Чеки (https://online-check.business.ru/). Работает с любой кассой, подключенной к сервису, в том числе и без физической кассы (Аренда облачной ККТ в датацентре). Принцип работы аналогичен наличию физической кассы, подключенной к рабочему месту 1С. Фискализация выполняется с любого рабочего места через интернет. Нет ограничений на количество рабочих мест, касс, компьютеров. Поддерживает печать с нескольких рабочих мест на одну кассу. Работает в любой операционной системе (Windows, Linux) и в любом клиенте (Тонкий, Толстый, Web, Мобильный клиент).

6000 руб.

03.06.2021    10792    8    0    

5

Contragent+ 9.1 для 1С 8.2/8.3

Обработка справочников Обмен с ГосИС Взаиморасчеты WEB-интеграция Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Платные (руб)

Универсальная обработка для экспресс-регистрации новых и обновления реквизитов существующих элементов справочников «Контрагенты» & «Организации» по данным Федеральной Налоговой Службы РФ (ЕГРЮЛ&ЕГРИП). Минимизация ручного ввода и соответствие данных 1С учредительным сведениям юр. лиц & ИП.

3600 руб.

13.12.2012    89045    173    308    

248

SALE! 10%

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

10600 9540 руб.

28.05.2015    81746    25    51    

49

Прайс-лист с фотографиями, выгрузкой в Excel с подсчетом суммы заказа, загрузкой заказа в Управление торговлей 11 (Россия) и Управление торговлей для Беларуси 3

Прайсы Загрузка и выгрузка в Excel Оптовая торговля WEB-интеграция Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Прайс-лист для программы 1С: Управление торговлей 11 и Управление торговлей для Беларуси 3, позволяющий: 1) Формировать прайс-лист с фотографиями; 2) Сохранить прайс-лист в Excel с формулами, подсчитывающими количество и сумму заказа; 3) Передать сформированный прайс-лист по каналу ftp на сайт; 4) Сохранить прайс-лист в формате CSV; 5) Загрузить сделанный по прайс-листу заказ обратно в программу.

6000 руб.

04.09.2014    118136    42    105    

51

Загрузка спецификаций в УНФ из системы Базис-мебельщик

Производство готовой продукции (работ, услуг) Внешние источники данных Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

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

6000 руб.

24.06.2021    16083    42    36    

18

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    23164    7    0    

6

Поиск ИП/судебных участков по адресу и РОСП по адресу без использования api fssp

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Бюджетный учет Платные (руб)

Обработка получает данные в сайтов с информацией по судам/должникам/отделам ФССП по адресу и/или ИНН и идентификаторам. Актуальна в связи с отключением возможности получать эти данные по API.

2400 руб.

22.03.2023    2854    6    2    

4

Расширение 1СПАРК риски для 1С:Документооборот 8 КОРП

WEB-интеграция Управление взаимоотношениями с клиентами (CRM) Документооборот и делопроизводство (СЭД) Взаиморасчеты Платформа 1С v8.3 1С:Документооборот Бухгалтерский учет Управленческий учет Платные (руб)

Расширение для конфигурации 1С:Документооборот 8 КОРП, позволяющее с помощью сервиса "1СПАРК риски" проверять благонадежность контрагентов непосредственно из программы 1С.

7200 руб.

23.05.2018    27129    17    7    

14

Загрузка в БГУ из УРМ "Криста"

Внешние источники данных Банковские операции Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия государственного учреждения Россия Бухгалтерский учет Платные (руб)

Обработки для загрузки данных из УРМ "Криста" в бухгалтерию государственного учреждения редакция 2.0. Обработка условно-бесплатная - бесплатно в течение одного месяца со дня получения демонстрационного ключа регистрации. Поддерживает ПО "Web-исполнение" от НПО "Криста".

4800 руб.

19.06.2013    35784    133    83    

29

Sync1C: Синхронизация 1С и OpenCart

WEB-интеграция Оптовая торговля Розничная торговля Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Платные (руб)

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

3840 руб.

30.03.2018    39871    73    133    

77

Справочник кодов ТНВЭД

Обработка справочников WEB-интеграция Операции по ВЭД Учет ТМЦ Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием Платные (руб)

Загрузка справочника ТНВЭД в базу данных 1С без изменения конфигурации. База кодов загружается с сайта www.nalog.ru или локального ресурса. После загрузки - справочник всегда под рукой! Реализован поиск по загруженной базе. Доступны примечания для групп справочника (комментарии налогового органа). Дополнительно реализовано занесение кодов ТНВЭД в справочники ИБ (например, справочник Номенклатура) как реквизита или свойства справочника. Подходит для всех стандартных конфигураций (БП 2.0, УПП 1.3, КА 1.1, УТ 10.3, Розница 1 и пр., написанных под обычные формы).

3100 руб.

29.09.2015    52030    13    4    

36

Яндекс.Метрика - загрузка статистики в 1С:Предприятие 8

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

Хорошая основа вашего решения импорта данных статистики Яндекс.Метрики в информационную базу 1С. Получение счетчиков, запрос статистики, получение данных - все в одной обработке.

3600 руб.

21.06.2022    6522    1    0    

3

Заполнение контрагентов по ИНН для УТ 10.3

Обработка справочников WEB-интеграция Платформа 1С v8.3 1С:Управление торговлей 10 Россия Абонемент ($m)

Заполнение контрагентов по ИНН (1С: Управление торговлей 10.3).

6 стартмани

17.05.2022    7875    37    kostyan7    20    

1

Интеграция 1С:БИТ.Управление медицинским центром и amoCRM

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

Это законченное решение, которое позволяет в amoCRM получать данные о врачах и их свободном времени, в 1С создавать документ "Заявка", выгружать оплаты от клиента в лид. Тестировалось на конфигурации БИТ.Управление медицинским центром (2.0.46.43), платформа 1С:Предприятие 8.3 (8.3.16.1063), версия Python 3.10.1.

5400 руб.

28.01.2022    9635    1    2    

2

Обмен со СДЭК

WEB-интеграция Учет ТМЦ Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Обработка позволяет производить обмен между 1С Альфа Авто 5.1 и СДЭК по протоколу API.

6000 руб.

21.12.2021    8715    1    0    

2

Интеграция с КОМТЕТ Касса Курьер

WEB-интеграция Учет ТМЦ Платформа 1С v8.3 1С:Управление торговлей 10 Платные (руб)

Внешняя обработка предназначена для интеграции конфигурации Управление торговлей 10.3 с веб-сервисом КОМТЕТ Касса Курьер. КОМТЕТ Касса Курьер это сервис с возможностью распределения заказов по курьерам, быстрой корректировке заказов в момент доставки, печати чеков по 54-ФЗ в момент расчета с покупателем.

3480 руб.

20.12.2021    7945    1    0    

1

Интеграция 1С и OTRS: Синхронизация заметок тикетов

Управление проектом (PMO, EPM) Внешние источники данных Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х ИТ-компания Управленческий учет Абонемент ($m)

Внешняя обработка для интеграции 1С с системой обработки заявок OTRS. Предназначена для обмена информацией о заявках, позволяет создавать тикеты и заметки из 1С, загружать заметки (элементы тикетов, заявок) из OTRS в электронные письма. Использует API, предоставленный OTRS. Обмен работает как регламентное задание. Разработан на базе УТ 11.4 и OTRS 5s free.

6 стартмани

18.11.2021    6869    12    tps_01    0    

3