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

Публикация № 719982

Разработка - Практика программирования

OData REST HTTP обмен доступ создание удаление модификация

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

Эта работа является естественным продолжением моей предыдущей статьи "Практика доступа в базу 1С через протокол oData. Чтение данных" и все операции будут выполняться в той же демо-базе "Управление торговлей (базовая), редакция 10.3", к которой я предоставил доступ по OData в предыдущей статье.

 

Что нам нужно знать про HTTP?

OData - это протокол работы с данными поверх классического протокола HTTP. Это означает, что у каждого элемента данных есть свой URL, а чтобы сообщить серверу, что именно вам необходимо с этим элементом сделать (просто получить или изменить), используются HTTP-методы. Для многих эти сущности возможно будут новинкой. Ведь знание о HTTP-методах совершенно не нужно пользователям при их обычном интернет-серфинге (где тотально применяется GET). И даже веб-разработчики зачастую в курсе только про пару GET и POST, которые считают методами для отправки на сервер данных из форм.

Протокол OData подразумевает применение следующих пяти методов для работы с данными:

  • GET - самый популярный из методов, который предназначен для запроса данных на чтение по указанному адресу;
  • POST - метод для создания нового элемента данных, в качестве адреса обычно указывают только класс объектов;
  • PUT - метод для замены свойств элемента данных на сервере по указанному полному адресу теми свойствами, которые передаются вместе с этим запросом. Обычно в популярных реализациях этого метода передача неполного состава свойств приводит к ошибке; так же часто адресация несуществующего элемента данных приводит к его автоматическому созданию (как это было реализовано в платформе 1С посмотрим ниже);
  • PATCH - метод для обновления только переданных свойств элементов данных;
  • DELETE - метод предназначенный для удаления элементов данных.

 

Клиент для протокола OData

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

Есть несколько распространенных вариантов. Опытные веб-разработчики, хорошо знакомые с сетевыми технологиями, на этих словах уже запускают свой любимый Fiddler, в котором на закладке Composer можно эмулировать любой из HTTP-методов, а потом, переключившись на закладку Inspectors, посмотреть полученный от сервера ответ. А поклонники UNIX-way, даже работая на Windows, конечно же имеют в наличии старый добрый автомат Калашникова консольный cUrl, в котором с помощью ключа -X можно указать требуемый HTTP-метод.

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

	Соединение = Новый HTTPСоединение(Сервер, Порт, Логин, Пароль,,,?(СоединениеЗащищено, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено));
	ЗапросСервера = Новый HTTPЗапрос(ПутьНаСервере);
	ЗапросСервера.УстановитьТелоИзСтроки(ТелоЗапроса);
	ОтветСервера = Соединение.ВызватьHTTPМетод(Метод, ЗапросСервера);
	ТелоОтвета = ОтветСервера.ПолучитьТелоКакСтроку();
	ЗаголовкиОтвета = "Status Code: " + ОтветСервера.КодСостояния + Символы.ПС;
	Для каждого ЗначениеЗаголовка Из ОтветСервера.Заголовки Цикл
		ЗаголовкиОтвета = ЗаголовкиОтвета + Символы.ПС +
			ЗначениеЗаголовка.Ключ + " : " + ЗначениеЗаголовка.Значение;
	КонецЦикла; 

Если захотите ознакомится с моей обработкой во вложении, то там будет дополнительно разбор переданного URL с определением протокола (HTTP или HTTPS), вычисление порта и отбрасыванием из адреса прочую вспомогательную информацию. Выглядит примерно так:

Обработка по работе с HTTP-методами

Ломать - не строить

Для начала возьмем самую простую операцию - удаление, на примере контрагента "АОЗТ Лабан" из демо базы УТ10.3. Собственно повторяем вызов строчки из выше опубликованного скриншота, но вместо метода GET воспользуемся методом DELETE. Теперь вместо ответа 200 (все хорошо), сервер нам отвечает 204 (нет содержимого) - это нормальное поведение именно для удаления.

удаление ресурсаДавайте перейдем в саму базу 1С и по журналу регистрации проверим, что же произошло:

журнал с удалениями

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

побитые данные

Кстати, повторная попытка удалить элемент с помощью метода DELETE аналогично запросу с помощью GET приведет к ошибке 404 (не найдено):

запрос удаленного

 

Создаем новое (или старое)

Как жаль, что контрагента "АОЗТ Лабан" постигла такая печальная участь... А можем ли мы его спасти без восстановления базы из бэкапа или без выполнения кода непосредственно в УТ?

Начну с цитаты из документации:

Для создания объекта следует воспользоваться POST-запросом с использованием URL набора сущностей, передав в теле запроса документ (в поддерживаемом формате), который содержит значения полей создаваемого объекта. Если передаваемый документ содержит свойства, отсутствующие у создаваемого объекта, то эти свойства игнорируются.

Больше ничего у нас с вами нет. Ни перечня обязательных полей. Ни перечня исключаемых полей. Ни упоминания о возможности создания объекта с нужным нам значением GUID. Поэтому начинаем свободные эксперименты!

Еще с самого первого запроса GET у меня осталось описание контрагента, со свойством Ref_Key, в котором находился его GUID (даже если бы его у меня не было, то я мог получить его из документа, который все еще ссылается на удаленного контрагента). Сначала попробуем отдать полностью это описание на URL с указанием элемента. Ожидаемо получаем ошибку 404 как и в случае методов GET и DELETE (см. выше). Теперь обращаемся к "набору сущностей", как того требует документация:
http://localhost/DemoTrdBase/odata/standard.odata/Catalog_Контрагенты?$format=json

И на этот раз у нас все получилось:

запрос на созданиесоздание в журнале

Более того, все получилось именно так как и было задумано - новый элемент был создан именно с тем GUID (а следовательно с той же ссылкой) как и ранее удаленный! Это хорошо видно на документе закупки ТК000000030 от 13.03.2007, где контрагент появился, но его договора и типа цен по прежнему нет (их можно аналогично восстановить, воспользовавшись в качестве образца для структуры подчиненные данные похожего контрагента, лишь в качестве GUID подставив правильные строки):

исправленный документ

Это все превосходно, но а если у объекта множество свойств и они нам сейчас не интересны (пусть будут значения по умолчанию). Можем ли мы уменьшить размер передаваемого пакета и следовательно увеличить скорость гипотетического создания множества объектов в цикле? Для ответа на этот вопрос пойдем по пути экстремальной минимизации - попробуем создать элемент не указав ему вообще ни единого свойства!

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

Не то чего я ожидал, но тем не менее отличный результат! Следовательно все программно-обрабатываемые события объектов не игнорируются! Это вам не тупой прямой insert в СУБД, а процедура записи полностью идентичная программной записи из какой-нибудь обработки. Но все же, что же будет с датой? Для этого нам нужен более простой документ, который крепко не привязан к рабочим процессам в УТ, к примеру Событие:

создание события без даты

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

 

Теперь будем изменять (в хорошем смысле)

Как я уже упомянул выше, для изменения данных в базе 1С посредством OData можно использовать методы PUT и PATCH.

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

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

А что если не указывать все реквизиты? Действительно, практика показала, что можно не указывать все реквизиты объекта и эти свойства станут заполняться значениями по умолчанию, что иногда может быть удобным. Ниже пример, где у справочника были затерты введенные вручную полное наименование и параметры прописи для валюты:

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

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

попытка массового изменения

 

Итог

Не смотря на отсутствие некоторых удобств, протокол OData на платформе "1С:Предприятие 8" позволил нам совершать все базовые операции над данными. Таким образом, имея доступ в базу только по этому протоколу, можно реализовать полноценную интеграцию с некоторой внешней системой.

Статья вышла длинной не смотря на то, что были рассмотрены самые простые операции. Часть возможных интересных экспериментов была оставлена за кадром, но вы можете самостоятельно попрактиковаться. К примеру, как на счет записать набор записей по какому-нибудь из регистров? ;)

118

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

Наименование Файл Версия Размер
Обработка для выполнения HTTP-методов
.epf 7,69Kb
25.12.17
102
.epf 7,69Kb 102 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Adam12345678 9 02.01.18 05:50 Сейчас в теме
Интересная статья, спасибо.
2. DenisCh 02.01.18 06:58 Сейчас в теме
Соглашусь. Интересно.
baracuda; +1 Ответить
3. McSim_ 02.01.18 12:06 Сейчас в теме
"На самом интересном месте!.." :)
Как раз запросы к регистрам - самое интересное. Например, как получить сальдо на выбранном счёте на выбранную дату? Об этом информации в сети минимум.
5. Dementor 625 02.01.18 19:36 Сейчас в теме
(3) в третьей части как раз хотел поиграться с виртуальными таблицами, блокировками, режимом загрузки и прочими "функциями".
4. baracuda 2 02.01.18 12:29 Сейчас в теме
6. Vladimir Litvinenko 09.01.18 13:14 Сейчас в теме
В записи данных в 1С через OData, есть большая опасность, которая может дать сильного пинка архитектору системы при активном использовании. В GRASP есть фундаментальный шаблон Information Expert, более известный под общим названием "инкапсуляция". Его нарушение ведет к детским болезням программирования, последствия же для системы в целом могу оказаться совсем не детскими.

Если обращение на запись через OData выполняет более чем одна внешняя система, то даже изменение типа реквизита может превратиться в настоящую эпопею с подключением всех разработчиков всех этих внешних систем. Не говоря уже о скованности по рукам и ногам при изменении алгоритмов записи/проведения внутри системы принимающей данные. Заканчивается это либо тем, что на развитие системы построенной на OData "забивают", ввиду сложности изменений и необходимости постоянно координировать взаимодействие множества разработчиков, либо развитие продолжается, но титаническими неоправданными усилиями. Ну или еще один путь - переписать все с применением более подходящих технологий ))

Конечно это не в целом к технологии OData и REST относится. Просто в 1С подход так реализован, что сложно для OData красивый интерфейс сделать, с возможностями хоть как-то напоминающими web-сервисы или хотя бы http-сервисы. Единственный интерфейс - этот тот что предлагает платформа без возможности его изменения, при этом он больше напоминает прямую запись в SQL .... в каждую таблицу отдельно.... без транзакций )) Ибо оптимистические блокировки не сильно помогают в борьбе за целостность данных.

Для 1С сейчас OData хорош только в универсальных алгоритмах, где изменение типа реквизита, появление обязательного к заполнению реквизита или изменение алгоритма обработки входящих данных не ведет к катастрофам. Для этого в алгоритмах отправки данных надо анализировать данные /odata/standard.odata/$metadata. Но многие ли так делают? Из известных публикаций только Metadata.js вспоминается.

Пока что имхо OData в 1С лучше применять на чтение. И в тех случаях, когда временный сбой в чтении данных не скажется сильно на работе всей системы.
panika; kauksi; Adam12345678; +3 Ответить
7. Dementor 625 09.01.18 22:15 Сейчас в теме
(6) Спасибо за комментарий. Если его перевести на обычный язык, то вы хотели написать, что 1) при одновременной работе с интерфейсом нескольких клиентов возможны проблемы логической целостности; 2) при изменении метаданных базы 1С возникают проблемы в скриптах доступа. Ничего не пропустил?
9. Vladimir Litvinenko 10.01.18 13:44 Сейчас в теме
(7) Примерно так. По первому пункту проблема скорее даже не с количеством клиентов, а с тем, разные группы разработчиков отвечают за эти системы или это одна и та же команда. Скоординировать изменения кода в разнородных системах только потому, что произошли простейшие изменения в структуре объекта метаданных - сложная задача. При наличии же нормального интерфейса вроде web-сервиса или хотя бы http-сервиса рефакторинг или изменение логики происходит значительно проще.

По этим признакам реализация OData от 1С больше похожа на COM-подключение. Из плюсов - протокол http и кросплатформенность. Но ограничений еще больше: экспортные методы, целостность и согласованность данных, проверки при записи и т.д. Также нет объектной обертки к OData. Для взаимодействия между системами на 1С приходится писать обертки самостоятельно, чтобы в коде не было "простыни". Это облегчает ряд задач, но поскольку обертку можно применять только для алгоритмов отправки (на стороне клиента), то от главных проблем это увы не спасает.

Претензия разумеется не к публикации - плюсанул и буду ждать третью часть. Но хотел подчеркнуть эти ограничения, чтобы коллеги на грабли не наступали.
panika; kauksi; Adam12345678; +3 Ответить
8. Dos_1985 10.01.18 05:49 Сейчас в теме
10. Alien_job 168 16.01.18 14:34 Сейчас в теме
Спасибо за статью. Про ошибку при записи документа прокомментируете? У вас не написано что получилось изменить существующий в базе документ
11. Dementor 625 16.01.18 18:50 Сейчас в теме
(10)
У вас не написано что получилось изменить существующий в базе документ

С помощью POST это действительно невозможно. И это хорошо - должен же быть хоть какой-то порядок :) С методами PUT и PATCH нет никаких проблем по изменению существующих документов, если известен их идентификатор - в моих примерах документы были успешно модифицированы.
12. Alien_job 168 16.01.18 20:52 Сейчас в теме
(11) Ок, перепробую. Подскажете платформу на которой вы работаете?
13. Dementor 625 17.01.18 00:50 Сейчас в теме
(12) сейчас установлена 8.3.11.2867. На ней же сделаны примеры из статьи.
14. kauksi 206 05.03.18 11:29 Сейчас в теме
Все эти действия через oData напоминают известный анекдот... "про любителей секса с 1с в противогазе, стоя и в гамаке"
15. Dementor 625 05.03.18 15:08 Сейчас в теме
(14) Да не вопрос! Предложите более простой способ прочитать и изменить произвольные данные в базе 1С для стороннего программного комплекса без внесения изменений в саму базу 1С. И что бы на линуксах и маках работал.
16. kauksi 206 06.03.18 09:52 Сейчас в теме
(15) Всегда есть выбор: "толкать" данные или "тянуть". Пока что "тянуть извне" разнообразными средствами 1с гораздо проще чем "толкать в 1с" из линукса по oData.
18. Dementor 625 06.03.18 13:39 Сейчас в теме
(16) Для программиста легче. А для какого-нибудь веб-мастера все с точностью наоборот.
19. mikeA 1 06.03.18 14:36 Сейчас в теме
(15) По-моему ключевое слово здесь "без внесения изменений в конфигурацию". Однако когда дело доходит до доступа в базу по http внесение изменений в конфигурацию уже не представляет из себя проблему. И в этом случае гораздо удобнее http сервисы. Да, это не универсально, но плюсы таки да перевешивают.
20. Dementor 625 06.03.18 18:04 Сейчас в теме
(19) Согласен, что при наличии выбора SOAP или HTTP-сервис, последние имеют ряд преимуществ (как сравнивать ручной ввод новой НСИ и загрузку из Excel).

Но если речь идет про базы на поддержке и автообновлении, то все не так однозначно. Так же есть случая, когда компания купила коробку и более тратится на программиста не хочет, но обладает софтом, который умеет работать с SOAP. Можно сказать, что это "нишевая потребность", которая актуальна не для всех (так же как работа с двоичными данными или выражениями XPath).
17. kauksi 206 06.03.18 09:57 Сейчас в теме
ну либо использовать какую-нибудь промежуточную шину ESB, чтобы получать данные из сторонней системы и потом толкать их в 1с каким то общеизвестным методом. А то что вы описываете выше это интересно, но все же как ассемблер для 1с ввиду узкой спецификации
21. maxx 839 06.03.18 23:27 Сейчас в теме
Я как-то уже писал на форуме 1с, что при создании новых объектов через Odata не хватает метода Заполнить (вызов события ОбработкаЗаполнения)
22. la@pivoluchshe.ru 09.06.18 23:47 Сейчас в теме
Скачал Вашу обработку, запускаю на 1С Розница, редакция 2.2 (2.2.7.39) (1С:Предприятие 8.3 (8.3.11.2899)). Обработка запускается, но список объектов пустой. Подскажите, что сделать, чтобы обработка сработала?

Мне нужно именно для Розницы, для УТ воспользовался стандартной обработкой.

Спасибо
Прикрепленные файлы:
23. burnand2 15 05.03.19 16:35 Сейчас в теме
Добрый день.
Пытаюсь создать документ методом POST выдает ошибка 500: Не удалось записать документ.
Подскажите в чем может быть ошибка?
24. Dementor 625 06.03.19 12:34 Сейчас в теме
(23) я не помню какая ошибка при отказе в доступе по правам - возможно именно тут проблема. Или в алгоритмах ПередЗаписью, ПриЗаписи, ПриОтменеПроведения или ПриПроведении выставляется Отказ = Истина. Или банально ошибка в коде.

Ваши действия: 1) проверить журнал регистрации на предмет ошибок и сообщений про недостаток прав, 2) проверить права роли подключения и 3) если не получилось разобраться, подключится в отладке.
25. user1203390 15.04.19 14:11 Сейчас в теме
(24) А как решить проблему с 500 ошибкой при создании документа? У меня последний релиз Управление автотранспортом. По протоколу oData есть возможность выбрать все документы (Путевой лист) или конткретный по условию. Но get через http://host/Base/odata/standard.odata/Document_уатПутевойЛист(guid'key')/ возвращает ошибку 500, также как и POST PATCH запросы. Другие документы создаются и меняются(проверял только те, которые использую). Через http сервис отладкой выбрасывает сразу, нет возможности посмотреть откуда идёт ошибка. В какую сторону нужно смотреть?
26. e-9 16.04.19 17:08 Сейчас в теме
(25) в (24) в принципе уже отвечено
посмотрите в тело http-ответа - там могут быть подробности. Вот мне, например, в теле ответа пришло сообщение, что поле Date не заполнено. Заполнил - ушла ошибка 500.

Правда, вы непонятно пишете - то ли при создании/изменении, то ли при Get, ошибка 500 у вас?
Оставьте свое сообщение

См. также

Подборка программ для взаимодействия с ЕГАИС Промо

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

Вам нравятся запросы в 1С? 14

Инструменты и обработки Программист Конфигурация (md, cf) v8 v8::Запросы 1cv8.cf Абонемент ($m) Практика программирования Разработка

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    12572    1    m-rv    79       

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

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Разработка

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

1 стартмани

21.06.2019    17735    54    Evil Beaver    116       

INFOSTART MEETUP Krasnodar. 14 февраля 2020 г. Промо

Краснодар станет первым в 2020 году местом, где пройдет региональная встреча IT-специалистов сообщества Инфостарт. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Стоимость участия - 5000 рублей. Цена действительна до 26.12.2019.

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

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

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

1 стартмани

12.06.2019    17652    16    Hatson    22       

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

Статья Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования

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

1 стартмани

25.03.2019    19553    8    tormozit    44       

Сдача регламентированной отчетности из программ 1С Промо

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

от 1500 руб.

Работа с публикациями "Инфостарт" 15

Инструменты и обработки Программист Архив с данными v8 УУ Абонемент ($m) Практика программирования О сообществе WEB

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    11700    12    RocKeR_13    16       

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции 66

Инструменты и обработки Программист Бизнес-аналитик Приложение (apk) v8 Windows Абонемент ($m) Инструментарий разработчика Практика программирования

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

5 стартмани

09.08.2018    18444    23    informa1555    26       

PgConf.Russia 2020. 3-5 февраля 2020 г. Москва. Промо

PGConf.Russia – международная техническая конференция по открытой СУБД PostgreSQL, ежегодно собирающая более 700 разработчиков, администраторов баз данных и IT-менеджеров для обмена опытом и профессионального общения. Для участников сообщества infostart.ru скидка 5% на участие в конференции.

от 12350 рублей

Работа с данными выбора 44

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

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

1 стартмани

17.07.2018    26688    15    kalyaka    16       

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

Статья Системный администратор Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Практика программирования WEB

Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.

1 стартмани

15.07.2018    47585    18    dsdred    24       

Базовый курс по разработке мобильных 1C-приложений для Android-устройств. Третий поток. Онлайн-интенсив с 11 февраля по 05 марта 2020 г. Промо

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

7500 рублей

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") 105

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::Запросы 1cv8.cf Абонемент ($m) Практика программирования

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

1 стартмани

01.06.2018    21832    86    m-rv    57       

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

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

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

1 стартмани

10.05.2018    31620    30    dsdred    36       

Готовые переносы данных из различных конфигураций 1C Промо

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

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

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

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

2 стартмани

08.05.2018    19947    10    wowik    3       

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

Статья Программист Конфигурация (md, cf) v8 v8::Запросы Абонемент ($m) Инструментарий разработчика Практика программирования

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

1 стартмани

24.04.2018    31857    77    kalyaka    34       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

Заполняем по шаблону (по умолчанию) 70

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

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

1 стартмани

08.02.2018    19629    20    mvxyz    17       

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

Статья Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования

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

1 стартмани

01.02.2018    27521    63    rpgshnik    48       

Базовый курс для начинающих 1С-программистов. Пятый поток. Онлайн-курс с 12 февраля по 15 апреля 2020 г. Промо

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

4500/9500 рублей

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула 9

Отчеты и формы Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Печатные формы документов Практика программирования Универсальные функции

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    26262    25    agent00mouse    0       

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

Статья Системный администратор Программист Бизнес-аналитик Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Сервисные утилиты Практика программирования Администрирование данных 1С

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

1 стартмани

11.12.2017    67053    266    Dementor    44       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП 26

Инструменты и обработки Программист Расширение (cfe) v8 БП3.0 Абонемент ($m) Практика программирования Универсальные печатные формы

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

1 стартмани

06.12.2017    20349    52    kwazi    6       

Простой бесплатный DashBoard с помощью http сервиса 258

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) Практика программирования

Как создать свой DashBoard без дополнительных затрат и сложных технических доработок.

1 стартмани

25.11.2017    46843    60    dewersia    32       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Макеты СКД 293

Статья Программист Внешний отчет (ert,erf) v8 v8::СКД 1cv8.cf Абонемент ($m) Практика программирования

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

1 стартмани

25.07.2017    76565    115    json    25       

Расширения конфигураций 1С: учимся перехватывать методы 116

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

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

1 стартмани

30.05.2017    93546    14    signum2009    45       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

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

6500 рублей

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

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

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

26.05.2017    41443    168    DarkAn    86       

Открыто голосование за доклады на INFOSTART MEETUP Krasnodar Промо

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

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

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) Практика программирования

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

1 стартмани

28.09.2016    33934    39    ildarovich    22       

Что нам стоит Push построить 38

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

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

1 стартмани

08.09.2016    23498    23    PloAl    8