HTTP Сервисы: Путь к своему сервису. Часть 4

Публикация № 893304 28.09.18

Разработка - Инструментарий разработчика

HTTP-сервис API JSON IIS http web apache сервис Публикатор Линк PAPI Pretty API atom-xml XML OData Код состояния СКД БСП Длительные операции

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 3». В предыдущих частях мы уже о многом поговорили. В этой части поговорим про размер сообщений, о файлах, о порциях и немножко, о регламентах.
  • В первой части мы создали каркас для Get метода в расширении конфигурации. 
  • Во второй части мы поработали с OData и создали обработку, получающую через HTTP-Сервис используя метод Get данные сформированные при помощи СКД.
  • В третьей части мы поработали со всеми методами. Сделали пример формирующий данные при помощи СКД, работающий как через Get, так и через Post. Также поработали с длительными операциями.

В этой части поговорим о такой важной вещи как порционная передача данных. Работать будем в основном с методами GET и POST, немножко затронем OData.

HTTP-сервис будет в расширении конфигурации БСП 3.0.1.231 на платформе 8.3.12.1595.

Начнем.

Немножко про OData и порции.

Есть у OData сильный недостаток, если хотите его испытать сделайте запрос к самому большему объекту в вашей боевой базе, ну и попробуйте поработать. Вскоре пользователи прибегут к вам сами.

Для того чтобы такого не происходило нужно делать следующие вещи:

  1. Делайте выборку только по тем реквизитам, которые вам нужны. Для этого используйте $select.
  2. Перед тем как делать запрос уточните количество записей. Для этого используйте $count.
  • count - Позволяет получить в качестве результата запроса размер выборки. При успешном выполнении, тело ответа должно содержать только число элементов коллекции, отформатированное как обычное число.
  1. Если записей много забирайте их порциями через $top и $skip.
  • top - Ограничивает количество записей, возвращаемых при обращении к ресурсу.
  • skip - Позволяет исключить из результата запроса первые несколько записей. Если параметры $top и $skip указываются одновременно, то параметр $skip будет применен раньше, чем параметр $top. Приоритет применения параметров не зависит от порядка их указания в теле запроса.
  1. Я бы еще рекомендовал использовать JSON, так как меньше весит, но тут на вкус и цвет…

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

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

Узнаем сколько в справочнике элементов. Наш запрос будет таким: http://127.0.0.1/DemoSSL3_0_1_231/odata/standard.odata/Catalog_КлассификаторБанков/$count?$select=Ref_Key,Description,Code,DeletionMark,IsFolder&$format=json;odata=nometadata

4774 элемента. Далее набросаем обработку.

Создаем реквизиты:

  • КоличествоСтраниц – Число. Получаем путем округления в большую сторону количество элементов\Порцию
  • КоличествоЭлементов – Число. Количество элементов полученных по OData.
  • ОбъектКонфигурации – Строка. Представление элемента в OData.
  • Порция – Число. Количество элементов на странице.
  • Результат – Строка.
  • ТекущаяСтраница – Число.
  • Селект - Строка. Кусок запроса с параметрами выборки. В нашем примере "$select=Ref_Key,Description,Code,DeletionMark,IsFolder&"

Создаем Команды:

  • НачальнаяЗагрузка – Загружаем количество элементов и рассчитываем количество страниц.
  • Вперед – Загружаем следующую порцию.
  • Назад – загружаем предыдущую порцию.

 
 Модуль формы
 
 Результат

Таким образом мы организовали порционное считывание данных по OData.

Ограничения по размеру файлов\данных. Дробление и порции.

В третьей части мы вскользь уже говорили о том, что по средствам метода POST можно передавать большие объемы данных, но ограничение в объеме все же есть и у данного метода. Настройка ограничения по умолчанию в IIS равна 30000000(байт) или 28,61(мегабайт) и находится тут:

Для Apache по ограничениям не скажу, не использую его более 5-ти лет, поэтому не знаю, что там за это время изменилось.

 
 Пример дробления файла

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

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

Естественно речь идет про некую структуру данных в формате JSON или XML (есть варианты и других форматов, но нам это сейчас неинтересно). Будем использовать порции.

Предлагаю сделать через методы POST и GET нечто подобное, что мы сделали выше по OData.

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

1 Вариант. Через запрос.

 
 Суть метода

Для начала давайте нарисуем сервис возвращающий количество элементов и массив последних ссылок в порциях. При этом массив с последними ссылками оставим на стороне сервера хранящего данные в справочнике PAPI_ХранилищеРезультатов, созданном в предыдущей статье (Часть 3). Сервис будет называться «ПолучитьКоличествоЭлементовВариантЗапрос», наименование объекта будем подавать параметром ItemName, количество объектов в порции будем подавать параметром top. Затем создадим метод «ПолучитьПорциюЭлементовВариантЗапроса» и будем подавать в него те же параметры, что и в предыдущем методе и номер страницы (порции) параметром page.

Правим справочник PAPI_ХранилищеРезультатов.

Добавляем реквизиты:

  • МетодЗапроса – Строка(200).
  • ПараметрыЗапроса – Строка(200).
  • ДатаЗапроса – Дата и время. Будем считать, что данные актуальны в течение дня

Правим модуль PAPI_ОбщиеПроцедурыИФункции. Добавим в него несколько функций и процедуру по получению элементов. И вынесем в него часто встречающийся код по преобразованию в формат JSON.

 
 Код модуля PAPI_ОбщиеПроцедурыИФункции

Правим модули PAPI_ОбработкаМетодовGET и PAPI_ОбработкаМетодовPOST и PAPI_ОбработкаУниверсальныхМетодов. Добавляем в него наши методы.

 
 Код модуля PAPI_ОбработкаМетодовGET
 
 Код модуля PAPI_ОбработкаМетодовPOST
 
 Код модуля PAPI_ОбработкаУниверсальныхМетодов

Правим обработку, которую делали ранее для примера с OData. 

Создаем реквизит:

  • МетодСервиса – Строка. Будет хранить список значений (Пример 1 - OData(1_1), Пример 1 - Get(1_2), Пример 1 - Post(1_3))

Добавляем декорацию (ДекорацияРазмерОтвета) для вывода "Content-Length" из заголовка ответа и меняем модуль формы.

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

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

2 Вариант. Через Планы обмена.

Тут все просто. Регистрируем все на узле и бьем на сообщения в зависимости от порции.

Давайте нарисуем сервис возвращающий количество элементов и регистрирующий элементы справочника на узле. Будет использован план обмена _ДемоАвтономнаяРабота из БСП. Сервис будет называться «ПолучитьКоличествоЭлементовВариантПланОбмена», наименование объекта будем подавать параметром ItemName, количество объектов в порции будем подавать параметром top. Затем создадим метод «ПолучитьПорциюЭлементовВариантПланОбмена» и будем подавать в него те же параметры, что и в предыдущем методе и номер страницы (порции) параметром page.

Правим модуль PAPI_ОбщиеПроцедурыИФункции. Добавим в него Область РаботаСПланОбмена и Вспомогательную процедуру.

 
 Код модуля PAPI_ОбщиеПроцедурыИФункции

Правим модули PAPI_ОбработкаМетодовGET и PAPI_ОбработкаМетодовPOST и PAPI_ОбработкаУниверсальныхМетодов. Добавляем в него наши методы.

 
 Код модуля PAPI_ОбработкаМетодовGET
 
 Код модуля PAPI_ОбработкаМетодовPOST
 
 Код модуля PAPI_ОбработкаУниверсальныхМетодов

Правим обработку. Реквизиту МетодСервиса добавляем 2 значения Пример 2 - Get(2_1) и Пример 2 - Post(2_2)
Меняем модуль формы.

 
 Модуль формы
 
 Результат

Посмотрим запросом, что лежит на узле:

ВЫБРАТЬ
	КлассификаторБанковИзменения.Ссылка КАК Ссылка,
	КлассификаторБанковИзменения.НомерСообщения КАК НомерСообщения
ИЗ
	Справочник.КлассификаторБанков.Изменения КАК КлассификаторБанковИзменения
ГДЕ
	КлассификаторБанковИзменения.Узел = &Узел

УПОРЯДОЧИТЬ ПО
	НомерСообщения
ИТОГИ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Ссылка)
ПО
	НомерСообщения

  • В методе «ПолучитьКоличествоЭлементовВариантПланОбмена» я чищу узел и перезаполняю его, но лучше нарисовать регламент и все новые элементы распределять на новые сообщения либо прямо в методе проверять есть ли новые элементы без номеров сообщений.

Метод с узлами более правильный, чем метод запросом!

Четвертую часть заканчиваю. Мы рассмотрели с Вами методы порционной передачи данных на примере OData и методов GET и POST. Файлы мы рассмотрели вскользь, по крайней мере у меня потребность передачи файлов встречается очень редко.

Надеюсь данные примеры будут полезны в Вашей работе!

Статьи из данного цикла:

HTTP Сервисы: Путь к своему сервису. Часть 1

HTTP Сервисы: Путь к своему сервису. Часть 2

HTTP Сервисы: Путь к своему сервису. Часть 3

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

Наименование Файл Версия Размер
Расширение с рассмотренными примерами сервисов. (Под 8.3.12)

.cfe 36,66Kb
40
.cfe 0.0.5 36,66Kb 40 Скачать
Внешняя обработка созданная по ходу статьи (HTTP-сервисы часть4)

.epf 9,75Kb
33
.epf 0.1 9,75Kb 33 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. zhuravlev_as 361 03.10.18 11:18 Сейчас в теме
Сейчас пока добавил в избранное. Но подсказывает интуиция, что "не за горой" момент, когда опыт, изложенный в данной публикации, может пригодиться.
eeeio; dsdred; +2 Ответить
2. nicxxx 248 02.01.19 19:29 Сейчас в теме
Вместо метода ПолучитьДатуВремяИзСтроки() можно применить платформенный XMLЗначение():
XMLDate = СтруктураЗапроса.ПараметрыЗапроса.Получить("Date");
Date = XMLЗначение(Тип("Дата"), XMLDate);
3. dsdred 2608 04.01.19 18:08 Сейчас в теме
(2)Вариантов масса. Можно и в ПрочитатьJSON указать тип
4. user805602 16.04.19 12:49 Сейчас в теме
На Java работа с Web-сервисами проще. А в 1С, после ваших статей, я выберу для обмена Com.
Обмен через блокнот, выглядит проще.
5. dsdred 2608 16.04.19 13:11 Сейчас в теме
(4)
На Java работа с Web-сервисами проще.

Чем проще?

А в 1С, после ваших статей, я выберу для обмена Com.
Обмен через блокнот, выглядит проще.

Это только выглядит. Чем Вас так напугали http-сервисы?
6. user805602 17.04.19 04:27 Сейчас в теме
(5) Статья мне понравилась.
На первый взгляд я не увидел шаблонизаторов, помогающих делать веб-страницу. У вас данные возвращаются в текстовом виде.
А в самом 1с много чего не хватает. Например, коллекций, приходится в основном всё пихать в таблицу значений.
Про выгрузку в текстовый документ я упомянул потому, что результат будет такой же, только не надо разворачивать IIS/Apache
7. dsdred 2608 17.04.19 21:20 Сейчас в теме
(6)
Про выгрузку в текстовый документ я упомянул потому, что результат будет такой же, только не надо разворачивать IIS/Apache


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

Одно скажу, Com уже более 4-х лет не использую. Показываю только для того чтобы оценили их тормознутость и согласились идти другими способами. Показывал как то один тестовый пример, обходил справочник используя Com проверяя реквизит на определенное значение. Тоже самое делал по OData.
В итоге Com молотил 30 с чем то минут, OData около 3 минут. Удивленные лица многого стоят.
Емельянов Алексей; user805602; +2 Ответить
8. newbigrator 20.04.19 21:58 Сейчас в теме
Я вот что не понял в варианте с планом обмена - вы понаписали кучу функций и кода, ок.
Но ведь подразумевается что при использовании OData 1C просто открывает свои объекты, доступные по этому интерфейсу. А тут получается что все равно нужно дописывать функции.
То есть я всегда воспринимал OData как вариант, когда ничего делать не надо. А тут получается надо и только тогда взлетает.
Чем тогда он отличается от веб сервисов то..
9. dsdred 2608 21.04.19 11:10 Сейчас в теме
(8)Odata показывал только вариант с использованием $top и $skip напрямую к справочнику без использования плана обмена. Соответственно код был только для организации порционного вывода в обработке.
Если вы откроете Результат, то увидите там непосредственно ссылки которые формируются для получения данных.

Запрос: http://127.0.0.1/DemoSSL3_0_1_231/odata/standard.odata/Catalog_КлассификаторБанков/$count?$select=Ref_Key,Description,Code,DeletionMark,IsFolder&$format=json;odata=nometadata

Запрос: http://127.0.0.1/DemoSSL3_0_1_231/odata/standard.odata/Catalog_КлассификаторБанков?$top=1000&$skip=0&$select=Ref_Key,Description,Code,DeletionMark,IsFolder&$format=json;odata=nometadata
...
Запрос: http://127.0.0.1/DemoSSL3_0_1_231/odata/standard.odata/Catalog_КлассификаторБанков?$top=1000&$skip=4000&$select=Ref_Key,Description,Code,DeletionMark,IsFolder&$format=json;odata=nometadata

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


Вариант с планом который я показал, был через http-сервис. (Не по OData)
Поясню:
По Odata мы открываем объекты, можем даже план обмена открыть, но в плане есть атворегистрация и программная регистрация. Чаще всего авторегистрация не годится для нормального обмена с разными складами\магазинами\организациями, так как нужна некая фильтрация данных в разрезе Склада\организации\магазина и тут в принципе без программного вмешательства не обойтись чтобы раскидывать по узлам.
10. newbigrator 21.04.19 16:37 Сейчас в теме
(9) Теперь понял.
Но хочу уточнить, все таки при OData не годится для случая когда нужно вычитать какую то Изменившуюся порцию.
Вы согласны?

Ваш пример про top и skip хорош и в целом позволяет читать порции, но это количественные порции.
А прочитать изменившуются порцию через OData как я понимаю не получится, ну то есть подключить функционал плана обмена и через него соединится с таблицами изменениями.. или все таки можно?
11. dsdred 2608 21.04.19 21:58 Сейчас в теме
(10)Можно по ODate получать из Плана изменившуются порцию -> https://its.1c.ru/db/v8314doc#bookmark:dev:TI000001394

Пробовал года 2 назад через postman с бухгалтерии получать, вот пример запроса:
http://127.0.0.1/BuhObmenVesi/odata/standard.odata/SelectChanges?DataExchangePoint='http://127.0.0.1/BuhObmenVesi/odata/standard.odata/ExchangePlan_ПоОрганизации(guid'1c95d6bd-4942-11e7-8430-d897ba0899c9')'&MessageNo=0&$format=json;odata=nometadata

Не помню почему сделал в итоге через http-сервис... Давно было,. не вспомню.
12. Diversus 2290 02.12.19 14:10 Сейчас в теме
Добрый день. Спасибо за цикл статей. Скажите, а вы не сталкивались с вопросом авторизации в http-сервисе и выхода из режима авторизации? Скажем так: если при работе с Http-сервисом ввести логин и пароль пользователя, то для того, чтобы выйти из этого режима и снова попросить авторизацию необходимо перезапустить apache/IIS.
Если сталкивались поделитесь решением. Сейчас это нигде не освещено.
13. dsdred 2608 03.12.19 11:32 Сейчас в теме
(12)Честно говоря не сталкивался. Можно будет поэкспериментировать.
14. vbuots 20 29.06.20 09:43 Сейчас в теме
Подскажите пож. как правильно организовать работу с http сервисом с аутентификацией? Т.е. сначала авторизация с токеном, затем открыт доступ к запросам в БД..
15. dsdred 2608 29.06.20 11:39 Сейчас в теме
(14)Добрый день.
В зависимости от задачи.
http-сервис для внутреннего и для внешнего использования имеют очень разные схемы реализации.
Трудно сказать, что есть "правильно". Много зависит именно от цели.

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

Сразу продумайте по сеансам (Ограничение на время, на количество запросов и т.д)
По токенам (будут они временные или постоянные с заменой в определенный период)
Продумайте доступ к методам и т.д.

П.С. Я использую разные варианты в зависимости от задачи.
16. src 17.09.21 12:27 Сейчас в теме
Приятная статья, спасибо автору за труды...
17. sml 36 23.09.21 15:16 Сейчас в теме
жирно плюсую Автору за оч. полезную информацию.
Хорошо бы в статьях (особенно для тех, кто читает не все статьи подряд) отмечать добавляемый код на стороне Запрашивающей и стороне Формирующей ответ.
18. dsdred 2608 23.09.21 15:43 Сейчас в теме
(17)
Хорошо бы в статьях (особенно для тех, кто читает не все статьи подряд) отмечать добавляемый код на стороне Запрашивающей и стороне Формирующей ответ

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

См. также

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

Инструментарий разработчика Платформа 1С v8.3 Запросы Абонемент ($m)

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

1 стартмани

24.04.2018    59261    kalyaka    40    

212

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

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

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

26.05.2017    54016    DarkAn    87    

196

Hello world на metadata.js

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Про браузерные offline-first приложения можно написать миллионы слов. Сэкономлю своё и ваше время и перейду сразу к делу. В статье не будет рекламы и агитации за новые технологии, не будет критики традиционных или попсовых решений. Рассмотрим по шагам разработку простейшей программы на metadata.js. Постараюсь сделать акцент не на том «как это сделано», а «почему сделано именно так»

1 стартмани

11.08.2016    78948    unpete    209    

268

Создание внешних печатных форм под управляемым приложением с нуля

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

Когда мне пришлось создавать внешние печатные формы под приложения на БСП ("1С: Бухгалтерия предприятия 3.0", "1С: Управление торговлей 11"), я обнаружил, что нет грамотных инструкций. Те, что имелись, использовали так называемые шаблоны: готовые обработки, в которых необходимо выполнять определенные корректировки. Но как создать сам шаблон, конкретных мануалов не было, справочную информацию я нашел на сайте ИТС и, обработав ее, написал статью, где подробно и понятно объясняются все этапы создания внешней печатной формы для управляемого приложения на примере конфигурации "1С: Бухгалтерия предприятия 3.0"

1 стартмани

05.06.2014    372084    signum2009    136    

688

Таблица символов, или что скрывает обычный шрифт

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

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

1 стартмани

05.04.2023    1467    Alxby    4    

35

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

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

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

1 стартмани

09.03.2020    41489    tormozit    17    

88

Справочный адресный склад

Инструментарий разработчика Учет ТМЦ Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Абонемент ($m)

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

1 стартмани

01.04.2023    664    alexey_kurdyukov    8    

7

Пустая форма объекта в расширении

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Создание пустой формы объекта в расширении для добавления элементов формы программно или для изменения процедур формы объекта.

1 стартмани

16.02.2023    1295    Mx00    12    

18

Гонка конфигураторов с помощью экзекутора

Инструментарий разработчика DevOps и автоматизация разработки Механизмы платформы 1С Платформа 1С v8.3 Абонемент ($m)

Выгружать конфигурацию в файлы в последнее время стало супер модно. Контроль версий, Git, CI/CD и вот это вот все. Исходники как тексты сегодня нужны всем. Но возникают вопросы: а каким методом лучше и быстрее выгружать конфигурацию в файлы, а какая версия платформы справляется с этой задачей оперативнее? Моя статья постарается ответить на эти вопросы. Как говорится, заставим попотеть ваши конфигураторы. С помощью 1С Исполнителя 2.0 мы выгрузим конфигурацию ЗУП, используя платформу пяти версий, от 8.3.18 до 8.3.22.

1 стартмани

16.11.2022    3527    infosoft-v    40    

44

[ЕХТ] Фреймворк для Расширений 1С: Обработка событий: описание, примеры и демобаза.

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

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

21.10.2022    2022    mszsuz    6    

20

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

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

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

1 стартмани

17.09.2019    17494    ids79    46    

63

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

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

07.08.2020    9875    BuriyLesha    20    

152

Подсветка синтаксиса 1C (в том числе языка запросов) в Notepad++

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Конфигуратор 1С как редактор кода не всегда удовлетворяет потребностям программиста в управлении кода. Я зачастую с завистью вспоминаю другие среды разработки программ, и нередко копировал куски 1С кода в стороннюю программу для каких-либо манипуляций - например, Notepad++. К сожалению, в нём нет встроенной поддержки синтаксиса кода 1С, из-за чего пришлось определять свой. Вот об этом я и расскажу.

1 стартмани

27.03.2012    39421    CratosX    35    

87

Запуск фонового задания во внешней обработке без регистрации в справочнике "Дополнительные отчеты и обработки"

Инструментарий разработчика Управляемые формы 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

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

1 стартмани

09.03.2020    14369    VinnieThePOOH    10    

65

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

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Абонемент ($m)

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

2 стартмани

31.01.2020    25939    burni4    16    

67

Таблица значений - синтаксический сахар

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Ещё одна идея добавления "синтаксического сахара" в язык 1С для работы с коллекцией значения: Таблица значений.

1 стартмани

05.01.2020    3285    a45    12    

6

Полезный код для программистов 1С (часть 1). Управление свойствами элементов формы. Хранение копии данных реквизитов

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

У каждого программиста за время работы накапливается полезный инструментарий, которым он привык пользоваться. Естественно и у меня он тоже имеется. И вот решено было немного поделиться с сообществом. Возможно идеи не новые. Более того, допускаю, что реализованы они не самым оптимальным образом. Но ведь для этого сообщество и существует, чтобы делиться с ним, получая обратную связь.

1 стартмани

24.09.2017    47955    vandalsvq    80    

152

Хороший заказчик - плохой заказчик

О жизни Россия Бесплатно (free)

Лайфхак о том, как стать легендарным клиентом.

13.09.2019    8850    dsdred    24    

33

Самый примитивный HTTP-сервис в мире

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

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

12.09.2019    29807    Infostart    27    

240

Централизованное управление кластером 1С Предприятия, состоящим из нескольких рабочих серверов, работающих на платформе GNU/Linux

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

26.08.2019    5006    Sloth    0    

18

Просто комбо, два в одном, или как напечатать два макета (стандартный и измененный) одной печатной формы

Инструментарий разработчика Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бухгалтерский учет Абонемент ($m)

Алгоритм и расширение (как пример) демонстрируют механизм одновременного использования двух макетов (стандартного и измененного), принадлежащих одной записи регистра «Макеты печатных форм» («ПользовательскиеМакетыПечати») в конфигурации «1С:Бухгалтерия предприятия, редакция 3.0».

1 стартмани

26.06.2019    6147    delta    0    

3

Использование фреймворка "Тестирование 3.0" (https://testingtool.ru) для тестирования веб-приложений

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Рассматривается использование фреймворка "Тестирование 3.0" (https://testingtool.ru) для тестирования веб-приложений.

1 стартмани

24.12.2018    6131    AlexKo    9    

20

HTTP Сервисы: Путь к своему сервису. Часть 2

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

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 1». В этой части будет "Микс" из OData+HTTP-Сервис(Get)+СКД. Наш пример будет работать как в браузере, так и в написанной нами обработке. Работать будем с разными версиями платформ.

1 стартмани

13.08.2018    55872    dsdred    2    

167

Сортировка метаданных с учетом объектов на замке

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

16.08.2018    5037    Olenevod    1    

12

Мониторинг журнала регистрации при помощи Powershell

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Работа с журналом регистрации в формате SQLite внешними средствами на примере мониторинга изменений в конфигурации базы данных.

1 стартмани

12.07.2018    14473    user768334    7    

30

Как написать COM-объект для 1С на Visual Studio C# 2008

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Расширяем функционал 1С с помощью разработки подключаемого COM-объекта! Пишем код на Visual C# 2008 для открытия CD-ROM'а, получения списка процессов и использования возможностей системы text-to-speech.

5 стартмани

11.09.2012    87994    RainyAugust22    59    

206

Заполнение документа Word без ComОбъект

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Идея написать публикацию пришла после прочтения очередного рассказа о том, как файл Word заполнялся через COM-объект в клиент-серверном варианте. При этом падал Сервер 1С. Зачем в принципе использовать файлы Word как шаблоны? Ну, допустим, в организации используется некая внутренняя отчетность, выполнения в корпоративном стиле, и переделать ее на привычные табличные документы нет возможности.

1 стартмани

08.07.2018    22642    nbeliaev    39    

110

Использование регулярных выражений (RegExp) в Linux

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Описывается способ использования регулярных выражений (RegExp) в Linux с использованием тех же компонентов, что и в Windows (COM-объекты VBScript.RegExp).

1 стартмани

20.04.2018    10119    vsbronnikov    12    

1

Тестирование: пример создания сценарного UI теста для платформы 1С

Инструментарий разработчика Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Абонемент ($m)

В этой статье мы расскажем, как создать сценарный UI-тест. Опишем последовательность действий и покажем, как это сделать с использованием инструментария. Рассмотрим пример, максимально приближенный к боевому, покажем на примере конфигураций УТ11/ERP проверку бизнес-процесса "Продажа". Вы сможете убедиться, что создание сценарных тестов для платформы 1С на самом деле относительно быстрый и простой процесс.

1 стартмани

17.04.2018    25979    ivanov660    11    

99

Обработка печатной формы WORD клиент-сервер УФ

Инструментарий разработчика Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Это моя первая статья на данном портале, но попытаюсь изложить все понятно и подробно. Долгое время у меня заняло создание такой вот внешней обработки. Есть очень много примеров, как сделать подобное на неуправляемых формах (2.0) и очень мало информации касательно управляемых(3.0), по крайней мере я многого найти не смог в доступе. Создание подобное обработки выглядит вполне несложно, если производить все действия на сервере, как это было с 2.0, но в нашем случае необходимо инициализировать открытие документа на клиенте, чему сильно мешает отсутствие возможности передать макет Active Document с сервера на клиент.

2 стартмани

14.03.2018    32308    LeoKeyn    46    

43

Консоль запросов со встроенным Конструктором запросов для 1с8.3 (8.2) своими руками

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

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

1 стартмани

21.12.2017    27340    jan-pechka    26    

17

Практика доступа в базу 1С через протокол oData. Чтение данных

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Для чего нужен доступ в базу 1С через REST-интерфейс по протокол oData? Как его организовать? Как не будучи гуру в JavaScript и .NET получить быстрый визуальный доступ к данным базы 1С? Попробую дать ответ на эти вопросы и прокомментирую некоторые нюансы, с которыми я столкнулся.

1 стартмани

11.12.2017    141147    Dementor    74    

396

Интеграция сценарного тестирования в процесс разработки

Инструментарий разработчика Управляемые формы Абонемент ($m)

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

1 стартмани

04.07.2017    33073    grumagargler    30    

209

Передача параметра из формы документа в форму выбора. 1С: 8.2, обычные формы

Инструментарий разработчика Платформа 1С v8.3 1С:Управление торговлей 10 Абонемент ($m)

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

1 стартмани

18.05.2017    9951    Sanek32    6    

1

Нормализация структуры данных в рамках технологий 1С 8.x

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

09.04.2014    69622    Evgen.Ponomarenko    66    

136

Текстовые экспандеры - в помощь программисту 1С

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Каждый человек старается по возможности облегчить себе труд. Программисты не исключение. Каждый день мы сталкиваемся с необходимостью писать однотипные фрагменты программного кода. Для автоматизации этого процесса система 1С:Предприятие позволяет использовать шаблоны текста (как стандартные, так и созданные пользователем). Казалось бы, что еще нужно разработчику? Однако, в некоторых случаях, стандартных средств разработки все-таки бывает недостаточно. Например, разрабатывая правила обмена в конфигурации 1С:Конвертация данных, приходится писать довольно большие тексты, не имея при этом возможности воспользоваться ни автоподстановкой, ни шаблонами. Либо, приходя к очередному клиенту, Вы обнаруживаете, что нужно написать, допустим, самую обычную печатную форму, которую Вы писали тысячу раз, но процесс ее создания может занять продолжительное время. Как раз в этом случае и могут помочь программы для вставки часто используемых выражений – текстовые экспандеры.

1 стартмани

27.07.2011    27633    tomvlad    44    

119