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

Купить рекламу: https://telega.in/c/e_budni_programmer
Автор: @chum1roma
Download Telegram
Так видит меня нейросеть. Мысли и заметки с конференции!

Далеко не все доклады удалось посмотреть, но для участников они уже доступны в записи, а для остальных они через какой-то период попадают в общий доступ, как понимаю.

🔸 Было несколько докладов о нашумевшем использовании нейросетей в работе.
Варианты:
- Для автоматизации поддержки, то есть нейросеть обучили инструкциям и она отвечает на вопросы пользователей.
- Для написания (используя вашу базу) или описания (что делает) кода через Copilot.
Тема очень нашумевшая и интересная, но большинство сервисов не позволяют либо внести оплату, либо даже просто использовать сервисы на территории России.

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

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

❗️ И самая важная мысль для новичков и не только, не помню на каком докладе была или пришла мне, это выполнение запросов в консоли в рабочей базе только при обдуманной необходимости. То есть, если нет необходимости, то консолью запроса для отладки запроса лучше пользоваться в копии базы и в идеале на отдельном сервере. Так как запрос без отбора или с соединением без условия может положить всю базу. И на это натыкаются не только новички, но и профессионалы с многолетним опытом)

А на фото - это переделанная моя фотография, которую делали на входе конференции)

Случайный пост > > >
ХЕШ строка

#ЕБ_Повседневность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔝 3 сервисов по тестированию 1С навыков и знаний

🔸 1. 1Skiller от Programming Store. Есть 2 варианта тестов: платный и бесплатный. Бесплатный чем-то похож на профессионала от 1С, но вопросы больше по специалисту 1С. В платной версии нет вариантов ответа.
*В бесплатной версии без подготовки набрал 81 из 100 баллов, если пройдете, пишите результаты в комментарии.

🔸 2. 1С-ТЕСТЦЕНТР от компании КРОН совместно с фирмой 1С. Платный, но слышал положительные отзывы. Если кто проходил, поделитесь опытом.

🔸 3. 1С:Учебное тестирование. Подходит для новичков, для проверки своих навыков перед экзаменом 1С:Профессионал.

Легендарный 1С:Профессионал. Не включен в ТОП 3, так как не всегда доступен онлайн.

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

---------------
Лично я считаю все тесты достаточно условными. Так как с чем-то можно не работать, что-то забывается, но при этом ищется за секунды во время работы и т.п.
А как вы относитесь к тестам по навыкам работы с 1С

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

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

Так как работаю в найме, у меня редко появляются решения для общего использования, но иногда все-таки появляются. Решил попробовать сервис 42clouds.com.

Несколько заметок по моментам, с которыми столкнулся, касаются больше применения БСП на практике, и могут пригодиться где-то ещё:

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

Код запроса разрешения будет выглядеть следующим образом:
РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина, "Сохранение данных декларации во временные файлы и последующее их чтение");


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

3. Нельзя обращаться к имени обработки напрямую из кода.
В моей обработки была дополнительная форма и открыть её простым способом не вышло - ОткрытьФорму("ВнешняяОбработки._ИмяОбработки_.Форма»)
Так как уникальное имя изменяется при работе через сервис.
Для решения данной проблемы нашел два решения:

- Вычислять имя формы из полного имени основной формы:
Лев(ЭтотОбъект.ИмяФормы, СтрНайти(ЭтотОбъект.ИмяФормы, ".", НаправлениеПоиска.СКонца)) + ИмяНужнойФормы


- Либо как советуют разработчики сервиса через ПолноеИмя() через Метаданные() в процедуре ПриСозданииНаСервере определить полное имя объекта для дальнейшего обращения к нему:
ПолноеИмяОбъекта = РеквизитФормыВЗначение("Объект").Метаданные().ПолноеИмя();

И далее в месте использования писать:
ПолноеИмяОбъекта + ".ЧтоНамТребуется"


-------------
Кто знает подобные сервисы, кроме Инфостарт, пишите в комментариях, соберу топ по таким сервисам и опишу их 💬
-------------

Случайный пост > > >
Оксфордская задача с собеседования 1С

#ЕБ_Повседневность
Please open Telegram to view this post
VIEW IN TELEGRAM
Развитие команды. Внутренний хакатон

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

⚫️ 1. Все просто повторяют своими руками, иногда с небольшими дополнениями;

⚫️ 2. Одна большая задача разбивается на всех по кусочкам;

Если же это только теория, то идет просто обсуждение по теме с ответами на вопросы.

Темы могут быть совершенно разными, не связанными с 1С, но как правило всё-таки технические.

Например, кто-то из команды дома изучает или использует другой язык программирования и рассказывает их отличие, так были хакатоны по Python, Go, C#. Если в рамках 1С, то были по модулям обмена, каким-то внутренним подсистемам, по инструментам разработчика и т.д.

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

Пишите в комментариях как вам такой формат и какие форматы совместного обучения проходят в вашей команде💬

Случайный пост > > >
Тема скрыта, так как это случайный пост, и быть может вы узнаете для себя неожиданно полезную информацию

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

Делюсь выжимкой с хакатона по работе с Postgre SQL, который готовил на той неделе.

Задача: считать данные из таблицы в базе на Postgre SQL сервере.

Чтобы подключиться к базе и увидеть её структуру, можно воспользоваться программой pgAdmin.
Она бесплатная и можно скачать с официального сайта.

Есть два основных варианта, с помощью которых можно считать данные через 1С:

- ADODB (COM объект)
- Внешние источники данных (объект платформы)

🔹Считать записи первым способом можно используя код из Листинга 1.

На выходе у нас есть подключение к базе, и мы можем делать что нам требуется (на что хватит прав). Можно работать через sql запросы, либо с объектами напрямую.

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

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

❗️ Важный нюанс!!! То подключение, которое мы выполнили в конфигураторе, не сохраняется.
Для того чтобы данный источник заработал в режиме 1С: Предприятие, необходимо либо в коде один раз задать параметры подключения (листинг 2), либо воспользоваться платформенной обработкой "Управление внешними источниками данных". ❗️

🔹 Особенности подключения ADODB:

Требуется драйвер OLEDB
Можем выполнять SQL запросы
Необходимо знать структуру базы данных
Работает медленнее чем второй способ (но есть исключения)

🔸 Особенности подключения через внешние источники данных:

Требуется драйвер ODBC
Можно использовать в динамических списках и СКД
Требуется выполнить подключение в режиме предприятия
Можно работать с объектом в привычном конструкторе запросов
Нельзя использовать временные таблицы после выборки данных из внешней базы. Необходимо предварительно выгрузить результат запроса в ТЗ.
Работает в разы быстрее, чем ADODB

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

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

#ЕБ_Повседневность
Please open Telegram to view this post
VIEW IN TELEGRAM
Точное время и замер времени выполнения кода

В 1С есть отличная функция ТекущаяУниверсальнаяДатаВМиллисекундах().

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

Но может либо не быть отладки, либо это нужно регулярно.

Например, при работе с 1С в облаке, если у вас нет доступа к конфигуратору. Я так же использовал данную функцию для замера разницы выполнения скорости запроса к базе Postgre SQL. И в рамках секунд мой запрос выполнялся одинаково при использовании двух вариантов соединения с базой, а при замере в миллисекундах разница была многократной.

Пример использования:

ДатаНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();

// Код который хотим замерить на скорость

ДатаОкончания = ТекущаяУниверсальнаяДатаВМиллисекундах();

Сообщить(ДатаОкончания - ДатаНачала); // получаем разницу в миллисекундах

#ЕБ_Повседневность
Всем привет! В особенности новым подписчикам. Рад, что вы присоединились)

Немного навёл порядок в закреплённых постах и оставил только "пост знакомства" и он же "о канале".
Там же можно найти ссылки на дайджесты - сборники постов по периодам.

Если вам нужна консультация или помощь в решении текущих задач, по обучению и другое, то можете обращаться ко мне напрямую или через площадку GetMentor

Всем хороших выходных!
📢 Ещё немного не технического контента

На той неделе был в командировке по работе, при чем очно) довольно редкое явление при работе удаленно.

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

Ранее уже был опрос и пост про мотивацию сотрудников, и считаю это отличным дополнением к мотивации и явное проявление лояльности к сотрудникам.

А как вы относитесь к оффлайн мероприятиям на удаленке и бывают ли они у вас? 💬

------------
Кстати, на фото фигурки супергероев 1С, напечатанные мной на 3D принтере для конференции. Незапланированное совпадение с прошлым постом о мотивации)

#ЕБ_Повседневность
Please open Telegram to view this post
VIEW IN TELEGRAM
А у вас такое было?

У меня была ситуация, когда я остался почти самым "старым", и возможно из-за того, что в компании убрали активности сотрудников, по примеру прошлого поста)
Задача с собеседования. Валидность строки по части скобок

🤯 Давно не было задачек с собеседования, будем исправлять)

Дана строка, содержащая открывающиеся и закрывающиеся скобки, например, « { ( } [ ] ) ». Необходимо написать функцию для определения валидности строки. Валидность строки определяется равенством количества открытых и закрытых скобок, а также корректностью вложенности скобок. Важно: учитывать три вида скобок "()","{}", "[]"

Предлагаю одно из возможных решений (на скриншоте), а в комментариях вы можете предложить свое, более правильно и оптимальное)))💬

Решение в текстовом виде оставлю для вас в комментариях.

> > > Случайный пост < < <

#ЕБ_Повседневность
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔝 Частая ошибка новичков - заблокировать запись документа

Довольно часто к программисту приходит задача с формулировкой: «при таком-то простом условии от бизнеса заблокировать запись документа».
Задача сама по себе несложная, для новичка выглядит очевидным в событии документа ПриЗаписи добавить простое условие и установить Отказ = Истина.

И ошибка заключается в том, что программисты не уточняют следующие вопросы:

- зачем эта блокировка?
Бывает нужно просто вывести сообщение, а блокировать нет необходимости.

- для всех ли эта блокировка или нужно разграничить по правам?
Как правило на полные права она распространяется.

- а как ещё данный документ записывается?
Бывает так, что он создаётся автоматически из другой обработки и это тоже надо учесть.

- есть ли исключения?
На такой вопрос заказчик может задуматься и правда найти исключение в своем условии.

- блокировать программное проведение или пользовательское?
Если пользовательское, то эту проверку надо перенести на форму. Если не задаться этим вопросом, можно заблокировать какой-нибудь обмен данными, который возможно происходит и без установленного флага ОбменДанными.Загрузка = Истина.

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

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

📢 В начале карьеры я сам делал такие блокировки, благо мне быстро объяснили опытные коллеги, чем плоха такая «жесткая» блокировка.


> > > Случайный пост < < <

#ЕБ_Повседневность
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯 Ещё одна частая ошибка новичков - обращение к данным из кода. Возможное решение

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

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

Но есть ещё один вариант, это создать специальный справочник "Дополнительные настройки системы".
📢 Программисты передают его друг от друга, не могу сказать откуда это пошло, если знаете, то пишите в комментариях) 💬
Когда-то мне рассказали про него, где-то я его внедрил, а на текущем моем рабочем месте он уже был. Имеет разные вариации, но суть одна - это создавать в нем предопределенные элементы и уже к ним обращаться программно.

Я предлагаю свой вариант, возможно не самый навороченный, но все-таки работающий.
Это справочник с 2-мя реквизитами (значение настройки и флаг "ЭтоСписок") и табличной частью (если нужно хранить некий список).

Видел также вариант что-то типа соответствия, реализованного через 2 ТЧ: ТЧ1-ключи, ТЧ2-ключ и значение.

На скриншоте представлен код обращения к предопределенному элементу напрямую, через "ПолучитьОбъект()", не самый верный вариант.
Как доработать? Сделать обращение к данным через запрос и разместить код в общем модуле повторного использования.

> > > Случайный пост < < <

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