Е.БУДНИ программиста 1С | Роман Чумадин
4.58K subscribers
118 photos
25 videos
3 files
137 links
Ежедневные будни программиста 1С - это канал с реальными задачами с работы, с собеседований и повседневные хитрости, подборки и гайды. Подойдет как для начинающих, так и для опытных

Купить рекламу: https://telega.in/c/e_budni_programmer
Автор: @chum1roma
Download Telegram
🪆 Матрешки, стек вызова и замер производительности

В ранних постах затрагивались такие темы как точка останова и табло, которые помогают отлаживать различные механизмы, но кроме них есть ещё полезные функции конфигуратора:
1. Стек вызовов;
2. Замер производительности;
3. Горячие клавиши хождения по процедурам и функциям.
-----------------------
🔹Стек вызовов. Работает в режиме конфигуратора при отладке. Вызывается либо специальной кнопкой на панели инструментов, либо с помощью горячих клавиш Ctrl+Alt+C. Данный инструмент помогает определить, откуда первично была вызвана текущая функция (в которую мы попали по точке останова).
-----------------------
🔹Замер производительности. Помогает не только в вычислении проблемных участков кода (с точки зрения оптимизации, частота и время вызова), но и понять, что вызывается за определенный момент времени. Например, в предприятии нажимаем кнопку, но вообще непонятно, что перед нами за форма, какая процедура отрабатывает и т.п., тогда мы включаем замер производительности, после чего нажимаем на кнопку, и после останавливаем замер производительности, таким образом мы увидим, какие функции вызывались и по объектам можно найти контекст.
-----------------------
🔹Горячие клавиши. Помогают легче перемещаться по иерархии вызовов процедур и функций в коде.
F12 – переход к определению процедуры или функций на которой установлен курсор;
Ctrl + (минус) - перемещает назад в модуль, из которого ушли через F12;
Если с горячей клавишей F12 все просто и понятно, то про Ctrl + (минус), думаю, знают не все, так как я научился ими пользоваться только на второй год работы)
-----------------------
Если вы ещё не пользовались данными инструментами, то рекомендую освоить!👍 Эти механизмы помогут вам гораздо проще и быстрее разбираться с чужим кодом, а в особенности с типовыми конфигурациями, в том числе с «матрешками» (вызовы процедур и функций в других модулях).

-----------------------
Справочная информация по 1С >>>
http://tttttt.me/wiki1c

#ЕБ_Повседневность
🆕 Не типовое сравнение в конфигураторе 1С

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

В конфигураторе уже есть предустановленные параметры запуска самых распространённых программ:
🔸 Araxis Merge;
🔸 DiffMerge;
🔸 Kdiff3;
🔸 TortoiseMerge;
🔸 Perforce P4Merge.

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

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

А вы используете стороннее ПО для сравнения/объединения? Пишите свой опыт в комментариях под постом с опросом 💬

Случайный пост >>>
Новшества платформы 8.3.23, пока все говорят про ПАУЗА() 8.3.25

#ЕБ_Повседневность
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет!👋

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

Почему это актуально, и чем может помочь консультация с ментором❗️
1️⃣ Нет возможности спросить у коллег по разным причинам (заняты, их нет на месте, работа в одного и т.п.), либо они уже посылают подальше;
2️⃣ Не хочется показаться не компетентным перед знакомыми; ментор же может быть в другом городе;
3️⃣ Нет времени самому изучать какой-то новый механизм, при этом этот механизм знаком ментору;
4️⃣ И самая частая ситуация даже у опытных разработчиков «да бл…, должно же работать», тут выручает взгляд со стороны 👀 Иногда я и сам обращаюсь к коллегам, когда уже ну все проверил, а оно не работает.

Если вам требуется помощь ментора, то вот ссылка на мой профиль 😎 на GetMentor >>> https://getmentor.dev/mentor/roman-chumadin-1678
Please open Telegram to view this post
VIEW IN TELEGRAM
Как сидят разработчики)

А вы на чем сидите? (Скидывайте фото в комменты)
Сделай пост сам! 😎

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

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

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

Преимущества для данного канала:
🔸 новый взгляд;
🔸 новые темы;
🔸 взаимодействие с аудиторией.

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

Случайный пост >>>
Форматирование текста модулей
Please open Telegram to view this post
VIEW IN TELEGRAM
&ИзменениеИКонтроль в расширениях

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

Механизм расширений постоянно развивается, за этим стоит следить, так как никогда не знаешь в какой момент это тебе пригодится.

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

С версии платформы 1С 8.3.15 появилась возможность заменять код основной конфигурации в режиме «Вызывать вместо (с контролем)», что добавляет аннотацию «&ИзменениеИКонтроль». Это позволяет при проверке применимости расширения удостовериться, что код основной конфигурации после обновления не изменился относительно той версии Процедуры/Функции которая была до внесения изменений.

При данной аннотации необходимо применять специальные вставки:
🔸 Для удаления участков кода: #Удаление и #КонецУдаления
🔸 Для добавления участков кода: #Вставка и #КонецВставки

Процесс работы данной аннотации схож с аннотацией «Вместо», но дополняется контролем. При вызове проверки применения можно даже сразу и восстановить изменения (доступно при использовании сторонних программ сравнения объединения, можно почитать в прошлом посте).

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


Случайный пост >>>
Главный инструмент любого 1Сника – Точка останова!

#ЕБ_Повседневность
‼️Декомпозиция

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

👨‍💻Общаясь с коллегами про такие принципы, мы заговорили про декомпозицию задач. Декомпозиция – это операция мышления, состоящая в разделении целого на части.🤔

Например, когда нам прилетает здоровенная задача, которую нужно быстро решить, а мы начинаем мыслить «то делать то и с чего начать, она же такая большая, пойду попью чаёк…»🤯. Так вот, декомпозиция задач позволяет разбить её на более мелкие части и задачи, а в особенности на те, которые мы уже умеем решать.

Более живой пример:
❗️Задача: Выгрузить номенклатуру с ценами на сайт в формате JSON.

Абстрагируемся от уже имеющихся готовых решений и попробуем разбить на более простые блоки:
🔸 1. Получить данные запросом из справочника Номенклатура и соединять её с РС Цены номенклатуры;
🔸 2. Сформировать текст в формате JSON содержащий структурируемые данные;
🔸 3. Узнать какое подключение к сайту.
🔸 4. Собрать все в удобном интерфейсе.

В итоге у нас четкий план из простых задач.

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

Случайный пост >>>
ТОП книг по 1С

#ЕБ_Повседневность
#ЕБ_Оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
Второй дайджест на канале за «второй квартал»!

Апрель не в счет)

Посты с 01.05.23 по 30.06.23:
- Что можно «тащить» с работы?
- Жизнь с РНПТ. Новая обработка для БП
- Нас уже больше 1000!!!
- Подсвечивание идентификатора
- ТОП 3 сборника задач по 1С
- Что даст условие NULL = NULL в запросе?
- А что вас мотивирует на работе?
- Программист года. Премии и награды
- В ТАБЛО ТЕБЕ за помощью!
- Портал из цифрового мира в реальный. Или про 3D-печать
- Матрешки, стек вызова и замер производительности
- Не типовое сравнение в конфигураторе 1С
- Аннотация &ИзменениеИКонтроль в расширениях
- Декомпозиция

Из нововведений на канале:
🔹 Появилась возможность сделать пост каждому подписчику, а также прорекламировать себя или свой продукт. Подробное в этом посте
🔹 На 1000 подписчиков разработан уникальный стикерпак канала Е.Будни
🔹 Под каждым постом добавляется ссылка на случайный пост, что позволяет вернуться к прошлым, не менее интересным и полезным темам.

А также консультация со мной по-прежнему доступна через площадку GetMentor. Об одной из причин по которым можно обратиться к ментору я рассказывал в этом посте.
Е.БУДНИ программиста 1С | Роман Чумадин pinned «Второй дайджест на канале за «второй квартал»! Апрель не в счет) Посты с 01.05.23 по 30.06.23: - Что можно «тащить» с работы? - Жизнь с РНПТ. Новая обработка для БП - Нас уже больше 1000!!! - Подсвечивание идентификатора - ТОП 3 сборника задач по 1С…»
Обмен 1С с 1С-Битрикс на кейсе веб-интегратора Extyl

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

Недавно сделали корпоративный сайт для Yokohama на 1С-Битрикс, чтобы обеспечить работоспособность ecom-проекта и интеграцию с 1С, за счет кастомизации готовых модулей CMS.
Обмен данными между системами 1C и 1C-Bitrix обычно включает несколько технических этапов.
Ниже — основные шаги для установки обмена:

1. Установка и настройка обеих систем:
Для 1С некоторых конфигураций, есть встроенный модуль обмена, но с ограниченными возможностями – поддерживается Импорт каталога товаров из 1С на сайт и Экспорт заказов с сайта в 1С. Для полноценного обмена этих данных и настроек недостаточно, поэтому существуют дополнительные модули, для расширения возможностей обмена с 1C-Bitrix.
В 1C-Bitrix есть готовый модуль для обмена с 1С, благодаря которому обмен легко можно настроить под свои требования.

2. Определение структуры данных позволит облегчить процесс обмена.
Для настройки доступен обмен:
Номенклатура – товары, цены, остатки, свойства, предложения.
Данные по заказам - Заказ товара, Отпуск товара.
Контрагенты – Пользователи.
Справочники – любой справочник из 1с.

3. Настройка обмена данными в 1C
В системе 1C необходимо настроить параметры обмена для каждого режима данных и создать узел обмена или несколько. Из 1С в 1C-Bitrix приходят следующие файлы:
import.xml - данные по товарам;
offers.xml - торговые предложения и их свойствах;
prices.xml - цены;
rests.xml - остатки;
references.xml - пользовательские справочники.
documents.xml - заказы и отгрузка;
contragents.xml - контрагенты-пользователи;

4. Настройка обмена данными в 1C-Bitrix:
В системе 1C-Bitrix нужно настроить интеграцию с 1C, указав настройки обмена и соответствующие сопоставления полей обмена. Из 1с файлы выгружаются в следующие папки 1С-Bitrix:
/upload/1c_catalog/ - данные по товарам
/upload/1c_exchange/ - данные по заказам
/upload/1c_highloadblock/ - данные по справочникам

5. Тестирование и отладка
После настройки обмена данными необходимо провести тестирование для проверки правильности передачи данных и выявления возможных ошибок. В этом шаге можно использовать тестовые данные для проверки сценариев обмена. Для отладки в 1C-Bitrix можно включить соответствующий режим с помощью define("BX_CATALOG_IMPORT_1C_PRESERVE", true); — при установке данной константы вместо удаления данных из папок, папка будет переименовываться с увеличенным числовым идентификатором.

6. Запуск в режиме эксплуатации
После успешного тестирования и отладки можно запустить обмен данными в режиме реальной эксплуатации. Убедитесь, что механизм автоматического обмена настроен правильно и функционирует стабильно, так же необходимо убрать константу define("BX_CATALOG_IMPORT_1C_PRESERVE", true); — иначе будет создаваться огромное количество папок и забивать диск.

Больше про оптимизацию — в канале Extyl.
У вас есть сертификат 1С: Специалист?
Anonymous Poll
19%
Да
74%
Нет
6%
Что это?
Сертификат 1С:Специалист

Всем привет! Решил поделиться своими мыслями по поводу данного сертификата.

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

В комьюнити 1С мнение относительно данного экзамена расходятся.

У меня нет сертификата 1С:Специалист. И каких либо проблем при трудоустройстве я не испытывал, не считая первой попытки трудоустроиться во франч, там это было испытательным сроком.
Но на моем пути были попытки подготовиться к сдаче, открывал сборники задач и как-то мотивации не хватало дойти до конца, так как вроде и не нужен.
Ещё попадались части задач в виде тестового задания при трудоустройстве.

А вы что думаете по сертификату 1С: Специалист? 💬

-------------

На днях записался на онлайн-курс: подготовка к экзамену "Специалист по платформе 1С:Предприятие 8.3". С 17 июля по 18 сентября. Автор - Павел Белоусов.

Для чего?

1. В практике по менторству подготовка к сдаче данного сертификата очень частый запрос, а свежих курсов и подготовительных материалов не так много.
2. Повторение мать учения, никогда лишним не будет, тем более с опытом на некоторые вещи смотришь иначе и под другим углом.
3. Интересно попробовать после прохождения курса сдать на спеца, чтобы понять, а достаточно ли пройти просто курс, с ДЗ, все как положено. Как пишут в описании - сдают 70% учащихся. Сейчас кажется, сдать сертификат спеца можно только зубрежкой задач, но быть может есть другой вариант...
4. В начале карьеры проходил курс Павла Чистова, остались положительные впечатления и очень часто сравнивают с курсами Павла Белоусова, интересно сравнить на личном опыте.

Если надумаете тоже пройти курс и у вас нет аккаунта на Инфостарта, то переходите по моей ссылке, это будет также дополнительной помощью в развитии канала -
https://infostart.ru/edu/690157/?ref=1586

Кто проходил, знаком, есть опыт успешной сдачи, пишите в комментариях 💬


Случайный пост >>>
ТОП 3 сборника задач по 1С

#ЕБ_Повседневность
Please open Telegram to view this post
VIEW IN TELEGRAM
Выбираем меньшее из зол в вопросе оптимизации

Автор - Евгения

В этой заметке я предлагаю поразмышлять над выбором решения, которое предотвратит звонок разъярённого админа с фразой «Какая … опять положила сервак?!».

Все мы знаем, что запросы в цикле — это нехорошо. Нехорошо настолько, что вас выгонят с экзамена на спеца 1С без шансов оправдаться.

Но давайте рассмотрим ситуацию, когда, казалось бы, без запроса в цикле не обойтись.

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

🔸1 – решение в лоб (и наиболее часто встречаемое) – запрос в цикле. Для каждой строки файла мы делаем запрос к базе, получаем данные из базы, формируем запись, пишем.

Особенности:

1. DDoS-атака на сервер. Если объём данных мал – ничего страшного. Если много – ждите звонка админа.

2. Долго..

Попробуем избежать исключения с экзамена.. И сделать так:

🔸2 – Считываем файл в таблицу значений, индексируем колонку артикул. Нужные данные из БД получаем запросом, с отбором по артикулу(массив, выгруженный из первой таблицы). Далее, используя метод найти, формируем запись, соединяя данные двух таблиц, пишем.

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

🔸3- Как и в варианте 2, считываем данные из файла в таблицу значений. Рисуем запрос к БД для получения дополнительной информации, используя первую таблицу как временную таблицу и уже к ней соединением крепим данные из БД. На выходе у нас выборка, по мере обхода которой, формируем запись и пишем.

Особенности метода: Кушаем оперативную память. Временная таблица не всегда является оптимальным решением. Сервер по собственному разумению может сбросить нашу временную таблицу на диск, и мы теряем скорость. Опасность неконтролируемого разрастания TempDB (это в целом про временные таблицы. Маловероятно, что конкретно наша задача будет виновником данной ситуации). Но в большинстве случаев вариант отработает быстрее чем вариант 2.

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

----------------------

Пост написан по программе "Напиши пост сам".

У Евгении есть свой канал по тематике ИТ и 1С: 1024B

Поддержите лайками и подпиской!
Пауза() по старинке

В ожидании метода «Пауза()» в новых версиях платформы, мне попалась задача вызвать в коде на сервере паузу между асинхронными вызовами API (сначала отправляем данные, потом получаем данные).

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

Для себя выделил самым интересным вариант как «ОжидатьЗавершенияВыполнения» для фонового задания.

---------------

Процедура Пауза(Секунд) Экспорт

ТекущийСеансИБ = ПолучитьТекущийСеансИнформационнойБазы();
ФоновоеЗадание = ТекущийСеансИБ.ПолучитьФоновоеЗадание();

Если ФоновоеЗадание = Неопределено Тогда
Параметры = Новый Массив;
Параметры.Добавить(Секунд);
ФоновоеЗадание = ФоновыеЗадания.Выполнить("НашМодуль.Пауза", Параметры);
КонецЕсли;

Попытка
ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Секунд);
Исключение
Возврат;
КонецПопытки;

КонецПроцедуры

---------------

А какой вариант используете вы и почему? Пишите в комментариях 💬

Случайный пост >>>
ТОП 7 возможностей БСП

#ЕБ_Повседневность
Please open Telegram to view this post
VIEW IN TELEGRAM