Найти в Дзене
Умелый TV

Тестовую задачу на должность 1С Программист решила Нейросеть

Мой приятель долго уговаривал меня подружиться с нейросетями, уверяя, что это сильно упростит работу. Я отнекивался, но в один прекрасный день всё же решился на эксперимент. И каково же было моё удивление! Год назад я уже заглядывался на подобные штуки, но впечатление было смазанным — от той модели толку оказалось ноль. А эта — прям умница! Она, конечно, не пишет за тебя идеальный код с первого раза, но зато блестяще подсказывает сам алгоритм решения. И это для меня оказалось настоящим сокровищем. Бывает же: поставят задачу, смотришь в ТЗ — и ничерта не ясно, с какого бока подступиться. Я теперь просто копирую весь этот поток сознания заказчика в DeepSeek, а он его структурирует, раскладывает всё по полочкам и выдает суть. Самым ярким доказательством для меня стала одна старая тестовая задача. Я бился над ней два года назад, потратил уйму времени, но в итоге сдался, не сумев предложить ничего вменяемого. Поиски в Google тоже зашли в тупик. И вот, я вспомнил о ней и просто сбросил усло
Оглавление

Мой приятель долго уговаривал меня подружиться с нейросетями, уверяя, что это сильно упростит работу. Я отнекивался, но в один прекрасный день всё же решился на эксперимент.

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

Она, конечно, не пишет за тебя идеальный код с первого раза, но зато блестяще подсказывает сам алгоритм решения. И это для меня оказалось настоящим сокровищем. Бывает же: поставят задачу, смотришь в ТЗ — и ничерта не ясно, с какого бока подступиться. Я теперь просто копирую весь этот поток сознания заказчика в DeepSeek, а он его структурирует, раскладывает всё по полочкам и выдает суть.

Самым ярким доказательством для меня стала одна старая тестовая задача. Я бился над ней два года назад, потратил уйму времени, но в итоге сдался, не сумев предложить ничего вменяемого. Поиски в Google тоже зашли в тупик. И вот, я вспомнил о ней и просто сбросил условие нейросети. Результат поразил меня — она не просто набросала решение, а детально расписала логику, о которой я даже не подумал.

Суть задачи:
Реши задачу по 1С программированию:

Создайте внешнюю обработку «Вычисление рабочих дней». Данная обработка должна

вычислять количество рабочих дней в году, исходя из следующих условий:

- нерабочими днями считаются субботы и воскресенья;

- праздниками являются 1 января, 23 февраля и 8 марта;

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

Обеспечьте, чтобы обработка выдала данные о количестве рабочих дней за следующие 10

лет. Выводить информацию нужно в следующем формате: год – количество рабочих дней. Для

вывода информации используйте функцию «Сообщить()».

Например:

2010 год – 258 рабочих дней

2011 год – 260 рабочих дней

Кроме этого, создание структуру «ВыходныеДни». Ключом структуры является слово «Год»

и номер года (например, «Год2012»), а значением количество рабочих дней.

Проверьте, что возможно следующее обращение к данным структуры:

Сообщить(ВыходныеДни.Год2014).

______________________________________________________________________

Результат коллаборации: я + нейросеть

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

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

Проблема с форматом числа и ключом структуры

Самый интересный казус произошел при заполнении структуры, где в качестве ключа использовался год. Я изначально не учел одну особенность платформы 1С: по умолчанию числа форматируются с группировкой разрядов, то есть год «2024» в строке превращался в «2 024».

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

Изначальный проблемный код:

// Этот фрагмент не работает из-за пробелов в ключе
КлючСтруктуры = "Год" + Строка(ГодВычисления);
ВыходныеДни.Вставить(КлючСтруктуры, КоличествоРабочихДней);

Рабочее решение:
Проблему удалось решить с помощью функции Формат(), которая позволяет контролировать вывод числа. Я задал параметр "ЧГ=0", чтобы убрать разделители групп разрядов.

// Это решение уже рабочее
ВыходныеДни.Вставить("Год" + Формат(ГодВычисления, "ЧГ=0"), КоличествоРабочихДней);

Финальный вариант кода

Вот как выглядит итоговый код после всех правок и совместной доработки с нейросетью:

&НаКлиенте

Процедура РабочиеДни(Команда)

ВыполнитьВычисления()

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

&НаСервере

Функция ВычислитьРабочиеДниВГоду(Год) Экспорт

// Праздничные дни (месяц, день)

Праздники = Новый Массив;

Праздники.Добавить(Новый Структура("Месяц,День", 1, 1)); // 1 января

Праздники.Добавить(Новый Структура("Месяц,День", 2, 23)); // 23 февраля

Праздники.Добавить(Новый Структура("Месяц,День", 3, 8)); // 8 марта

НачалоГода = НачалоДня(Дата(Год, 1, 1));

КонецГода = КонецДня(Дата(Год, 12, 31));

КоличествоРабочихДней = 0;

ТекДата = НачалоГода;

Пока ТекДата <= КонецГода Цикл

ДеньНедели = ДеньНедели(ТекДата);

// Проверяем, не суббота и не воскресенье

Если ДеньНедели <> 6 И ДеньНедели <> 7 Тогда

// Проверяем, не праздничный день

ЭтоПраздник = Ложь;

Для Каждого Праздник Из Праздники Цикл

Если Месяц(ТекДата) = Праздник.Месяц И День(ТекДата) = Праздник.День Тогда

ЭтоПраздник = Истина;

Прервать;

КонецЕсли;

КонецЦикла;

Если Не ЭтоПраздник Тогда

КоличествоРабочихДней = КоличествоРабочихДней + 1;

КонецЕсли;

КонецЕсли;

ТекДата = ТекДата + 86400; // Прибавляем 1 день в секундах

КонецЦикла;

Возврат КоличествоРабочихДней;

КонецФункции

&НаКлиенте

Процедура ВыполнитьВычисления()

ТекГод = Год(ТекущаяДата());

ВыходныеДни = Новый Структура();

Для Счетчик = 0 По 9 Цикл

ГодВычисления = ТекГод + Счетчик;

КоличествоРабочихДней = ВычислитьРабочиеДниВГоду(ГодВычисления);

// Вывод через Сообщить()

Сообщить(Строка(ГодВычисления) + " год – " + Строка(КоличествоРабочихДней) + " рабочих дней");

// Заполняем структуру
//Этот код работать не будет. Ошибка: Задано неправильное имя атрибута структуры, потому что
//число кода будет с пробелом, а пробелы недопустимы в ключе

//КлючСтруктуры = "Год" + Строка(ГодВычисления);
//ВыходныеДни.Вставить(КлючСтруктуры, КоличествоРабочихДней);

//А вот этот код рабочий. Функция формат перобразует число в строку без пробелов.
ВыходныеДни.Вставить("Год" + Формат(ГодВычисления, "ЧГ=0"), КоличествоРабочихДней);

КонецЦикла;

// Демонстрация работы со структурой

Сообщить(ВыходныеДни.Год2026);

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

______________________________________________________

Будущее и настоящее Ai

Нейросеть — это не просто модный тренд, а по-настоящему мощный инструмент в арсенале программиста, настоящий «умный помощник». Это как получить в команду стажёра, который никогда не спит, обладает энциклопедическими знаниями и способен генерировать идеи за секунды.

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

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

И вот тут возникает самый интригующий вопрос: в какой мере изменится сама суть работы программиста?

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

Фокус сместится с написания кода на:

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

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

А ты что думаешь по данному вопросу?