Александр Кунташов — про 1С и не только
2.47K subscribers
219 photos
10 videos
417 links
Заметки про разработку и смежные штуки: 1С, Vanessa Automation, DevOps в 1С, OneScript, PHP, Linux, JS, Python и всякое вокруг и около ИТ.
Download Telegram
#СекретыБитрикс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.
https://isthisdesign.org/

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

Что говорить, Лустин и Серебряная пуля давно пытаются подружить "вселенную 1С" с миром "true-разработки", с одной стороны внедряя промышленные технологии разработки в быт 1сника, с другой - рассказывая про экосистему 1С тем, кто находится за ее пределами.

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

Я Алексея знаю уже очень давно (а SB с самого рождения) и с самого первого знакомства (еще заочного) тоже неоднократно делал эту самую мину. Что говорить, и сейчас иногда все еще делаю. Но я тоже гик как минимум наполовину, поэтому интерес не теряю. При этом спустя все эти годы я не могу не признать, что какими бы непрактичными/нереалистичными, а иногда эпатажными и даже неуместными* мне ни казались предлагаемые сочетания "1C и <ЧтоТо>", в конечном итоге от этой движухи всегда появлялся положительный эффект в виде решения реальных проблем или идей, наталкивающих на такие решения.

Я на ГикФест поехать хочу, и, надеюсь, удастся в ближайшее время утрясти свои планы на конец мая и договориться с близкими. Так что, рад буду пересечься, коллеги :)

* Нет, я не про попытку встроить чип с 1С на борту в человека, на это пока даже SB не решаются, хотя это не точно. И нет, вопросы этики тут, очевидно, не стоят, т.к. сам факт программирования на 1С все эти вопросы снимает автоматически, если вы понимаете, о чем я.
#1С #ГикФест
К вопросу о контакте 1Сников с миром за пределами экосистемы 1С:

1. "Зажигательные чуваки" из Серебряной пули упомянуты в подкасте https://razbor-poletov.com/2018/01/episode-152.html (с 46:30) как "авторы CI/CD по-русски (как в 1С)". Зацепили одного из соведущих трубопроводом :)

2. Еще надавно тема 1С в одном из выпусков легендарного radio-t поднималась: Бобук топил что-то в духе "язык и платформа гуано, а вот Нуралиев - Б-г маркетинга". Тут точно ссылку не найду, это был кажется 582 или какой-то соседний выпуск.
Александр Кунташов — про 1С и не только pinned «https://isthisdesign.org/ Грядет еще одна тусовка 1Сников, на сей раз с гиковским уклоном и, думаю, очевидно, кто организует (бывалые 1сники уже по доменному имени могли догадаться, кто за всем стоит). Что говорить, Лустин и Серебряная пуля давно пытаются…»
#СекретыБитрикс24

Как известно, после недавнего большого падения облако Битрикс24 переехало в немецкий датацентр AWS.

После этого у нескольких моих клиентов и у меня на тестовом стенде штатный обмен товарами и счетами периодически стал падать то с ошибкой "Не удалось получить данные с сервера", то "Не удалось установить соединение с сервером https://example.bitrix24.ru".

Ошибка плавающая - то обмен ломался, то снова начинал работать. Воспроизводится на платформе во всех версиях УТ 11.3 при работе на платформе 1С:Предприятие 8.3 (проверил в том числе на актуальном на сегодня релизе 11.3.4.185). В 11.4 ошибка исправлена (проверил на актуальном 11.4.2.139).

Кратко о причине: ошибка в сигнатуре конструктора объекта HTTPСоединение при установке соединения для обмена, которая проявилась на фоне предположительно увеличевшегося пинга до портала в связи с переездом облака в другой ДЦ.

Подробнее о причине ошибки и код для исправления - по ссылке: https://kuntashov.ru/b24/httpconn.html