Прусаков Никита про 1С
356 subscribers
43 photos
4 videos
6 files
26 links
Всё самое интересное из вселенной 1с.
Связаться напрямую — @prusakovnn
Download Telegram
Сотрудники фирмы 1с рассказали как тестируют такую огромную конфигурацию как ERP, какие подходы, и ресурсы для этого используются. Как применяют сценарные, дымовые тесты, докер. А также сколько занимает протестировать всю ERP в машино-часах. Занятное чтиво на ночь.
👍8
Ни разу не олимпиадник, но зарегистрировался на олимпиаду по программированию 1С. Интересно, какие там будут задачки🤔

Если есть желающие, оставляю ссылочку.
👍12
В общем проспал я олимпиаду после бессонной ночи. Успел решить только одну задачу из пяти. К слову записался чтобы посмотреть какие вопросы могут быть на олимпиаде по 1с разработке. Кстати вопросы на этой олимпиаде как-то ближе к бизнес проблемам которые можно решить с помощью 1с. Например одной из задач была задача, где нужно выявить посетителей фитнес клуба, которые пропускают по своему пропуску других посетителей (привет СКУД). Пилить отчеты на СКД, формочки и регистры не пришлось. Конечно четвертная и пятая задачи на мой взгляд требуют более глубоких знаний математики, но за них и дают больше всего баллов. Нашел в открытом доступе вопросы с прошлых олимпиад. К слову пара ребят которые выиграли предыдущие олимпиады, угадайте где трудятся...🥁🥁🥁 в Рарусе.

2015:
https://docs.google.com/document/d/12UgodYw1xCd8YDn5JT2PEIWkCvzd7RpjCUC1PkXxzWQ/edit?tab=t.0

2017:
https://docs.google.com/document/d/12UgodYw1xCd8YDn5JT2PEIWkCvzd7RpjCUC1PkXxzWQ/edit?tab=t.0

2019:
https://docs.google.com/document/d/1kFwcE27bwA8BnWa22WYBZP_KCTjR1MV1OBTreNrSgrQ/edit?tab=t.0
👍2🔥1😴1
Чтение и запись наборов записей.

В самом начале своей работы как разработчика, неизбежно приходилось сталкиваться с задачами записи регистров сведений. У наборов записей есть методы "Прочитать()", "Записать()". Ну казалось бы все просто. Один метод читает, другой записывает. Да и кому придет в головку читать данные регистра сведений объектной техникой, когда можно прочитать запросом? Но поработав какое-то время, понял, что есть нюансы. Про них и поговорим.

Для начала начнем немного издалека, и поговорим про управляемые блокировки. Кстати, хороший вопрос для собеседования кандидатам: зачем вообще придумали управляемые блокировки ведь раньше (8.1) жили без них и все прекрасно работало. Предлагаю задуматься над этим вопросом. Вернемся к управляемым блокировкам. Они бывают "разделяемые" и "исключительные". "Разделяемые" - совместимы между собой (можно читать в двух параллельных транзакциях), "Исключительные" - не совместимы с друг с другом, а также с разделяемыми.

Также важно понимать, что управляемые блокировки могут быть установлены только в рамках транзакции, и держаться всегда до конца транзакции (в отличии от блокировок СУБД в определенных режимах изоляции).

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

Если регистр сведений "ОсновнойДоговорКонтрагента", с измерением "Контрагент", и ресурсом "Договор". В момент чтения, будет наложена управляемая разделяемая блокировка.

НаборЗаписей = РегистрыСведений.ОсновнойДоговорКонтрагента.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Контрагент.Установить(Контрагент);
НаборЗаписей.Прочитать();

В каких же случаях нам может потребоваться накладывать разделяемую управляемую блокировку? Тут необходимо познакомиться еще с одним термином, который называется "Ответственное чтение". Что это такое?

Ответственное чтение
- это чтение, при котором мы на 100% должны быть уверены, что после прочтения данные не изменятся. В нашем примере если у меня есть алгоритм, который производит действия с основным договором (например получает основной договор контрагента, получает его сумму и отправляет на почту ответственному сотруднику информацию по остатку лимита основного договора), то в процессе выполнения рассылки, другой сотрудник может зайти и поменять основной договор в регистре. В таком случае будут отправлены некорректные данные.

Значит перед рассылкой нам нужно позаботится о том, чтобы данные которые мы прочитали не были изменены. Это можно сделать либо через чтение в объектной технике, либо через установку явной управляемой блокировки через метод "БлокировкаДанных".

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

НаборЗаписей = РегистрыСведений.ОсновнойДоговорКонтрагента.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Контрагент.Установить(Контрагент);
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();

// код по добавлению строк в набор записей

НаборЗаписей.Записать();

Как вы думаете какая проблема в коде выше 👆? А проблема в том, что данный код может вызвать взаимоблокировку по причине недостаточного уровня блокировки ресурса. Мы сначала читаем, а затем пишем. И если в двух параллельных сеансах попытаться поменять основной договор, то можем словить взаимоблокировку. Эти строчки абсолютно не нужны в данном примере:

НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();


Набор и так будет перезаписан, читать и очищать его не нужно. Поэтому более правильно тут будет сразу записать набор:

НаборЗаписей = РегистрыСведений.ОсновнойДоговорКонтрагента.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Контрагент.Установить(Контрагент);

// код по добавлению строк в набор записей

НаборЗаписей.Записать();

Если было интересно ставьте 🔥 буду делать больше технических постов.
🔥41👍5
‼️В стандартах разработки в феврале 2025 года опубликован новый стандарт по многократной записи регистров сведений и накоплений. Этот стандарт рассчитан на использование платформы 8.3.26 и выше, с учетом новых возможностей по записи в регистры ведений в режиме замещения.

Кстати про эту возможность в платформе 8.3.26 уже писал.

#Новости1С
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2
Платформенное версионирование данных. Было интересно разобраться в этой теме. Пока готовлю видео скажите, пользуетесь этой возможностью платформы ?
👍20
В платформе 8.5.3 планируется реализовать поддержку показа документов MS Word (и ряда других форматов) в клиентском приложении. Для этого будет разработан новый сервис кластера серверов «Сервис преобразования документов». Жаль, что такую функциональность обещают только в 8.5.3…хотелось бы конечно и в 8.3.* иметь такой функционал. Эх…сколько печатных форм было сделано под “word”, через com, чтобы кадровикам и бухгалтерам было «привычнее» печатать документы…
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Неочевидное использование нейросетей в 1С.

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

А вы используете нейросети в своей работе?🧐
👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Эксперименты с нейросетями продолжаются. На этот раз, как бы я выглядел, если бы пошел работать по профессии, маталлургом!
🔥8😁4👍3
Я создал ютуб канал 🔥Всех приглашаю посмотреть мое первое видео посвященное подготовке к 1С:Эксперту, а именно созданию виртуальной машины, установке Linux, Postgres и 1с для дальнейшей подготовки.

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

Поддержите видео лайком на Ютубе, Rutube буду признателен.

Видео доступно на площадках:

📱 - Установка 1С на Linux (Ubuntu) для подготовки к сертификации 1С:Эксперт

🌐 - Установка 1С на Linux (Ubuntu) для подготовки к сертификации 1С:Эксперт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34👍10❤‍🔥1
Радует, что у фирмы 1с начинают появляться курсы про паттерны программирования, и подходы к грамотной разработке на 1с. Конечно эти курсы рассчитаны на начинающих специалистов, но возможно в будущем появится курс а-ля архитектор для продвинутых. Когда я только начинал свой путь таких курсов не было, и никто не мог сказать, а как же все таки писать код, чтобы он не только работал, а был еще и легкий в поддержке и оптимальный с точки зрения производительности.

На данный момент у фирмы 1с есть курс Пиши код грамотно, и сейчас выходит курс ПАТТЕРНЫ (ШАБЛОННЫЕ ПОДХОДЫ) РАЗРАБОТКИ 1С (я уже записался, расскажу свое впечатление после прохождения). Правда в последнем курсе не планируется освещать темы классических паттернов таких как: фабрика, синглтон, адаптер, декоратор и очень жаль конечно.

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

Самодокументируемый код это 🔥
4🔥4👍2
image_2025-04-13_14-13-59.png
57.7 KB
Новости с полей.

Не так давно пишет системный администратор, что на одном из серверов наблюдается множественное формирование дампов, причем именно ночью.

Анализ регламентных заданий не дал результатов. Ночью настроено достаточно много регламентов и понять, какое регламентное задание приводит к проблемам не удалось. Пошел настраивать тех. журнал для проведения посмертного анализа процессов. Решил начать с минимального журнала со следующими событиями: EXCP, EXCPCNTX, CONN, PROC, ADMIN, SESN, CLSTR, ATTN.

В результате беглого анализа (даже регулярку не пришлось писать), был найден виновник падения...🥁🥁🥁 и это регламентное задание слияния индекса полнотекстового поиска. В параметрах было настроено 12 параллельных фоновых заданий для обновления индекса. Эти же 12 заданий запускаются и для слияния индекса ППД. Для проверки гипотезы, было отключено регламентное задание. Ночь прошла без формирования дампов.

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

В планах отравить дампы в фирму 1С. Я грешу на ошибку в платформе, но дело это не быстрое.
👍15🔥8
На прошлой неделе закончился курс паттерны (шаблонные подходы) разработки 1С от Александра Митрофанова от учебного центра №1.

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

У меня не было возможности присутствовать на онлайн занятии, поэтому я смотрел видео в записи. Что могу сказать, курс с одной стороны интересной потому, что описывает шаблоны подходы которые используется при разработке ERP (и не только, но преимущественно там). Знаешь как работают типовые - меньше изобретаешь велосипедов. Конечно рассмотрена очень маленькая часть этих шаблонов, и даже несмотря на то, что большинство шаблонов были мне известны, я открыл для себя кое-что новое. Как говориться повторенье - мать учения!

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

Кто не знает, рекомендую открыть типовую ERPшку и посмотреть как, например организована проверка заполнения документа заказ клиента.
👍11
Skype приказал долго жить )))
😁2🫡2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🕰 Задумывались, куда уходит время в рабочем дне? Не на задачи. Не на звонки. А банально — на набор текста.

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

При наборе методом слепой печати, экономия времени (зависит от уровня навыка, конечно) составляет 200-300%. Если в программировании метод работает не на 100% (всё же часто используешь мышь), то при работе с 📩, техническими заданиями, отчетами — счет экономии может идти на часы.

❗️Около года назад, начал оттачивать этот навык на тренажере. Тренажеров много, в том числе и бесплатных, но я выбрал платный 💸 — стоил недорого, но с чёткой системой и прогрессией. Всего 💯 заданий. Обещают, если пройду все 100 заданий, то смогу с легкостью печатать и не смотреть на клавиатуру. На текущий момент прошел чуть больше половины. Пока тяжеловато идет, руки все время норовят вернуться к набору двумя пальцами.

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

Полезный навык или нет? Как считаете ?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Сегодня провёл для ребят консультацию по подготовке к сертификации "1С:Эксперт".

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

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

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

Полагаю, мне удалось немного рассеять туман неопределённости вокруг экзамена и сделать этот путь к сертификации чуть более понятным. Надеюсь, что для ребят это было полезно.
👍11🔥9
Паузы в 1С

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

Рассмотрим основные варианты реализации таких пауз:

1️⃣Самый банальный написать код примерно такого вида. Тут ждем 10 секунд и продолжаем выполнение кода.

ЖдатьДо = ТекущаяДатаСеанса() + 10;
Пока ЖдатьДо >= ТекущаяДатаСеанса() Цикл
// Пустой цикл
КонецЦикла;


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

2️⃣Использовать com-объект и вызывать паузу через скрипт PowerShell. Можно использовать разные подходы timeout, ping или другие команды. Очевидный минус - такой код не будет работать в linux.

WshShell = Новый COMОбъект("WScript.Shell");
СтрокаКоманды = "timeout /t "+Секунд+" /nobreak";
СтрокаКоманды = "cmd /c "+СтрокаКоманды;
WshShell.Run(СтрокаКоманды,0,ОжидатьЗавершения);


3️⃣Использовать фоновое задание, ожидая его завершения в течении определенного времени.

Именно этот способ в большинстве случаев используется в типовых конфигурациях.

Пример такого кода:

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

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

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

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


4️⃣ Начиная с версии 8.3.25 в платформу завезли метод "ВызватьПаузу". Ждем рефакторинга в типовых конфигурациях!

Всем классно провести предстоящие праздники!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123
История данных и версионирование объектов БСП что использовать?

В этом видео рассмотрим два механизма, которые фирма 1с использует для версионирования (истории изменения) данных. Выясним плюсы и минусы каждого подхода. Настроим, и покажем работу механизмов на практике.

Видео доступно на площадках:

🌐 - Rutube

📱 - VK Видео

📱 - YouTube

Ставьте 🔥 если интересен такой формат!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍3
Медленное открытие формы: причины и способы решения

Один из любимых вопросов на сертификационном экзамене 1С:Эксперт:

Как вы будете устранять проблему медленного открытия формы? С чего начнёте? Какие шаги предпримете?

На практике причин может быть несколько, и пути решения — разные. Разберёмся по порядку:

1️⃣Разница в скорости у пользователей и администратора

Если у пользователей с ограниченными правами форма открывается медленно, а у администратора — быстро, велика вероятность, что дело в RLS (role level security). В этом случае пути решения лежат в области оптимизации RLS. Это может быть как отказ от RLS через разделение системы, например вести учет по каждой организации в отдельной базе. Также выходном может быть использование производительного РЛС.

2️⃣Форма тормозит в рабочее время, но летает ночью

Вне рабочего времени всё работает быстро — значит, стоит обратить внимание на ресурсы оборудования:

- Перегруженность дисков
- Нехватка оперативной памяти на сервере СУБД
- Сетевые задержки

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

3️⃣Проблема не в RLS и не в железе
Если вышеуказанные причины исключены, пора включать отладчик и исследовать код. Важно выяснить, на каком этапе уходит основное время. Применяем принцип Парето: ищем те 20% операций, которые дают 80% задержек. Оптимизация именно этих участков кода даст наибольший эффект.

4️⃣Долгое клиент-серверное взаимодействие
Иногда отладчик показывает, что основная задержка — это обмен между клиентом и сервером. В таких случаях:

- Собираем технический журнал (ТЖ)
- Анализируем временной промежуток между событиями VRSREQUEST и VRSRESPONSE

При этом должно соблюдаться следующее неравенство:

Время замера кода < Время по тех. журналу < Время по секундомеру или по APDEX

Частой проблемой является перегрузка формы большим количеством элементов и реквизитов. Чрезмерное усложнение формы не совсем правильный подход в разработке (но мы то живем в реальной жизни) и такое может произойти сплошь и рядом.

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

Если избежать загрузки таблицы нельзя, но её формирование на сервере занимает много времени — есть способ ускорить эту операцию используя помещение таблицы во временное хранилище.

- В процедуре ПриСозданииНаСервере формируем таблицу.
- Посещаем её во временное хранилище.
- В реквизите формы сохраняем адрес временного хранилища.
- При необходимости работы с таблицей в момент серверного вызова — извлекаем таблицу из временного хранилища по адресу и работаем с ней.

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

На ИТС есть отличная статья, подробно описывающая методику расследования медленного открытия форм. Очень рекомендую к прочтению — системный подход помогает не тратить время на догадки, а сразу действовать эффективно.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥4👏1