TGViewer
Channel Public Channel
1С и AI, полезные инструменты и сервисы, стандарты и паттерны

1С и AI, полезные инструменты и сервисы, стандарты и паттерны

@usefultools1c

1С и AI - инструменты и сервисы, стандарты разработки и паттерны, нейронки, cursor, mcp, docker, шаблоны кода и т.д.
Обратная связь, публикации: @usefultools1c_bot
Subscribers
2.25K
Photos
66
Videos
11
Links
144

Showing posts older than #212 · Back to latest

Older Posts 19 shown
Post #210 973

Forwarded from Pasha AI dev cast

Давно искал плагин для EDT, который бы добавлял две простые кнопки на командную панель - включить фильтр по измененным объектам и фильтр по "избранному". В итоге сделал такой плагин сам. Он добавляет две эти кнопки + кнопку добавления объекта в избранное.
Установить можно так: EDT Справка → Установить новое ПО, добавить репозиторий https://pavel-aparin.github.io/edt-favorites/
Замечания, пожелания - welcome
  • 👍 15
Post #208 924

Forwarded from Стандарты 1С v8std

Использование Журнала регистрации

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

🟡 Текст типа события должен быть локализуемым и задаваться на основном языке конфигурации.

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

🟡 Одна запись журнала должна соответствовать одному событию.

#std498
https://v8std.ru/std/498/
Стандарты разработки 1С Использование Журнала регистрации #std498 Журнал регистрации хранит события, которые возникают в работе пользователей с информационной базой.
  • 👍 1
Post #204 898

Forwarded from YellowHammer

1C: Platform Tools v0.7.25 — главное: правка метаданных прямо в расширении. Свойства и структура справочников, документов, перечислений, констант, общих модулей, регистров сведений и накопления — с измерениями, ресурсами и реквизитами.

Из остального полезного:
- поиск по дереву (в том числе несколькими словами), фильтр по подсистемам, кнопка «Свернуть»
- контрол типа константы; свойства конфигурации и состав регистра — в том же виде, что у объектов
- префикс кодировки для bash и задач vrunner на Windows

https://github.com/yellow-hammer/vscode-1c-platform-tools/releases/tag/v0.7.25

Marketplace · Open VSX
https://marketplace.visualstudio.com/items?itemName=yellow-hammer.1c-platform-tools
https://open-vsx.org/extension/yellow-hammer/1c-platform-tools

MCP v0.1.9 — свой канал логов и документация по параметрам инструментов и каталогам проекта.

https://github.com/yellow-hammer/mcp-1c-platform-tools/releases/tag/v0.1.9

md-sparrow v0.4.0 — движок под правку метаданных. Главное: гранулярные DTO и запись свойств для документов, перечислений, констант, общих модулей, регистров; операции над значениями перечисления, измерениями и ресурсами; тип с квалификаторами в реквизитах/измерениях/ресурсах.

https://github.com/yellow-hammer/md-sparrow/releases/tag/v0.4.0

dev-rules v0.4.5 — добавлена методичка обновления от вендора (Трехстороннее сравнение в git).

https://github.com/yellow-hammer/dev-rules/releases/tag/v0.4.5
GitHub Release v0.7.25 · yellow-hammer/vscode-1c-platform-tools Версия 0.7.25 [Unreleased] Новые возможности metadata: Добавили редактирование свойств и структуры справочника в панели metadata: Добавили редактирование свойств документа в панели metadata: ...
  • 👍 3
Post #202 1.09K

Forwarded from Никита Арипов | 1С, DevExp (Никита Арипов)

Тестовый прогон бота для Ландшафта технологий

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

Но для этого нужно как-то удобно и приятно спросить у вас об этом. И я придумал сделать для этого телеграм бота - @stateOf1c_bot

Там по каждому инструменту нужно ответить на два вопроса - работал или слышал и хотелось бы снова или попробовать.

А результаты потом соберем в красивую страничку (пример ниже) и добавим еще на карточки инструментов, чтобы сразу видеть реальное использование

Но это в идеале...

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

В тестовом прогоне в основном базовые инструменты и вы их знаете, поэтому опрос займет 1-2 минуты

@stateOf1c_bot

Что важно сейчас понять:
- Все ли понятно?
- Удобно ли пользоваться?
- Справимся ли с нагрузкой?

Результаты тестового опроса соберу и покажу в понедельник
  • 👍 2
Post #200 1.5K
Pilot.txt1.7 KB image_2026-06-26_17-20-34.png126.3 KB
Всем привет.
Открываю пилот продукта 1С Рентген, пока конечно в некоторых моментах возможно и сыровато, позже после активного запуска более масштабных продуктов будет произведена глобальная доработка, на текущий момент можно попробовать продукт в онлайне https://spectorn.xyz:13000/ (без указания порта вас будет кидать на продукт API шлюза), в текстовом файле адрес и логины/пароли, пока фидбек не принимается в виду отсутствие такового раздела, позже само собой сделаю.
Суть продукта это полностью замкнутая экосистема для разработки в 1С даже если под рукой нет LLM (нет возможно по финансам подключить, у вас КИИ, да и просто нет финансов, случаи бывают всякие), учтены все или почти все роли, от младшего разработчика до CIO/CEO.
При желании тестируйте, используйте, накапливайте критику, к улучшениям я всегда открыт.
  • 👍 3
  • 👎 2
Post #199 1.57K

Forwarded from Иосиф Правец: ИТ-дневник

Я немного обновил образы в oscript-images.

Если кто-то не в курсе, у меня есть проект образов OneScript и некоторых утилит на его базе

Вчера удалось покопаться в образах и провести обновление:
🛑перевёл сборку oscript-based утилит на stable-ветку OneScript (ибо давно уже OneScript 2.0 вышел в полноценный релиз);
🛑починил сборку образа winow, который начал падать с непонятной ошибкой opm.

Свежий релиз по ссылке


Ну и если я какой-то текст до конца дочитываю, то никогда не обломаюсь поставить свой царский лайк, а, возможно, даже подпишусь на автора
GitHub GitHub - pravets/oscript-images: Всё для сборки docker-образов движка OneScript и некоторых утилит на OneScript Всё для сборки docker-образов движка OneScript и некоторых утилит на OneScript - pravets/oscript-images
  • 👍 6
Post #198 1.02K

Forwarded from 1C Company

📣 Новая серия вебинаров «Разбор задач с экзамена 1С:Эксперт»!

➡️ На developer.1c.ru в разделе «Обучение» мы начали публиковать серию вебинаров «Разбор практических задач с экзамена 1С:Эксперт по технологическим вопросам».
Всего выйдет 6 обучающих видео.

Разбираем решение задач из практической части экзамена:
🔸 Проблема потребления оперативной памяти
🔸 Взаимоблокировка на управляемых блокировках
🔸 Таймаут на управляемых блокировках
🔸 Длительный запрос
🔸 Типичные ошибки сдающих

💡 Короткие, но насыщенные уроки — максимум практики для будущих 1С:Экспертов!

✅ Сейчас на developer.1c.ru доступно первое видео из этой серии! Его тема «Проблема потребления оперативной памяти».
  • 👍 3
Post #197 939

Forwarded from Никита Арипов | 1С, DevExp (Никита Арипов)

Ландшафт технологий 1С

Вокруг 1С давно выросла целая вселенная: EDT и git, Vanessa и YAxUnit, SonarQube и BSL LS, мониторинг, CI/CD, брокеры, BI… Уследить за всем нереально - а понять, что нужно именно тебе и с чего начать, еще сложнее

Собрал все это в одну интерактивную карту
landscape1c.ru

Выбираешь, кто ты и где работаешь - и сразу видишь свой стек, без лишнего

Что внутри:
• 206 инструментов в 24 категориях: описание, зачем нужен, с чего начать
• фильтры по зрелости, лицензии, происхождению и доступности
• путь освоения по ролям - от базового к продвинутому
• схема-постер всего ландшафта с экспортом в SVG/PNG/PDF - распечатай и повесь в офисе
• граф связей - аналоги и зависимости между инструментами

Разметку выверяю не один.
За осями стоит экспертный совет - практики из своих областей:
• Матвей Серегин — разработка
• Игорь Апресов — разработка
• Евгений Акпаев — администрирование
• Дмитрий Абрамов — инфраструктура
• Татьяна Головкина — тестирование
• Александр Кунташов — тестирование
• Роман Данилов — аналитика
• Мария Серегина — аналитика

Проект бесплатный, методология открыта, код на GitHub. Любой инструмент можно предложить или поправить

Заходи, найди свой стек и расскажи, чего не хватает

landscape1c.ru

Буду благодарен за репост - так карту увидит больше коллег
  • 👍 9
  • 👎 1
  • 🤔 1
Post #196 795

Forwarded from Антон Дорошкевич | маяк в мире 1С и СУБД

Pg_dump это не только ценный бэкап, но и средство диагностики целостности базы

На этой неделе столкнулись с очень интересной проблемой.

Проявлялось это так:
- 1С практически не шевелится
- Если удалось зайти в 1с, то при совершенно разных операциях получаем ошибки СУБД с разным набором таблиц, которые почти ни о чём не говорят, кроме как что-то пошло не так
- Нагрузка ЦПУ на сервере PostgreSQL под 100%

Запрашиваем список активных сессий на СУБД
select * from pg_stat_activity

И получаем список транзакций. Которые длятся минуты и десятки минут с текстом:
select * from public._scheduledjobs...;

и т.д.

Попытка завершить транзакции средствами СУБД ни к чему не приводит.

Тем временем прод стоит, паника нарастает…

Всё это происходит на PostgresPRO Enterprise с встроенным кластером BiHA.
Система определяет что мастер не отвечает и перекидывает всю нагрузку на другую ноду кластера – всё совершенно корректно, как доктор прописал!
И что мы видим? – Буквально за 10 минут теперь и "новый мастер" так же уходит в нагрузку по ЦПУ в 100%.

Снимаем отладочную информацию со всех процессов мастера и «нового» мастера командой
kill <pid> -40

для ТехпПоддержки PostgresPro.

И хоть я и очень не люблю так делать, но аварийно останавливаем PostgreSQL через
kill <pid> -9

и на мастере и на «новом» мастере.

Блокируем 1С.
Стартуем PostgreSQL.

И для быстрой диагностики запускаем vacuum analyze only в несколько потоков на базе.
И опять получаем «зависшие» транзакции analyze на разных scheduledjobs…

Поясню – analyze читает не все данные в таблице, а только количество строк = 300*default_statistic_target. Обычно default_statistic_target = 100, т.е. мы читаем только 30 000 строк в таблице, и даже при этом уже получаем зависание системы.

Вот это уже страшно… Опять снимаем crash_info, рестартуем службу Postgres и начинаем расстраиваться…

Всё больше подозрений на битые страницы данных…
И тут встаёт вопрос, как быстро проверить все данные в базе?

Ответ – pg_dump, ведь по сути это select * по всем таблицам базы и сбор информации о DDL схемах как самих таблиц, так и индексов.

Но, база не маленькая и дамп будет формироваться достаточно долго…

Вспоминаем что можно вместо сохранения дампа на диск отправить его в «чёрную дыру» /dev/null, но при этом сохранив логи самого процесса дампа.

pg_dump -h 127.0.0.1 -p 5432 -U postgres -d ERP> /dev/null 2> dump.log


Такой дамп формируется намного быстрее.
Запускаем и получаем в логе сообщение:
pg_dump: ошибка: ошибка при выполнении запроса: ERROR: index "pg_attribute_relid_attnum_index" contains unexpected zero page at block 2349
ПОДСКАЗКА: Please REINDEX it.


Вот это поворот! Что-то не так с данными системной таблицы атрибутов..
Ну чтож, есть подсказка, давайте ей и воспользуемся:
REINDEX TABLE pg_catalog.pg_attribute;

И после этого опять запускаем analyze, чтобы проверить починилось ли и да, база починилась, analyze прошёл.
Запускаем 1С – проверяем, всё работает.
Запускаем пользователей и естественно у них «такая же нога, но болит!..», а именно, при различных операциях получаем ошибку СУБД с текстом:
ERROR: heap tid from tuple … offset 204 of block 4 in index “pg_namespace_nspname_index”…

Запускаем
REINDEX INDEX pg_namespace_nspname_index;

- ошибка ушла.

Причина по которой разрушились системные индексы пока ещё выясняется.
❗️Сама история говорит о том, что базу надо периодически регламентно проверять на целостность, а лучше не базу, а весь кластер командой:
pg_dumpall -h 127.0.0.1 -p 5432 -U postgres > /dev/null 2> dump.log
При этом лог будет пустой, если дамп не обнаружит ошибок.
Если же хочется иметь лог всей работы дампа в любом случае, то команда будет такой:
pg_dumpall -h 127.0.0.1 -p 5432 -U postgres -v > /dev/null 2> dump.log

Ну и на всякий случай канал в MAX https://max.ru/explorer1c
  • 👍 6
Post #195 1.03K
всем привет, вернулся к разработке для 1С+AI, первые скрины как он будет выглядеть
  • 👍 11
Post #194 1.26K

Forwarded from Антон Дорошкевич | маяк в мире 1С и СУБД

Смена dbowner у базы 1С на PostgreSQL

Согласно check-list по настройке 1с рекомендуется «для каждой продукционной информационной базы создавать отдельного пользователя».
Так же Информационная безопасность тоже требует чтобы мы работали под уникальными пользователями с каждой базой и при этом у этих пользователей нужен только минимально необходимый набор прав.

Казалось бы, что может быть проще?
Ну выполним аналог команды MS SQL
EXECUTE sp_changedbowner 'ERP';

и готово.

Но оказалось что всё не так просто, а иногда и невозможно…

❗️Так повелось у многих, что создаём базы не просто из пользователя с правами SUPERUSER, а именно из под пользователя postgres.

Какие есть пути решения есть:
1. Сменить владельца базы
ALTER DATABASE "ERP" OWNER TO "ERP";


Получаем следующие эффекты:
❗️Владельцем таблиц остаётся postgres.
Ок, мы не робкого десятка и умеем писать скрипты...
В цикле бежим по всем таблицам и выполняем
ALTER TABLE OWNER TO

❗️Но при запуске 1С пишет «База данных непригодна для использования»…

Дело в недостаточном разрешении для lc_messages
Ок, выполняем
grant set ON PARAMETER lc_messages to " ERP ";

❗️И всё равно при запуске базы получаем:
42501: ERROR: must be owner of extension mchar

🚫И вот тут первое нерешаемое – назначить владельца для расширения невозможно.

2. REASSIGN OWNED - Команда затрагивает только объекты в текущей базе данных. Обычно её нужно выполнять в каждой базе данных, которая содержит объекты, принадлежащие удаляемой роли.
Как раз то что нужно!!!
Если бы мы изначально не создали базу из под пользователя postgres

Команда
REASSIGN OWNED BY postgres TO ERP

❗️– не выполнится, с ошибкой: Изменить владельца объектов, принадлежащих роли postgres, нельзя, так как они нужны системе базы данных.

⛔️Всё, тупик. К сожалению для баз созданных из под postgres изменить полноценно владельца невозможно!

И тут решение только одно – dump/restore базы во вновь созданную, владельцем которой назначен другой пользователь без прав SUPERUSER.

Ну а на будущее – после разворачивания сервера PostgreSQL нужно первым же делом создать себе нового пользователя с правами SUPERUSER и работать под ним, а Супер-SEPERUSER postgres оставить на крайний случай прописав ему например доступ только по 127.0.0.1 в pg_hba.conf

Ну и на всякий случай канал в MAX https://max.ru/explorer1c
  • 👍 4
Post #193 1.45K

Forwarded from Павел Королев | IT Ланч

🔐 Пароль в коде — это не «быстрое решение», это отложенная утечка

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

И чаще всего у разных заказчиков сталкиваешься с одними и теми же проблемами:
🟣логин/пароль к FTP - прямо в модуле обработки
🟣пользователь и пароль к базе - в коде подключения
🟣параметры внешних ресурсов, которые уезжают вместе с .epf, конфигурацией или выгрузкой базы

▶️Почему это опасно?

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

Код живёт дольше, чем кажется:
🟣Сегодня разработчик «на минутку» прописал пароль прямо в обработке
🟣Завтра эту обработку отправили подрядчику
🟣Послезавтра выгрузили пустую базу для анализа
🟣Потом сделали CF/DT для тестового стенда

А пароль всё ещё там. 😆

И внезапно вместе с «пустой базой» или «просто внешней обработкой» третьим лицам уезжают реальные доступы: к FTP, почте, API, бухгалтерской базе или внешнему сервису. Проблема не в том, что кто-то специально хотел сделать плохо. Проблема в том, что временные решения очень быстро становятся постоянными - и начинают жить своей жизнью.

▶️Безопасное хранение паролей

У 1С на эту тему есть отдельный стандарт:
https://its.1c.ru/db/v8std/content/740/hdoc

Смысл там очень правильный:
🟢по возможности не хранить пароли в информационной базе вообще;
🟢если хранить всё-таки нужно - не класть их в обычные реквизиты объектов;
🟢использовать отдельный объект метаданных с ограниченными правами;
🟢если есть БСП - использовать безопасное хранилище паролей;
🟢не передавать пароль на клиент и не хранить его в реквизитах формы;
🟢читать пароль на сервере непосредственно перед использованием.

▶️В БСП для этого есть методы:


ЗаписатьДанныеВБезопасноеХранилище()
ПрочитатьДанныеИзБезопасногоХранилища()
УдалитьДанныеИзБезопасногоХранилища()


В документации по БСП больше информации:
https://its.1c.ru/db/bsp321doc#content:127:hdoc

Это тот случай, когда лучше взять стандартный механизм, чем писать "ПарольFTP = 12345" в модуле.

▶️А если БСП нет?

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

▶️Резюме

Пароли в коде - это не «настройка для удобства разработчика». Это доступ к чужим системам, данным и деньгам, поэтому если вы видите в коде логин/пароль - это не технический долг, а место, которое нужно исправлять в первую очередь. Крик души окончен. 😊

❓А вы встречали пароли прямо в коде? Да, конечно, встречали. Почему такое происходит и что нужно сделать чтобы такого не было? 👇


#tech@it_lunch

🔥 Подписывайся на IT Ланч!
  • 👍 9
Post #192 1.38K

Forwarded from Андрей Соколов | Sokolov:Dev

Всем привет! 🖐

⭐️ Сейчас много разговоров о новом механизме «Очередь», представленном в платформе 8.5.4.
Вендор позиционирует его так:
С помощью очередей можно оптимизировать, например, проведение документов, разделив его на действия, выполняемые синхронно в обработчике проведения, и действия, которые обязательно будут выполнены позже. Запрос на выполнение отложенных действий оформляется в виде сообщения очереди.

И тут сложились звёзды: я понял, что пора рассказать вам, что… очереди в ERP уже есть 😁

➡️ Реализованы они в составе механизма ОтложенныеЗадания.
В него входят как специализированные очереди:
▪️ЗаданияКРасчетуНормативногоГрафикаПроизводства;
▪️ЗаданияКОтражениюЛимитовПоДаннымБюджетирования;
так и УниверсальнаяОчередьОперативныхЗаданий.

Именно о ней поговорим подробнее.

➡️ Как это работает:
▪️ Бизнес-код решает, что задачу нужно выполнить отложенно.
▪️ Вызывается метод постановки задания в очередь.
▪️ Механизм добавляет строку в регистр очереди.
▪️ Позже обработка запускается:
➕ либо явно через ...Запустить(...);
➕ либо регламентным заданием ВыполнениеОтложенныхЗаданий.
▪️ Управляющий поток выбирает задания из регистра.
▪️ Задания группируются по аналитике и разбиваются на порции.
▪️ Для каждой порции определяется метод выполнения.
▪️ Порция выполняется в текущем сеансе, в управляющем потоке или в рабочих фоновых потоках.
▪️ Успешные записи удаляются из очереди, а ошибки остаются для повторной попытки или фиксируются как окончательные.

➡️ Пример можно посмотреть в УчетНДСРФ.ЗарегистрироватьЗаданияАктуализацииСчетаФактуры.
Там используется:
▪️ УниверсальнаяОчередьОперативныхЗаданий.ДобавитьЗадание - добавляет задание в очередь и при необходимости инициирует запуск управляющего потока;
▪️ управляющий поток, в свою очередь, вызывает обработчик УчетНДСРФ.ОбновлениеСчетовФактурВыданных.

➡️ Доработать механизм достаточно просто.
Например:
▪️ Откройте перечисление ЗаданияУниверсальнойОчереди и добавьте новый элемент, например МоеНовоеЗадание.
▪️ Определите, где будет расположен метод обработки.
В общем случае обработчик лучше размещать там, где уже находится основная бизнес-логика процесса.
▪️ Реализуйте обработчик с сигнатурой:
Процедура ОбработатьМоеНовоеЗадание(
Задания,
ИдентификаторыНеОбработанныхЗаписей,
ДополнительныеСвойства = Неопределено) Экспорт

Для Каждого СтрокаЗадания Из Задания Цикл
Попытка
// Здесь основная бизнес-логика.
Исключение

ТекстОшибки = ОтложенныеЗадания.ТекстОшибкиВыполнения(
Новый Структура("Объект", Объект),
СтрокаЗадания,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));

ИдентификаторыНеОбработанныхЗаписей.Вставить(
СтрокаЗадания.ИдентификаторЗаписи,
ТекстОшибки);

КонецПопытки;
КонецЦикла;
КонецПроцедуры

▪️ Затем определите метод для нового задания.
В УниверсальнаяОчередьОперативныхЗаданий.ОчередиЗаданий нужно добавить по аналогии:
ДобавитьВложеннуюОчередь(
ТаблицаОчередей,
Перечисления.ЗаданияУниверсальнойОчереди.МоеНовоеЗадание,
"ИмяМодуля.ОбработатьМоеНовоеЗадание");

▪️ После этого задание можно ставить в очередь:
УниверсальнаяОчередьОперативныхЗаданий.ДобавитьЗадание(
СсылкаНаОбъект,
Перечисления.ЗаданияУниверсальнойОчереди.МоеНовоеЗадание);


Профит! 👍

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

ℹ️ Важный нюанс: выполнение отложенного задания может быть назначено сеансу пользователя, отличного от инициатора задания.
Например, пользователь Иванов обработает счёт-фактуру, хотя задание было поставлено пользователем Петров, при проведении РТиУ.

На этом сегодня всё. До связи! ✌️
  • 👍 15
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →