Александр Кунташов — про 1С и не только
2.46K subscribers
219 photos
10 videos
417 links
Заметки про разработку и смежные штуки: 1С, Vanessa Automation, DevOps в 1С, OneScript, PHP, Linux, JS, Python и всякое вокруг и около ИТ.
Download Telegram
Можно ли интегрировать облачную Бухгалтерию предприятия (1С:Фреш) с облачным Битрикс24?
#СекретыБитрикс24

Штатно в Бухгалтерии нет модуля "Обмен с сайтом", значит настроить обмен счетами штатными средствами между 1С и Б24 нельзя.

Функционал конфигураций на технологии 1С:Фреш можно кастомизировать только при помощи внешних обработок и/или расширений.

1С-трекер (выгрузка контрагентов из 1С в Б24) требует внедрения в конфигурацию, поэтому его нельзя установить.

Единственная штатная интеграция, выпущенная 1С-Битриксом, доступная сейчас в виде расширения, это Экспорт печатных форм и отчетов (https://1c.1c-bitrix.ru/intranet/download.php?id=6790661), теоретически (на практике я пока пытался этого сделать), это расширение можно установить в облако Фреш (я имею в виду https://1cfresh.com/, а не частное облако 1С:Фреш).

Как добавить расширение в облаке 1С:Фреше описано здесь: https://1cfresh.com/articles/so_addprocess

Есть возможность запустить приложение 1С:Фреш внутри Битрикс24. Это не совсем полноценная интеграция, приложения так и остаются независимыми просто 1С запускается внутри интерфейса Б24, тем не менее, кому-то может подойти: https://www.bitrix24.ru/apps/?app=bitrix.1cfresh

Ну и, наконец, есть вариант - написать для интеграции свое расширение для 1С (или внешнюю обработку), используя REST API Битрикс24.
#СекретыБитрикс24

Исходный вопрос: все привет. кто-то может подсказать пример получения всех, а не 50 элементов? я знаю, что есть метод batch, никак не пойму как правильно его использовать.
Если вообще, то выборка элементов порционная, по 50 элементов. В ответе вместе с первыми 50 элементами будет еще свойтво next . Для получения очередной порции данных нужно повторить исходный запрос добавив еще параметр start, значением у которого указать значение, полученное в next.

Если на js, то в битриксовой JS-библиотеке для работы с REST API у полученного result есть методы more() и next() которые реализуют описанный выше алгоритм "автоматически". Пример есть здесь: https://dev.1c-bitrix.ru/rest_help/crm/company/crm_company_list.php

Пакетным (батч) - запросом теоретически можно (на практике не делал), но его нужно формировать динамически (количество запросов в пакете будет КоличествоЭлементов в списке всего / 50). Значение next из предыдущего запроса нужно будет передавать как start = $result[qN-1][next], где qN-1 - идентификатор предыдущего запроса.
Можно ли интегрировать 1С:CRM компании Рарус и Битрикс24?
#СекретыБитрикс24

Вопрос: Кто встречал - https://solutions.1c.ru/catalog/crm-corp-20 для нее есть 1с-трекер, модуль обмена (заказы, котрагенты, товары)?

Если речь про чистую 1C:CRM 2.0, то, например, там нет такой сущности, как "Заказ" или "Счет", нет и модуля "Обмен с сайтом", значит штатная для Б24 интеграция с 1С (заказы, контрагенты, товары) работать не будет.

1С-трекер технически интегрировать можно, но потребуется его адаптация: в 1C:CRM есть необходимая структура справочников, но она немного отличается по составу реквизитов от УТ11 и других типовых конфигураций.

Но на самом деле довольно часто 1C:CRM не самостоятельно используют, а встраивают в УТ11, поэтому если в вашем случае это так, то тогда настройка интеграции сводится к интеграции с УТ11 (сможете и обмен заказами использовать, и 1С-трекер).
https://security.googleblog.com/2017/09/chromes-plan-to-distrust-symantec.html (нашлась и более ранняя публикация об этом на русском https://habrahabr.ru/post/334392/).

Хром начиная с релиза № 66 перестанет доверять SSL-сертификатам, выданным Symantec'ом до 1 июня 2016 года, а это сертификаты, выданные Thawte, VeriSign, Equifax, GeoTrust, RapidSSL, т.к. оказывается это все бренды Symantec.

Я наткнулся на это увидив сегодня в консоли хрома предупреждение:

The SSL certificate used to load resources from https://example.com will be distrusted in M70. Once distrusted, users will be prevented from loading these resources. See https://g.co/chrome/symantecpkicerts for more information.

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

Как я понимаю, это все продолжение вот этой вот (https://habrahabr.ru/post/267583/ ) истории с самовольным выпуском Symantec'ом сертификата для google.com (официально - в рамках тестирования инфраструктуры).

Удивляет меня то, как это сертификаты GeoTrust могли продавать после инцидента, ведь они довольно весомых денег стоят.
#СекретыБитрикс24

При разработке интеграции Б24 с 1С:Бухгалтерией наткнулся на ошибку получения реквизитов в пакетном запросе.

Делаю пакетный запрос с целью получить реквизиты компании, связанные со счетом:

BX24.callBatch({
lnk: ['crm.requisite.link.get', { entityTypeId: 5, entityId:63 }],
req: ['crm.requisite.get', { id : '$result[lnk][REQUISITE_ID]'}]
},
function(result) {
console.log(result.req.data());
}
);


Получаю ошибку при выполнении второго запроса req:

{"req":{"error":"","error_description":"Resource \u0027GET\u0027 is not supported in current context."}}


Если задать id в запросе req статично, то результат возвращается корректно.
Это методы реквизитов не поддерживают макросы в составе пакетного запроса или у меня глаз замылился и я макрос не правильно написал?

Та же ошибка возникает, если вместо макроса $result[lnk][REQUISITE_ID] передать конкретный ID (но первый запрос оставить).

Если первый запрос удалить, а во втором указать конкретное значение, то ошибки не будет.
Также ошибки не будет, если выполнить в пакете несколько запросов `crm.requisite.get. Т.е. ошибка возникает только если одновременно выполняются два указанных вида запроса.

Отладка кода в коробке показала что есть ошибка в методе CCrmRestService::onRestServiceMethod (https://bxapi.ru/src/?module_id=crm&name=CCrmRestService::onRestServiceMethod): для методов crm.requisite.* и crm.requisite.link.* используются разные прокси-объекты, но кэшируются они все по одному и тому же ключу "requisite", в итоге в пакетном запросе кто первый из них в пакете вызывается, то прокси того объекта сохраняется в кэш и далее только он и работает для обоих методов, что и приводит к указанной ошибке.

Написал в поддержку Б24 в чате, а пока обход один: разделить один пакет на два: в одном получить ID связанных со счетом реквизитов, а в другом уже получать сами реквизиты.
#СекретыБитрикс24

Битрикс24 сегодня снова прилег и с учетом того, что российский сегмент облака Б24 последнее время часто стало колбасить, то становится очень актуальным лайвхак (только для новых порталов!):

Для тех кому не критично* соблюдение ФЗ-242 нужно регистрироваться на https://www.bitrix24.com/
После регистрации внизу страницы переключаете язык на русский и наслаждаетесь бесперебойной работой, не зависящей от коммутаторов российских провайдеров.

* Ну, например тестовые порталы для проверки своих решений или портал для личных целей (как система управления задачами).
1сники такие 1сники. Для справки, Serf (англ.)=Раб/крепостной/ишак (Имелось в виду, конечно, surf :)
#webdev #restapi
https://standards.rest/

Ссылки на различные стандарты и спецификации, которыми рекомендуется руководствоваться при создании REST API
#1Script #webdev

https://infostart.ru/public/783435/

Андрей Овсянкин осваивает новую нишу для OneScript'а - веб-приложения. Безусловно целевая аудитория есть, и поэтому мне не понятен троллинг коллег.

Кстати, на вопрос "Зачем?", который в разных формах периодически задают есть универсальный ответ (если другие не нравятся) - "Just For Fun", который еще Линус Торвальдс использовал в качестве названия своей книги (рекомендую). И очень круто, когда этот фан перерастает в классный открытый, восстребованный продукт с одним из лучших 1Сных коммьюнити.
#codesmells: Как не надо именовать функции и переменные.
https://www.corpsoft24.ru/about/news/razyasnenie-intsidenta/

Корпсофт написал официальное письмо, почему их ДЦ лежали с пятницы (а как известно, с ним лежал весь RU-сегмент облачного #Битрикс24, а это Россия, Беларусь и Казахстан). Если кратко: во всем виноваты (русские?) хакеры. Якобы была атака на канал связи между ДЦ, а коммутаторов у них на самом деле больше, чем один, как ругался Сергей Рыжиков у себя в ФБ. Заявление в отдел "К" на хакеров написали.

Если честно, в данной ситуации не удивляет ни сам факт падения, ни причина (независимо от ее правдивости), а то, что официально написали только вчера а, в сегодняшнем пресс-релизе добавили оговорку в духе "вот теперь нас вынудили написать":

Читая негативные, эмоциональные, искренние, хотя и не всегда обоснованные комментарии в интернете, мы понимаем, что просто обязаны дать официальное объяснение по поводу произошедшего.
#1C #UX "Гибкость" обычных форм 1С во всей красе
Давно не имел дела с #1С:УНФ (года три уже), "но вот опять" и не могу нарадоваться, какой удобной и продуманной по крайней мере с точки зрения UI ее сделали. Вспомнились тут хейтеры управляемых форм, которым гибкости ОФ не хватает, а следом вспомнилась и любимая картинка про обычные формы :)
Прекрасный симулятор управления проектами от Бюро Горбунова
https://bureau.ru/books/fff/demo/17 из интерактивной книги Товеровского

#УправлениеПроектами
#СекретыБитрикс24

Новая подстава от 1С-трекера: контрагентов-индивидуальных предпринимателей он выгружает некорректно - они попадают в Контакты, а должны - в Компании. (Воспроизводится во всех версиях 1С-трекера, включая текущую 2.2.)

Ок, про этот случай, хоть и с натяжкой, но можно было бы сказать, что он частный и не всегда восстребованый, если бы не одно: если у этого ИП есть сотрудники и мы указываем их в УТ в качестве контактных лиц, то 1С-трекер при выгрузке упадет с ошибкой вида:

Ошибки: Batch row 0:Company not found. Field COMPANY_ORIGIN_ID - \u0027ad9987ac-00ea-11e8-96f6-70e28412689c\u0027 is invalid


При этом не выгрузится ни текущий пакет, ни последующие. Из текста ошибки рядовой пользователь ничего понять не сможет (вообще, с обработкой ошибок в 1С-трекере беда: если с точки зрения Б24 данные невалидны, например, пользователь ввел некорректный email, то не будет загружен весь пакет и сообщение об ошибке не блещет понятностью; логично делать валидацию на стороне 1С, но нет, почему-то не сделали).

Причина ошибки вот в чем. В УТ11 в справочнике Контрагенты есть два одинаковых по смыслу реквизита: ЮрФизЛицо (тип ПеречислениеСсылка.ЮрФизЛицо) и ЮридическоеФизическоеЛицо (ПеречислениеСсылка.ЮридическоеФизическоеЛицо). Такая ситуация, честно говоря, выглядит нелепо, но она объяснимая: второй реквизит - служебный, в конфигурации присутствует для совместимости с Библиотекой типов и никак явно в УТ не используется (заполняется автоматически по данным реквзита ЮрФизЛицо). У ЮрФизЛица диапазон значений больше, и когда ЮрФизЛицо = ИндивидуальныйПредприниматель, то реквизит ЮридическоеФизическоеЛицо становится равным ФизическоеЛицо (т.к. там всего два допустимых значений - ФизическоеЛицо и ЮридическоеЛицо).

В 1С-трекере отбор контрагентов, которых надо выгрузить в качестве Контактов осуществляется как раз по реквизиту ЮридическоеФизическоеЛицо, в результате сам контрагент выгружается в Контакты, а не в Компании. В то же время его контактные лица выгружаются в Б24 в Контакты с указанием ссылки на компанию-владельца (тот самый COMPANY_ORIGIN_ID в сообщении с ошибкой), а компании с такой ссылкой в Б24 не существует.

Для решения проблемы нужно в СКД СхемаВыгрузкиКомпаний в запросе изменить условие запроса с

Контрагенты.ЮридическоеФизическоеЛицо = ЗНАЧЕНИЕ(Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо)

на

Контрагенты.ЮрФизЛицо <> ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ФизЛицо)
Самая первая порция коммитов в #xUnitFor1C выглядит символично в виде единицы :) Кажется, это вообще, самое первое появление кода #1С на GitHub.