Развитие фундаментальных знаний в IT для программистов 1С: расширение возможностей и повышение эффективности

18.06.25

Саморазвитие - Личная эффективность

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

 

 

Меня зовут Чаусов Антон и я ведущий программист. Разрабатываю на 1С с 2011 года, с того же времени преподаю программирование. Более пяти лет работал руководителем отдела разработки, но вернулся обратно в программирование. Являюсь экспертом по технологическим вопросам 1С.

Моя статья посвящена развитию фундаментальных знаний в IT для программистов 1С. В ней я разберу классический стереотип о том, что «1С-ники – не программисты»: откуда у него растут ноги, почему он сложился, как это решить и нужно ли решать в принципе. Обсудим, для чего на практике нужны фундаментальные знания в IT. В конце я порекомендую несколько книг, которые положат начало пути в «настоящие программисты».

 

1С-ник – не программист?

 

В сфере IT часто возникает стереотип, что 1С-ники – не программисты. Почему он возникает, на мой взгляд?

За что мы любим 1С:

  • Низкий порог входа. Благодаря этому большинство попали в 1С. Конечно, есть люди с большой IT-базой, но многие пришли именно из-за низкого порога входа.

  • Массовость 1С. 1С нужна везде – и для крупных внедрений, и для сопровождения маленького ларька.

  • Простые задачи. Можно просто создавать внешние обработки и отчеты. Этого будет достаточно. Кейс из жизни: пришел на собеседование человек и говорит, что у него 15 лет практики программистом 1С. Спрашиваю: «А что умеешь делать?». Отвечает: «Писать отчеты, обработки и иногда обновлять конфигурацию». Больше человек не умел ничего и 15 лет нормально работал.

  • 1С близок к бизнесу. И это хорошо: мы понимаем, как устроен бизнес, бизнес-процессы.

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

Как следствие – застой и консерватизм в головах у 1С-ников. Специалист уходит на стабильный и комфортный для него уровень дохода и на нем замирает.

 

 

На практике мы наблюдаем странно организованный код:

  • Зачем-то задается переменная, потом пишется запрос, а потом меняется значение переменной – нигде не переопределяется. Человек где-то увидел, что так написали, и так же написал. Зачем – непонятно.

  • Архитектура регистров – тоже классика: когда верхние измерения почему-то становятся «удалить».

 

Парадокс Блаба и его влияние

 

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

Для нашей области это не только про язык 1С, но и про инструменты, которые мы используем, и даже про конфигурацию. Условно: если я знаю «Бухгалтерию предприятия», зачем мне изучать «Зарплату и управление персоналом»? Я что-нибудь сделаю на костылях в БП, чтобы зарплата считалась так, как нужно.

Пути развития технических навыков

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

 

Изучение новых языков программирования

 

Авторы книги «Программист-прагматик» Дэвид Томас и Эндрю Хант предлагают ежегодно изучать один новый язык. Не обязательно до уровня Middle или Junior+ – просто, чтобы понимать, как он работает. Также не обязательно браться за сложные языки. Можно начать с близких: Python, JavaScript, OneScript и т.д.

 

Изучение смежных технологий

 

Если изучение других языков программирования вам кажется избыточным, можно посмотреть на технологии, связанные с 1С. Я проводил опрос среди знакомых разработчиков и многие ни разу не заглядывали в СУБД, чтобы узнать,как выглядит база данных 1С на уровне СУБД. Очень полезно изучить этот вопрос. Это сразу выведет вас на новый уровень в написании запросов.

Освойте юнит-тестирование и сценарные тесты. Можно поговорить с командой тестирования вашей компании. Освойте работу в EDT, Git и посмотрите, как выглядит Linux.

 

Изучение фундаментального IT

 

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

 

Участие в жизни сообщества

 

Участвуйте в конференциях, перечитывайте стандарты 1С и ищите курсы на новые темы, даже если они не касаются текущих задач. Ведь к вам может прийти заказчик с запросом: «Мне нужен Telegram-бот». Вы скажете: «А я умею, сейчас сделаем». После всего этого постарайтесь не уйти на другой стек. Нам нужны хорошие программисты в 1С!

 

Практическая польза: примеры из опыта

 

Зачем все это на практике и как это помогает в работе? Во-первых, это структурирует ваше понимание. Как следствие, код, который вы пишете, продукты, которые делаете, становятся более структурированными и легко поддерживаемыми.

Разберем конкретные примеры.

 

Удаление элементов из «огромного массива»

 

D:WorkFilesCurrently_workДоклад ISМассивКривоГифка с Gifius.ru.gif

 

Задача: удалить все отрицательные числа. При решении в лоб (удаление с начала) остается необработанный элемент из-за сдвига коллекции.

 

 

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

Усложнение: массив настолько большой, что едва помещается в памяти; операцию нужно выполнить максимально быстро с минимальной перестановкой. Последовательность элементов не важна.

 

 

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

 

Конкатенация vs СтрШаблон и СтрСоединить

 

 

Соединение строк часто пишут через конкатенацию. Почему это неправильно? Строка в 1С – не примитивный тип, это массив символов. Конкатенация – сложение только двух массивов. Каждая операция сложения создает новый массив в памяти.

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

При замере скорости выявилось, что конкатенация 300 000 строк через «;» выполняется в ~150 раз медленнее, чем через СтрСоединить. Таким образом, понимание устройства строки и работы СтрСоединить на порядки ускоряет решение.

 

Поиск циклов в орграфе

 

 

Задача: по ориентированному графу необходимо рассчитать сроки, исключив ситуации, когда потомок влияет на родителя. При этом решение должно работать на клиенте, отображаться на форме и поддерживать ввод до 50 000 задач.

Наше первое решение работало до 1000 элементов, после оптимизации – до 15 000. Этого оказалось недостаточным.

 

 

Решение: применение алгоритма Тарьяна для поиска сильно связных циклов. Алгоритм:

  1. Вершины помечаются цветами: белый (не посещена), синий (в обработке), фиолетовый (обработана).

  2. Обход графа. При попадании в синюю вершину – обнаружен цикл.

  3. Вершина без исходящих ребер помечается фиолетовой.

Реализация на 1С оказалась в 5 раз компактнее предыдущего решения и легко справилась с 50 000 элементов, исключив лишние проходы.

 

Юнит-тестирование vs отладка

 

 

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

Решение: Написали обработку-тест. В табличный документ вводятся ожидаемые даты, связи задач. Запускается тест: зеленый – хорошо, красный – ошибка. Отладка ускорилась в разы.

Как развитие этого подхода мы начали писать тесты заранее (TDD подход). Сейчас для подобных задач я бы использовал Yaxunit. Благодаря ему на текущем проекте с большим покрытием тестами при изменении архитектуры падающие тесты предотвращают попадание проблемного кода в master.

 

Сборочные линии (DevOps)

 

 

Инструмент – например, готовая библиотека Jenkins-lib – может показаться ненужным, пока его не попробуешь. Классическая сборочная линия получает проект из репозитория Git, собирает, прогоняет тесты, разворачивает на тестовые стенды. Тем самым избавляет от ручных действий.

Пример из жизни: при создании Merge Request из ветки разворачивается новая база, она публикуется на веб-сервисе и тестировщику в Telegram прилетает ссылка: «Вот база, вот задача, тестируй». Все это происходит до попадания кода в master. С Jenkins или GitLab CI/CD можно делать больше.

 

Микросервисная архитектура

 

 

Мы привыкли, что 1С – это монолит, который автоматизирует все (ERP, УХ и т.д.). Наша компания решила пойти по пути разбиения на сервисы (не обязательно на микросервисы в чистом виде). Теперь отдельные сервисы реализуют свою логику, обмениваются данными. В общей базе (хранилище) собираются готовые данные.

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

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

 

Паттерны программирования

 

 

Паттерны программирования и архитектурные паттерны уже стали трендом в определенных кругах 1С-разработчиков. Более того, многие из вас используют их, даже не осознавая этого — просто потому, что сама платформа 1С к этому располагает. Здесь важно перейти от неосознанного применения к осмысленному — тогда можно будет задействовать дополнительные возможности.

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

 

Заключение

 

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

  • Поддерживать знания в актуальном состоянии;

  • Планировать обучение и развитие хардскиллов;

  • Расширять кругозор и насмотренность в программировании;

  • Стараться всегда смотреть на задачи сверху, не бояться выходить за рамки стандартных подходов 1С.

 

Рекомендуемые материалы

 

  • «Программист-прагматик: путь от подмастерья к мастеру» — Эндрю Хант, Дэвид Томас

  • «Чистый код: создание, анализ и рефакторинг» — Роберт Мартин

  • «Совершенный код: мастер-класс» — Стив Макконнелл

  • «Архитектура корпоративных программных приложений» и «Рефакторинг. Улучшение существующего кода» — Мартин Фаулер

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TECH EVENT.

См. также

Личная эффективность Бесплатно (free)

Мидлы часто сталкиваются с «невидимым потолком»: задачи решаются, а до сеньора не вырасти. Секрет часто не в знаниях, а в неготовности брать ответственность за проект и команду, неумении декомпозировать проблемы и страхе выйти из зоны комфорта. Автор статьи, который прошел этот непростой, но увлекательный этап профессионального роста, делится своими «путевыми заметками». Разбираемся, как страх вопросов ведет к «качелям вместо качели», зачем браться за «неблагодарные» задачи и почему отдых – инвестиция в продуктивность.

07.07.2025    268    12    DoctorLambo    2    

0

Личная эффективность Бесплатно (free)

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

25.06.2025    8127    0    Sherbakov_Alexandr    38    

31

Коммуникации Личная эффективность Бесплатно (free)

Работа 1С-специалиста часто ассоциируется с конкретными техническими заданиями, строгими регламентами и минимальной необходимостью в общении. Но в современном IT-мире одних технических навыков становится недостаточно – всё большее значение приобретают soft skills, или «мягкие навыки»: коммуникация, критическое мышление, гибкость, умение работать с людьми. В этой статье рассказывается, как прокачивать «мягкие навыки» прямо в рамках типовой 1С-рутины, на обычных задачах и в общении с заказчиком.

23.06.2025    570    0    user2151211    1    

3

Личная эффективность Бесплатно (free)

Один из ведущих мировых специалистов по Канбан в IT-индустрии, Доминика Деграндис, считает, что продуктивность работы можно увеличить с помощью техник визуализации. Автор решил разобраться, применимы ли советы из ее книги «Визуализируйте работу. Как выявить расхитителей времени и оптимизировать процессы» к нашей IT-рутине.

05.06.2025    664    0    BiboMiho    1    

3

Мотивация Личная эффективность Бесплатно (free)

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

05.06.2025    2468    0    vandalsvq    18    

44

Личная эффективность Обучение и наставничество 1С v8.3 ИТ-компания Россия Бесплатно (free)

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

02.06.2025    698    0    user2148151    4    

2

Личная эффективность Компетенции и навыки РП Бесплатно (free)

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

28.05.2025    612    0    user596192_shiiisha    0    

0

Личная эффективность Россия Бесплатно (free)

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

20.05.2025    441    0    FrolovAN    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1884 18.06.25 14:37 Сейчас в теме
(0) Антон, спасибо за статью!

много написали - все смешали - не все поймут

1. Задача про удаление отриц. чисел - можно решить задачу "слева-направо" - находим отриц. , далее проверяем след. элемент, если он положительный, то делаем сдвиг. Если - отриц. , то снова смотрим след. элемент.
Короче, сдвигает только при одном условии - если после отриц. идет полож. элемент.
3. AntonChausov 299 18.06.25 14:49 Сейчас в теме
(1) нет. Если у вас массив из 100 элементов, отрицательный только первый - откуда бы вы не смотрели: слева направо, или наоборот, вы удалите отрицательный элемент и 99 элементов переставите. Именно в этом заключается неоптимальность
5. RustIG 1884 18.06.25 15:08 Сейчас в теме
(3) в терминах 1с я бы решал просто - создал второй массив и добавлял в него только положительные элементы. То есть никаких сдвигов нет.

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

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

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

Еще непонятно, почему вы так легко переставили в третьем решении отриц. элемент в конец - при этой операции по логике все 99 элементов должны сдвинуться влево 99 раз по очереди....
Трактор; +1 Ответить
7. AntonChausov 299 18.06.25 15:35 Сейчас в теме
(5)
1. Прочитайте внимательно задачу:
> Усложнение: массив настолько большой, что едва помещается в памяти; операцию нужно выполнить максимально быстро с минимальной перестановкой.

То есть, по условиям задачи, даже первый массив только-только помещается в памяти, второй создавать просто негде

2. Это может быть не массив, а табличная часть, тогда никакого создания второго объекта просто невозможно выполнить. Массив приведен только для упрощения примера

3. Это теоретическая задача, которая просто показывает, как работает 1С

4. Относительно последнего вопроса - размер массива не меняется. Мы просто меняем местами значения по индексам. Как поменять местами значения обычных переменных
8. RustIG 1884 18.06.25 15:47 Сейчас в теме
(7) спасибо - все понятно.
2. RustIG 1884 18.06.25 14:41 Сейчас в теме
Для нас платформа - это черный ящик.
Таким образом, понимание устройства строки и работы СтрСоединить на порядки ускоряет решение.


Подобные нюансы надо описывать во встроенной справке по платформе 1С, а не на платных курсах...

Человек где-то увидел, что так написали, и так же написал. Зачем – непонятно.

У меня в пакетном удалении объектов (документов, например) используется - параметр задается в цикле.
4. AntonChausov 299 18.06.25 14:54 Сейчас в теме
(2) не очень понимаю, о каких платных курсах вы говорите..
Дело в банальном понимании того, как работает ПК, это никак не зависит от платформы - так работает и в C, и в Java, и в любом другом ЯП, по этому, скорее всего, и писать в справке к платформе не стали

Собственно, доклад был ровно про это - 1Сники не хотят разобраться, как работает их основной инструмент - платформа, и по этому в 9 из 10 случаев пользуются им не эффективно
6. RustIG 1884 18.06.25 15:12 Сейчас в теме
(4)
е очень понимаю, о каких платных курсах вы говорите..
Дело в банальном понимании того, как работает ПК, это никак не зависит от платформы - так работает и в C, и в Java, и в любом другом ЯП, по этому, скорее всего, и писать в справке к платформе не стали


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


(4)
Сники не хотят разобраться, как работает их основной инструмент - платформа,

такой вывод на основе СтрСоединить()?
и как разобраться, как работает платформа 1С ? - по американским книжкам? не уловил мысль
9. AntonChausov 299 18.06.25 15:47 Сейчас в теме
Конкатенация - это отдельная операция.
Как раз, благодаря тому, что она работает как и в любом другом языке программирования, вы можете (при желании) писать правильно, или можете продолжать делать "как получается". Это ваше решение.

А выводы я делаю не по СтрСоединить, а на основании того кода, который вижу в реальных решениях в отрасли. По субъективным ощущениям, 7 из 10 1Сников даже стандарты с итс не читали, не говоря о чем-то более сложном.

И опять не понимаю при чем тут "американские книжки". Про них, как и про "платные курсы" пишите вы, а не я.
Как работает платформа - можно начать разбираться, например по материалам для подготовки к Эксперту, или по книгам от 1С, "отечественным". Или какие-то более фундаментальные вещи по алгоритмам почитать. Уверен, что есть и русские авторы (на вскидку не назову сейчас)
13. RustIG 1884 18.06.25 16:12 Сейчас в теме
(9)
в реальных решениях в отрасли.

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

ПС. как работает платформа - платные курсы - как раз про курс Эксперта я имел в виду.
d4rkmesa; +1 Ответить
16. AntonChausov 299 18.06.25 16:18 Сейчас в теме
(13) нет, я как раз про внедрения типовых, больше. Типовые проходят какую-никакую проверку той же АПК (что спасает далеко не от всего, конечно)
Во "внедрениях" дичи сильно больше, обычно.

Для подготовки к Эксперту очень много материалов в открытом доступе + есть те же DevCon-конференции где и расскажут про платформу и свои вопросы разработчикам задать можно
21. RustIG 1884 18.06.25 16:41 Сейчас в теме
(16) хорошо, поищу, спасибо
10. seperblunt 21 18.06.25 15:57 Сейчас в теме
а запрос так написали, чтобы конструктор работал. я тоже так всегда делаю
Rafael-87; RustIG; +2 Ответить
11. AntonChausov 299 18.06.25 16:02 Сейчас в теме
(10) суть примера с запросом в том, что переменная "РазмерВыборки" нигде не переопределяется. Можно было сразу написать "ВЫБРАТЬ ПЕРВЫЕ 2000" - логика не изменится никак. Более того, сработает быстрее, потому что не будет лишнего действия. Но автор сего творчества просто где-то увидел, что кто-то так написал и, не думая, скопировал код
12. RustIG 1884 18.06.25 16:06 Сейчас в теме
(11) хорошо, мысль вашу поняли. с другой стороны , мы не знаем как развивается подсистема - возможно спеца перекинули на срочный вопрос, и он не успел включить эту переменную в параметр функции или процедуры... история умалчивает, возможно была попытка некий шаблон сделать.
14. AntonChausov 299 18.06.25 16:14 Сейчас в теме
(12)
Ну, это говорит о культуре разработки и внимательности программиста. Такой код не должен попадать в продакшн.
"Меня отвлекли" - это детская отмазка. Как если "почему ты не подготовился к контрольной и 2 получил?" - "Учитель плохой, всем двойки ставил" - перекладывание ответственности. Вы всегда отвечаете за тот код, который вносите в решение
20. RustIG 1884 18.06.25 16:40 Сейчас в теме
(14) не-не, "не отвлекли" , а "так задумано" - следующей итерацией этот код превратится в нечто полезное и правильное. продакш - это всегда незавершенное производство
15. seperblunt 21 18.06.25 16:15 Сейчас в теме
(12) в любом случае невелик грех, по коду видно - парень на опыте наоборот :) еще и форматнул число - знает про пробел... хотя я в таком слочае XMLСтроку пишу- быстрее
Трактор; RustIG; +2 Ответить
17. AntonChausov 299 18.06.25 16:21 Сейчас в теме
(15)
Из таких небольших грехов потом складываются, порой, минуты тормозов "на пустом месте". Тут допустили, там не посмотрели, здесь "потом поправим" (нет)...
18. seperblunt 21 18.06.25 16:38 Сейчас в теме
(17) скоро ИИ все такие мелочи добьет нам и как заживем :)
MegasXXX; RustIG; +2 Ответить
25. AntonChausov 299 19.06.25 00:29 Сейчас в теме
(18) с этим, тоже, соглашусь. Прогресс не остановить. Но пока, качество генерации от ИИ такое, что в любом случае за ним придется много перепроверять, и опять же, не понимая сути, мы будем получать плохой код, а ИМ, который учится на плохой кодовой базе, будет только ухудшаться. Исследование: https://www.theregister.com/2025/06/15/ai_model_collapse_pollution/
19. RustIG 1884 18.06.25 16:39 Сейчас в теме
(17) вы все правильно пишите, но я сужу с высоты 13 лет внедрения и программирования , и вы как будто по кругу идете - все 13 лет ( и до меня тоже) об этом все говорили ... все все понимают....
проблема в другом - что никто в открытую косяки отраслевых не выкладывает...поэтому они до сих пор существуют....
не выкладывают - потому что не комильфо так делать - не по партнерски.
24. AntonChausov 299 19.06.25 00:26 Сейчас в теме
(19) я тоже 10 лет внедрял, 4 - писал типовые, и 2 года в инхаузе. И проблемы везде одни и те же). Дело в культуре (ее отсутствии)
Франчи дрессируют быстро выдать результат, работающий хоть как-то и этот подход отражается на большей части проектов, даже не от франчей. С этим надо бороться, имхо
34. kalyaka 1136 20.06.25 22:29 Сейчас в теме
(17) нужно различать: "тормоза", качество кода, возможность поддержки, масштабирования и просто работает здесь и сейчас :).
Приведенный пример с неиспользуемой переменной вообще выделяется системой EDT на раз-два и конечно в окончательном виде не нужно оставлять таких "заготовок", т.к. это просто мусор, информационный шум и потенциальные ошибки.
31. gybson 20.06.25 13:45 Сейчас в теме
(15) и в типовых так пишут
22. DariaMorozova 18.06.25 16:51 Сейчас в теме
Антон, спасибо за статью! Она очень отозвалась, потому что я тоже пришла в 1С из экономики. Вместе с тем, теперь моя главная цель — стать настоящим программистом, так как именно здесь я наконец-то почувствовала себя на своем месте.

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

Кстати, если у вас снова будет доклад в Питере, с огромным удовольствием его посещу!
26. AntonChausov 299 19.06.25 00:32 Сейчас в теме
(22) Спасибо. Постараюсь что-то придумать на октябрьскую конференцию. Но, пока, идей нет)
23. AntonChausov 299 19.06.25 00:22 Сейчас в теме
(20) не соглашусь, продакшн должен быть стабильно работающей версией, а все вот эти "пока и так сойдет" оставим "вовкам в тридевятом царстве". Давайте развивать качество решений и культуру разработки. Хватит писать "да в 1С сами не могут сделать нормально". Надо писать так, чтобы говорить - вот они пишут плохо, а надо вот так
MegasXXX; +1 Ответить
27. starik-2005 3180 19.06.25 10:30 Сейчас в теме
Я думаю, что смысла нет учить язык, а вот технологию - смысл есть. В самой 1С постоянно появляются новые возможности. Веб-сервисы, потом HTTP-сервисы с REST и oData, сейчас вот завезли оповещение с сервера, регулярки и Websocket-клиентов. Боты, механизмы интеграции, что там еще?

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

По поводу языков, то питон и JS маст хэв. На них, помимо прочих плюсов, достаточно неплохо пишет ИИ. JS можно юзать внутри форм 1С, при том 1С даже отладчик туда завезла. Питон - средство автоматизации рутины.

Также имеет смысл освоить С++ на уровне создания простых ВК, для этого сейчас ничего особо не надо знать - мануалов полно, просто читай инструкцию (как у Маска про название баржи).

Вот этот список уже позволит чуть лучше понимать, как оно все работает внутри компьютера, а не только внутри виртуальной машины 1С.

Ну и алгоритмы и структуры данных. И структуры данных тут важнее, чем алгоритмы, ибо они как раз и реализуют эти самые алгоритмы. И знать, что там О(1), а что О(Н) - очень даже полезная штука.
qwinter; kalyaka; +2 Ответить
35. kalyaka 1136 20.06.25 22:32 Сейчас в теме
(27) Только в обратном приоритете :)
алгоритмы и структуры данных
технологию
28. Cyberhawk 136 19.06.25 20:39 Сейчас в теме
сразу написать "ВЫБРАТЬ ПЕРВЫЕ 2000" - логика не изменится никак
Зато например снизится удобство отладки, когда нужно на лету переопределять это кол-во выбираемых записей...
jack_kkm; +1 Ответить
29. q_i 585 20.06.25 11:53 Сейчас в теме
А чем функции ВидСправочник() и ВидДокумент() не угодили?
39. RustIG 1884 21.06.25 09:03 Сейчас в теме
(29) примитивные штуки вынесли в отдельную функцию... Усложнили на пустом месте.
57. MegasXXX 3 24.06.25 16:16 Сейчас в теме
(39)
Это но сейчас там "Справочник" и "Документ", а вчера может был "СправочникСсылка" или "СправочникОбъект" и это возможно из кого-нибудь обмена, где этот вид ещё поменяться может в будущем.

Что бы не искать по всей конфигурации и не менять во всех местах, вполне себе нормальное решение.
59. RustIG 1884 24.06.25 17:35 Сейчас в теме
(57) комментировать код надо - для каких целей такой примитив написали, что будет в будущем и т.д.
и вопросов не будет.
а так - да, примитив на пустом месте. где-то даже в стандартах 1с написано, что так делать не комильфо

вы же стандарты перечитываете?
https://its.1c.ru/db/v8std#content:647:hdoc
https://its.1c.ru/db/v8std#content:456:hdoc

должны быть комментарии и название функции ЭтоВидСправочник(), а не ВидСправочник().
60. RustIG 1884 24.06.25 18:34 Сейчас в теме
(57) в целом понятно, такое может быть в коллективной разработке, когда модули заняты и разделены по задачам. Кому-то досталась разработка функций получения вида объекта...
61. q_i 585 25.06.25 19:26 Сейчас в теме
(39) Так это типичных обход ограничения, что в языке 1С нет констант (не тех, которые объекты конфигурации, а тех, которые const или define). В типовых точно так же это ограничение обходят (например, откройте общий модуль ДополнительныеОтчетыИОбработкиКлиентСервер и посмотрите на функции ВидОбработкиХХХ()).
62. RustIG 1884 25.06.25 20:23 Сейчас в теме
(61) это я видел, но ни тогда , ни сейчас вас не понял - о каком ограничении вы говорите? Какой смысл использовать строки для сравнения? Просто это примитивный способ хранить параметры в виде строки. А еще некоторые ругаются на использование метода НайтиПоКоду(). Короче, кто как хочет (умеет), так и программирует... Только не надо примитив выдавать за стандарт.
30. starik-2005 3180 20.06.25 13:11 Сейчас в теме
Стандарт 782: для сложения длинных строк или массовой конкатенации нужно использовать СтрШаблон или СтрСоединить. В других языках есть аналоги, такие как StringBuilder.

При замере скорости выявилось, что конкатенация 300 000 строк через «;» выполняется в ~150 раз медленнее, чем через СтрСоединить. Таким образом, понимание устройства строки и работы СтрСоединить на порядки ускоряет решение.
СтрСоединить - штука быстрая, но есть мнение, что СтрШаблон не быстрее классической конкатенации. Замеряли?

И да, как использование СтрСоединить способствует пониманию того, как оно работает? Просто на уровне "быстрее - медленнее" - такое себе "понимание".
jack_kkm; +1 Ответить
33. kalyaka 1136 20.06.25 21:49 Сейчас в теме
(30) про это на ИТС написано:
При массовых(*) операциях конкатенации строк следует использовать методы платформы СтрРазделить и СтрСоединить.
...
Такая обработка данных не только быстрее выполняется, но и приводит к снижению потребления оперативной памяти.

* Примечание: следует ориентироваться на 1000 операций конкатенации строк и более (эта величина также может быть еще меньше при увеличении длин строк: чем строки длиннее, тем операции выполняются дольше). Особого внимания требует конкатенация в циклах и в универсальных механизмах, которые могут применяться на сколь угодно больших объемах данных. В то же время, не следует отказываться от конкатенации строк в остальных случаях, так как это заметно снижает читаемость кода.
36. starik-2005 3180 20.06.25 22:48 Сейчас в теме
(33)
ИТС
И что? Как это позволяет понять, почему что-то работает быстрее, а что-то - медленнее?
37. kalyaka 1136 20.06.25 23:01 Сейчас в теме
(36) Ну "почему" можно догадаться - особенность строк в "Си". С Си размер строк нужно каждый раз вычислять, при операции конкатенации нужно выделить память равную сумме двух строк. Итого тормоза на: 1. вычислении длины, 2. выделении памяти из кучи.
d4rkmesa; +1 Ответить
38. RustIG 1884 21.06.25 09:02 Сейчас в теме
(37) для полноты картины, скажите, как в Си работает аналог СтрСоединить()? Какую в Си разработчики запрограммировали и заложили концепцию в этот метод СтрБилдер()?
42. kalyaka 1136 21.06.25 10:49 Сейчас в теме
(38) в Си такой операции нету, и насколько я помню, вообще не поддерживаются операции со строками, а строка - это массив символов. Так что аналог СтрСоединить можно было бы сделать как: подсчет всей длины текста, выделение под него памяти и копирование символов соединяемых строк
47. RustIG 1884 21.06.25 11:35 Сейчас в теме
(42) в Си++ кажется есть тип стринг, я так помню, помню использовали встроенные функции по работе со строками, интересное было время, не помню чтобы со строками я работал через массивы
40. RustIG 1884 21.06.25 09:22 Сейчас в теме
(37) в Си постоянно приходится следить за памятью: освобождать вовремя, при инициализации переменных точно задавать размер, в сравнении с 1с это низкоуровневый язык... Что нам предлагают разработчики платформы 1с, то мы используем... СтрШаблон () и СтрСоединить() недавно появились... На заре изучения 1с все писали стр = стр1 + стр2... И считали, что по другому никак... Сейчас некоторые считают что СтрШаблон() это фэншуй и подходит для всех случаев... Перекосило многих - я только один раз применил ее, когда в интерактиве задаете параметр в якобы предложение -шаблон... А то что я вижу в типовых - по мне не уместно, когда 10 параметров передается в эту функцию... Короче, это мелочи, через год будем обсуждать другую функцию.... Грань когда это лишнее и когда это необходимо тонкая , разговоров будет на 100 лет... Уже начали научно обосновывать и обсуждать конкатенацию строк. По моему это "дно"... Зачем это обсуждать? :) Это отражает низкий уровень подготовки специалистов или завышенные требования жизненных задач? Что за необходимость разбираться в конкатенации строк?
43. kalyaka 1136 21.06.25 10:54 Сейчас в теме
(40) когда Си был базовым языком программирования...
Зачем это обсуждать?
Ну наверное чтобы понимать откуда возникают высокоуровневые проблемы :)
44. kalyaka 1136 21.06.25 11:03 Сейчас в теме
(40)
Что за необходимость разбираться в конкатенации строк?
Наверное в большинстве случаев такой необходимости в современных условиях нету и нужно исходить просто из наглядности кода. Например использовать СтрШаблон с десятком параметров и числовых индексов - не очень наглядно и для большинства случаев не предпочтительный вариант. А вот собрать текст в виде массива строк, а строки оформить через СтрШаблон или просто конкатенацией - выглядит почти как интерполяция в других языках
45. AntonChausov 299 21.06.25 11:07 Сейчас в теме
(44) очень не согласен. Видимо, вы не попадали на криво написанный хайлоад.
У меня в практике было несколько кейсов, где банальное исправление работы со строками ускоряло операцию на порядки (от нескольких минут к секундам)
(Часто бывает во всякого рода выгрузках/загрузках)
46. kalyaka 1136 21.06.25 11:30 Сейчас в теме
(45) охотно верю, но думаю, что это очень редкие кейсы. Вернее конкретно в условиях хайлоад все имеет значение, но большинство задач все таки не в хайлоад, по крайней мере бизнесовых
48. RustIG 1884 21.06.25 11:42 Сейчас в теме
(45) Антон, ваш доклад не раскрыл тему "зачем обсуждать конкатенацию". В комментариях тоже особо не раскрываете тему. Не хватает примеров. Но по себе знаю, что работать и фиксировать знания на случай, что в будущем пригодится в докладе или в дискуссии, невозможно. И все примеры остаются в прошлом и в забвенной памяти... Увы, сталкивался, но не помню примеров ... Проблема всего образования
49. AntonChausov 299 21.06.25 13:34 Сейчас в теме
(48)
Я перед собой такой цели и не ставил - обсуждать конкатенацию. Конкатенация - это один из примеров того, что 1Сники не понимают структур данных и потому работают с ними не оптимально. Если есть желание проверить - проведите эксперимент: напишите цикл на 100к повторений, в котором будете добавлять к строке " а", и потом то же самое сделайте через СтрСоединить(МассивИз100кА, " ") - сравните, что сработает быстрее. А почему второй вариант - я описал
50. starik-2005 3180 21.06.25 23:09 Сейчас в теме
(49)
Конкатенация - это один из примеров того, что 1Сники не понимают структур данных и потому работают с ними не оптимально.
Которые 1С-неги? Которые платформу пишут, или которые на языке 1С пишут конфигурации?

Что такое "работают с ними не оптимально"? Кто с ними "работает оптимально", как это работает на том самом низком уровне?

Статья говорит, что нужно понимать, но не рассказывает, как это работает. И да, было раньше такое, что народ выгружал в текстовый файл собранную конкатенацией строку. И не нужна она там, и СтрСоединить не нужно - достаточно использовать потоковую запись текста. Это рещает проблему формирования больших текстов из небольших строк, а формирование массива и СтрСоединить в этом конкретном случае является неоптимальным кодом, т.к. он сначала выделяет память для каждой строки, потом память для массива строк, пототм память для результирующей строки, потом память для текстового файла. Т.е. память х 3 + память массива. А если писать через запись текста, то достаточно одной строки, для которой будет выделяться память, после вывода ее в запись текста эта строка больше не нужна. Все, никакого лишнего выделения, никаких лишних затрат на конкатенацию - данные скидываются в буфер ОС, и уж ОС записывает это все в файл без участия 1С.

Так что СтрСоединить в тех самых случаях, которые вы называете неоптимальными из конкатенации, так же неоптимальна.

От этого и вопросы мои. И пока вижу, что автор тоже так себе это понимает.
64. Brawler 461 27.06.25 16:04 Сейчас в теме
(50) поддерживаю!!!
Еще есть такое понятие стека формирующегося при вызове процедур и функций и это тоже памяти расход)))
51. starik-2005 3180 21.06.25 23:27 Сейчас в теме
(40)
в Си постоянно приходится следить за памятью: освобождать вовремя, при инициализации переменных точно задавать размер, в сравнении с 1с это низкоуровневый язык
В С++ есть такая штука, как RAII:
RAII, что расшифровывается как Resource Acquisition Is Initialization (Получение ресурса есть инициализация), это идиома программирования, используемая в объектно-ориентированных языках со статической типизацией. В рамках RAII, получение ресурса тесно связано с инициализацией объекта, а освобождение ресурса - с его уничтожением. Проще говоря, когда объект создается, он получает ресурс, а когда объект уничтожается, ресурс освобождается автоматически.
Так вот в С++ строки - это объекты, тот самый тип std::string. И там есть и про конкатенацию и про много что еще, но код примера внешней компоненты на С++ написан 1С-негами в лохматых каких-то годах, когда все было не так. Современные шаблоны от Kandr и Infactum уже используют ustring - тип, условно аналогичный тому, с чем оперирует 1С, поэтому механизмы преобразовний уже не нужны, остается только выделение памяти для строк, передаваемых платформе из ВК, менеджером памяти 1С.

И если говорить о СтрСоединить, то в С/С++ масса вариантов, как их соединить. Самый базовый, который сама 1С применяет, - это memcopy, т.к. копирование строк в буфер. Но это будет не быстрее, чем обычный цикл, т.к. доступ к памяти медленнее, чем работа процессора, тем более компилятор С++ раздербанить цикл внутри, объединив копирования символов в несколько последовательных операций, т.к. это работает на самом низком уровне быстрее. А вот интерпретировать это быстрее не получится, поэтому СтрСоединить будет существенно медленнее, чем подобная операция, написанная на С++, ибо она уже откомпилирована для "обычной" (generic) архитектуры и оперирует непредсказуемыми параметрами, которые компилятор не оптимизировал.

В общем не добавляет 1С-негу это знание ничего вообще. Вот в ассемблере на базовом уровне разобраться, в С, С++ - это да, но базовый уровень ничего не говорит о латентности памяти, конкуренции за ресурсы памяти разных потоков, размерности кешей разных уровней. Даже не каждый админ понимает, сколько каналов памяти у него на сервере используется в текущей конфигурации, и почему нужно забивать в серверных машинах ВСЕ слоты памяти. И самое печальное, что хрен объяснишь большинству из них про это, да даже про режим высокой производительности он не способен понять - только прочитать из методичек. Но тут 1С сама виновата, т.к. платформа криво написана и не умеет это обрабатывать, при том скульный сервер вполне себе и на сбалансированной схеме живет и показывает производительность не сильно ниже.
52. kalyaka 1136 22.06.25 21:05 Сейчас в теме
Мне статья в целом понравилась, с посылом согласен: 1С-негам есть куда расти :).

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

Пример с конкатенацией не удачный, т.к. все-таки скорее носит прикладной характер ("правильность" выбранного варианта определяется вопросом производительности и актуально для экстремальных случаев).
56. starik-2005 3180 24.06.25 14:32 Сейчас в теме
(52)
Владение разными парадигмами (функциональная, ООП, процедурная) позволяет выбирать простые решения для сложных задач (работа с деревьями, использование абстрактных алгоритмов, поиск оптимальных значений, работа с матрицами, векторами и т.д.).
Да не работают почти 1С-неги со сложными задачами. Давно не встречал. Пару раз за последний год встречал что-то на алгоритмы, но дипсик это все писал за час, я только слова чуть правил, ибо самое главное - идея, а ее как раз ИИ отлично генерит, ибо нет новых идей - "все украдено до нас".

Парадигма в 1С одна - структурное программирование. Нет там функций высшего порядка, максимум можно модуль передать в переменной. Это ни разу не функциональная парадигма, и даже не ООП, хотя можно создать коллекцию с объектами типа обработок и даже форм. Но это будет условное ООП, в котором есть и инкапсуляция, и полиморфизм, но нет наследования.
41. RustIG 1884 21.06.25 09:30 Сейчас в теме
(33) разработчики 1с оптимально запрограммировали конкатенацию строк, и обернули это в новую функцию СтрСоединить(). До этого они запрограммировали универсальное сложение переменных, когда платформа сама сначала определяет типы слагаемых переменных , потом производит для разных типов свой алгоритм "конкатенации"... Я только в этом вижу разницу стр1 + стр2... В обоих случаях ( при обычном сложении и при использовании СтрСоединить()) для строк используется конкатенация , для строк ничего нового придумать нельзя. Конкатенация - это не алгоритм, это название одной из примитивных арифметических операций: сложение, вычитание, умножение, конкатенация стоят в одном ряду...
32. gybson 20.06.25 13:52 Сейчас в теме
Людям нужны конкретные видимые цели.
Можно прям сразу с codeforces начать, поплакать недельку и пойти на https://leetcode.com/,
https://www.codingame.com/ или подобные. Я рекомендую codingame, там веселее.
53. kser87 2474 22.06.25 23:05 Сейчас в теме
Парадокс Блаба - понравилось название. Поэтому любой 1Сник должен минимум SQL знать
54. user1832003 58 23.06.25 07:07 Сейчас в теме
большинство текста и примеров обычные задачи на алгоритмы, которыми гоняют студентов на собесах на первую работу. В 1с они бесполезныы более чем полностью. Только угашеный в 1с будет чистить массив самым оптимальным путем "с начала и с конца". 100% воспользуются максимальном простым способом - созданием пустого массива и обходом "очищаемого" с отбором.

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

Короче текст содержит кучу воды. Полезной информации тут 0. Тупо копирайтер заработал денюжку за ~10к символов и пару анимаций.

про ВидСправочник вообще не понятно. Толи то что в 1 строку, толи то, что сам возврат строки "Справочник".

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

// Возвращает имя базового типа по переданному значению объекта метаданных.
//
// Параметры:
//  ОбъектМетаданных - ОбъектМетаданных - объект метаданных, по которому необходимо определить базовый тип.
// 
// Возвращаемое значение:
//  Строка - имя базового типа по переданному значению объекта метаданных.
//
// Пример:
//  ИмяБазовогоТипа = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(Метаданные.Справочники.Номенклатура); = "Справочники".
//
Функция ИмяБазовогоТипаПоОбъектуМетаданных(ОбъектМетаданных) Экспорт
	
	Если Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
		Возврат "Документы";
		
	ИначеЕсли Метаданные.Справочники.Содержит(ОбъектМетаданных) Тогда
		Возврат "Справочники";
		
	ИначеЕсли Метаданные.Перечисления.Содержит(ОбъектМетаданных) Тогда
		Возврат "Перечисления";
		
	ИначеЕсли Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) Тогда
		Возврат "РегистрыСведений";
		
	ИначеЕсли Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных) Тогда
		Возврат "РегистрыНакопления";
		
	ИначеЕсли Метаданные.РегистрыБухгалтерии.Содержит(ОбъектМетаданных) Тогда
		Возврат "РегистрыБухгалтерии";
		
	ИначеЕсли Метаданные.РегистрыРасчета.Содержит(ОбъектМетаданных) Тогда
		Возврат "РегистрыРасчета";
		
	ИначеЕсли Метаданные.ПланыОбмена.Содержит(ОбъектМетаданных) Тогда
		Возврат "ПланыОбмена";
		
	ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМетаданных) Тогда
		Возврат "ПланыВидовХарактеристик";
		
	ИначеЕсли Метаданные.БизнесПроцессы.Содержит(ОбъектМетаданных) Тогда
		Возврат "БизнесПроцессы";
		
	ИначеЕсли Метаданные.Задачи.Содержит(ОбъектМетаданных) Тогда
		Возврат "Задачи";
		
	ИначеЕсли Метаданные.ПланыСчетов.Содержит(ОбъектМетаданных) Тогда
		Возврат "ПланыСчетов";
		
	ИначеЕсли Метаданные.ПланыВидовРасчета.Содержит(ОбъектМетаданных) Тогда
		Возврат "ПланыВидовРасчета";
		
	ИначеЕсли Метаданные.Константы.Содержит(ОбъектМетаданных) Тогда
		Возврат "Константы";
		
	ИначеЕсли Метаданные.ЖурналыДокументов.Содержит(ОбъектМетаданных) Тогда
		Возврат "ЖурналыДокументов";
		
	ИначеЕсли Метаданные.Последовательности.Содержит(ОбъектМетаданных) Тогда
		Возврат "Последовательности";
		
	ИначеЕсли Метаданные.РегламентныеЗадания.Содержит(ОбъектМетаданных) Тогда
		Возврат "РегламентныеЗадания";
		
	ИначеЕсли Метаданные.РегистрыРасчета.Содержит(ОбъектМетаданных.Родитель())
		И ОбъектМетаданных.Родитель().Перерасчеты.Найти(ОбъектМетаданных.Имя) = ОбъектМетаданных Тогда
		Возврат "Перерасчеты";
		
	ИначеЕсли Метаданные.Обработки.Содержит(ОбъектМетаданных) Тогда
		Возврат "Обработки";
		
	ИначеЕсли Метаданные.Отчеты.Содержит(ОбъектМетаданных) Тогда
		Возврат "Отчеты";
		
	ИначеЕсли Метаданные.Подсистемы.Содержит(ОбъектМетаданных) Тогда
		Возврат "Подсистемы";
		
	ИначеЕсли Метаданные.ОбщиеМодули.Содержит(ОбъектМетаданных) Тогда
		Возврат "ОбщиеМодули";
		
	ИначеЕсли Метаданные.ПараметрыСеанса.Содержит(ОбъектМетаданных) Тогда
		Возврат "ПараметрыСеанса";
		
	ИначеЕсли Метаданные.Роли.Содержит(ОбъектМетаданных) Тогда
		Возврат "Роли";
		
	ИначеЕсли Метаданные.ОбщиеРеквизиты.Содержит(ОбъектМетаданных) Тогда
		Возврат "ОбщиеРеквизиты";
		
	ИначеЕсли Метаданные.КритерииОтбора.Содержит(ОбъектМетаданных) Тогда
		Возврат "КритерииОтбора";
		
	ИначеЕсли Метаданные.ПодпискиНаСобытия.Содержит(ОбъектМетаданных) Тогда
		Возврат "ПодпискиНаСобытия";
		
	ИначеЕсли Метаданные.ФункциональныеОпции.Содержит(ОбъектМетаданных) Тогда
		Возврат "ФункциональныеОпции";
		
	ИначеЕсли Метаданные.ПараметрыФункциональныхОпций.Содержит(ОбъектМетаданных) Тогда
		Возврат "ПараметрыФункциональныхОпций";
		
	ИначеЕсли Метаданные.ХранилищаНастроек.Содержит(ОбъектМетаданных) Тогда
		Возврат "ХранилищаНастроек";
		
	ИначеЕсли Метаданные.ОбщиеФормы.Содержит(ОбъектМетаданных) Тогда
		Возврат "ОбщиеФормы";
		
	ИначеЕсли Метаданные.ОбщиеКоманды.Содержит(ОбъектМетаданных) Тогда
		Возврат "ОбщиеКоманды";
		
	ИначеЕсли Метаданные.ГруппыКоманд.Содержит(ОбъектМетаданных) Тогда
		Возврат "ГруппыКоманд";
		
	ИначеЕсли Метаданные.ОбщиеМакеты.Содержит(ОбъектМетаданных) Тогда
		Возврат "ОбщиеМакеты";
		
	ИначеЕсли Метаданные.ОбщиеКартинки.Содержит(ОбъектМетаданных) Тогда
		Возврат "ОбщиеКартинки";
		
	ИначеЕсли Метаданные.ПакетыXDTO.Содержит(ОбъектМетаданных) Тогда
		Возврат "ПакетыXDTO";
		
	ИначеЕсли Метаданные.WebСервисы.Содержит(ОбъектМетаданных) Тогда
		Возврат "WebСервисы";
		
	ИначеЕсли Метаданные.WSСсылки.Содержит(ОбъектМетаданных) Тогда
		Возврат "WSСсылки";
		
	ИначеЕсли Метаданные.Стили.Содержит(ОбъектМетаданных) Тогда
		Возврат "Стили";
		
	ИначеЕсли Метаданные.Языки.Содержит(ОбъектМетаданных) Тогда
		Возврат "Языки";
		
	ИначеЕсли Метаданные.ВнешниеИсточникиДанных.Содержит(ОбъектМетаданных) Тогда
		Возврат "ВнешниеИсточникиДанных";
		
	Иначе
		
		Возврат "";
		
	КонецЕсли;
	
КонецФункции
Показать
jack_kkm; smit1c; +2 Ответить
55. Sashares 33 23.06.25 17:20 Сейчас в теме
Зачем-то задается переменная, потом пишется запрос, а потом меняется значение переменной – нигде не переопределяется. Человек где-то увидел, что так написали, и так же написал. Зачем – непонятно.


Можно предположить, что это было полезно использовать для отладки.
Изменить значение локальной переменной в конфигураторе.
58. MegasXXX 3 24.06.25 16:21 Сейчас в теме
Спасибо. Хорошая статья.
Самое важное чего не делают многие 1С ники

"Перечитывайте стандарты 1С"
63. LopesLeonid 68 26.06.25 22:41 Сейчас в теме
1. Проходим массив с начала.

2. Если встречаем отрицательный элемент — меняем его с последним ещё не обработанным элементом массива (который справа).

3. После перестановки не увеличиваем индекс (нужно проверить то, что попало на это место).

4. Повторяем до тех пор, пока левый индекс не пересечётся с правым.
65. muskul 02.07.25 06:51 Сейчас в теме
Стандарты разработки.
вы вначале функционал сделайте рабочий и тот что у вас (1с) описан, а потом уже ищите блох.
В УТ нельзя корректировку реализации в ноль сделать при товаре с ОСУ уже как полтора месяца, а вы тут про стандарты, стандарт один *як *як и в прод, а на разборе полетов показывают и говорят 100% у нас все по тз, это ваши не доработки
Оставьте свое сообщение