Здравствуйте всем! Я начинающий 1Сник, потихоньку ковыряю задачник по программированию, и вот встрял намертво. Не могу найти ошибку уже часов 6... Прошу помощи от опытного коллеги.
Задача.
Создайте многомерный массив с двумя измерениями: первое измерение будет содержать 12 массивов, соответствующих двенадцати месяцам года, и каждый массив будет содержать все дни данного месяца. Выведите элементы массива в окно сообщений.
Моё решение.
&НаКлиенте
Процедура КНОПКА(Команда)
МассивЯнварь=Новый Массив; ПервоеЯнваря=НачалоГода(ТекущаяДата());
МассивФевраль=Новый Массив; ПервоеФевраля=ДобавитьМесяц(ПервоеЯнваря,1);
МассивМарт=Новый Массив; ПервоеМарта=ДобавитьМесяц(ПервоеЯнваря,2);
МассивАпрель=Новый Массив; ПервоеАпреля=ДобавитьМесяц(ПервоеЯнваря,3);
МассивМай=Новый Массив; ПервоеМая=ДобавитьМесяц(ПервоеЯнваря,4);
МассивИюнь=Новый Массив; ПервоеИюня=ДобавитьМесяц(ПервоеЯнваря,5);
МассивИюль=Новый Массив; ПервоеИюля=ДобавитьМесяц(ПервоеЯнваря,6);
МассивАвгуст=Новый Массив; ПервоеАвгуста=ДобавитьМесяц(ПервоеЯнваря,7);
МассивСентябрь=Новый Массив; ПервоеСентября=ДобавитьМесяц(ПервоеЯнваря,8);
МассивОктябрь=Новый Массив; ПервоеОктября=ДобавитьМесяц(ПервоеЯнваря,9);
МассивНоябрь=Новый Массив; ПервоеНоября=ДобавитьМесяц(ПервоеЯнваря,10);
МассивДекабрь=Новый Массив; ПервоеДекабря=ДобавитьМесяц(ПервоеЯнваря,11);
ДеньЯнваря=ПервоеЯнваря;
Пока ДеньЯнваря<=КонецМесяца(ДеньЯнваря) Цикл
МассивЯнварь.Добавить(ДеньЯнваря);
ДеньЯнваря=ДеньЯнваря+86400;
КонецЦикла;
ДеньФевраля=ПервоеФевраля;
Пока ДеньФевраля<=КонецМесяца(ДеньФевраля) Цикл
МассивФевраль.Добавить(ДеньФевраля);
ДеньФевраля=ДеньФевраля+86400;
КонецЦикла;
ДеньМарта=ПервоеМарта;
Пока ДеньМарта<=КонецМесяца(ДеньМарта) Цикл
МассивМарт.Добавить(ДеньМарта);
ДеньМарта=ДеньМарта+86400;
КонецЦикла;
ДеньАпреля=ПервоеАпреля;
Пока ДеньАпреля<=КонецМесяца(ДеньАпреля) Цикл
МассивАпрель.Добавить(ДеньАпреля);
ДеньАпреля=ДеньАпреля+86400;
КонецЦикла;
ДеньМая=ПервоеМая;
Пока ДеньМая<=КонецМесяца(ДеньМая) Цикл
МассивМай.Добавить(ДеньМая);
ДеньМая=ДеньМая+86400;
КонецЦикла;
ДеньИюнь=ПервоеИюня;
Пока ДеньИюнь<=КонецМесяца(ДеньИюнь) Цикл
МассивИюнь.Добавить(ДеньИюнь);
ДеньИюнь=ДеньИюнь+86400;
КонецЦикла;
ДеньИюль=ПервоеИюля;
Пока ДеньИюль<=КонецМесяца(ДеньИюль) Цикл
МассивИюль.Добавить(ДеньИюль);
ДеньИюль=ДеньИюль+86400;
КонецЦикла;
ДеньАвгуст=ПервоеАвгуста;
Пока ДеньАвгуст<=КонецМесяца(ДеньАвгуст) Цикл
МассивАвгуст.Добавить(ДеньАвгуст);
ДеньАвгуст=ДеньАвгуст+86400;
КонецЦикла;
ДеньСентябрь=ПервоеСентября;
Пока ДеньСентябрь<=КонецМесяца(ДеньСентябрь) Цикл
МассивСентябрь.Добавить(ДеньСентябрь);
ДеньСентябрь=ДеньСентябрь+86400;
КонецЦикла;
ДеньОктября=ПервоеОктября;
Пока ДеньОктября<=КонецМесяца(ДеньОктября) Цикл
МассивОктябрь.Добавить(ДеньОктября);
ДеньОктября=ДеньОктября+86400;
КонецЦикла;
ДеньНоября=ПервоеНоября;
Пока ДеньНоября<=КонецМесяца(ДеньНоября) Цикл
МассивНоябрь.Добавить(ДеньНоября);
ДеньНоября=ДеньНоября+86400;
КонецЦикла;
ДеньДекабрь=ПервоеДекабря;
Пока ДеньДекабрь<=КонецМесяца(ДеньДекабрь) Цикл
МассивДекабрь.Добавить(ДеньДекабрь);
ДеньДекабрь=ДеньДекабрь+86400;
КонецЦикла;
ГлавныйМассив=Новый Массив(12);
ГлавныйМассив.Добавить(МассивЯнварь);
ГлавныйМассив.Добавить(МассивФевраль);
ГлавныйМассив.Добавить(МассивМарт);
ГлавныйМассив.Добавить(МассивАпрель);
ГлавныйМассив.Добавить(МассивМай);
ГлавныйМассив.Добавить(МассивИюнь);
ГлавныйМассив.Добавить(МассивИюль);
ГлавныйМассив.Добавить(МассивАвгуст);
ГлавныйМассив.Добавить(МассивСентябрь);
ГлавныйМассив.Добавить(МассивОктябрь);
ГлавныйМассив.Добавить(МассивНоябрь);
ГлавныйМассив.Добавить(МассивДекабрь);
Для Каждого Месяц ИЗ ГлавныйМассив Цикл
Для Каждого День ИЗ Месяц Цикл
Сообщить(День);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Показать
Синтаксических ошибок в коде нет. ChatGPT - тоже говорит ошибок нет, и код должен сработать как задумано. Но после нажатия КНОПКИ программа начинает что-то бесконечно обрабатывать и на этом всё...
Спасибо! Получилось. Оставлю тут решение на всякий случай.
&НаКлиенте
Процедура КНОПКА(Команда)
МассивЯнварь=Новый Массив; ПервоеЯнваря=НачалоГода(ТекущаяДата());
МассивФевраль=Новый Массив; ПервоеФевраля=ДобавитьМесяц(ПервоеЯнваря,1);
МассивМарт=Новый Массив; ПервоеМарта=ДобавитьМесяц(ПервоеЯнваря,2);
МассивАпрель=Новый Массив; ПервоеАпреля=ДобавитьМесяц(ПервоеЯнваря,3);
МассивМай=Новый Массив; ПервоеМая=ДобавитьМесяц(ПервоеЯнваря,4);
МассивИюнь=Новый Массив; ПервоеИюня=ДобавитьМесяц(ПервоеЯнваря,5);
МассивИюль=Новый Массив; ПервоеИюля=ДобавитьМесяц(ПервоеЯнваря,6);
МассивАвгуст=Новый Массив; ПервоеАвгуста=ДобавитьМесяц(ПервоеЯнваря,7);
МассивСентябрь=Новый Массив; ПервоеСентября=ДобавитьМесяц(ПервоеЯнваря,8);
МассивОктябрь=Новый Массив; ПервоеОктября=ДобавитьМесяц(ПервоеЯнваря,9);
МассивНоябрь=Новый Массив; ПервоеНоября=ДобавитьМесяц(ПервоеЯнваря,10);
МассивДекабрь=Новый Массив; ПервоеДекабря=ДобавитьМесяц(ПервоеЯнваря,11);
ДеньЯнваря=ПервоеЯнваря;
КонецЯнваря=КонецМесяца(ДеньЯнваря);
Пока ДеньЯнваря<=КонецЯнваря Цикл
МассивЯнварь.Добавить(ДеньЯнваря);
ДеньЯнваря=ДеньЯнваря+86400;
КонецЦикла;
ДеньФевраля=ПервоеФевраля;
КонецФевраля=КонецМесяца(ДеньФевраля);
Пока ДеньФевраля<=КонецФевраля Цикл
МассивФевраль.Добавить(ДеньФевраля);
ДеньФевраля=ДеньФевраля+86400;
КонецЦикла;
ДеньМарта=ПервоеМарта;
КонецМарта=КонецМесяца(ДеньМарта);
Пока ДеньМарта<=КонецМарта Цикл
МассивМарт.Добавить(ДеньМарта);
ДеньМарта=ДеньМарта+86400;
КонецЦикла;
ДеньАпреля=ПервоеАпреля;
КонецАпреля=КонецМесяца(ДеньАпреля);
Пока ДеньАпреля<=КонецАпреля Цикл
МассивАпрель.Добавить(ДеньАпреля);
ДеньАпреля=ДеньАпреля+86400;
КонецЦикла;
ДеньМая=ПервоеМая;
КонецМая=КонецМесяца(ДеньМая);
Пока ДеньМая<=КонецМая Цикл
МассивМай.Добавить(ДеньМая);
ДеньМая=ДеньМая+86400;
КонецЦикла;
ДеньИюнь=ПервоеИюня;
КонецИюня=КонецМесяца(ДеньИюнь);
Пока ДеньИюнь<=КонецИюня Цикл
МассивИюнь.Добавить(ДеньИюнь);
ДеньИюнь=ДеньИюнь+86400;
КонецЦикла;
ДеньИюль=ПервоеИюля;
КонецИюля=КонецМесяца(ДеньИюль);
Пока ДеньИюль<=КонецИюля Цикл
МассивИюль.Добавить(ДеньИюль);
ДеньИюль=ДеньИюль+86400;
КонецЦикла;
ДеньАвгуст=ПервоеАвгуста;
КонецАвгуста=КонецМесяца(ДеньАвгуст);
Пока ДеньАвгуст<=КонецАвгуста Цикл
МассивАвгуст.Добавить(ДеньАвгуст);
ДеньАвгуст=ДеньАвгуст+86400;
КонецЦикла;
ДеньСентябрь=ПервоеСентября;
КонецСентября=КонецМесяца(ДеньСентябрь);
Пока ДеньСентябрь<=КонецСентября Цикл
МассивСентябрь.Добавить(ДеньСентябрь);
ДеньСентябрь=ДеньСентябрь+86400;
КонецЦикла;
ДеньОктября=ПервоеОктября;
КонецОктября=КонецМесяца(ДеньОктября);
Пока ДеньОктября<=КонецОктября Цикл
МассивОктябрь.Добавить(ДеньОктября);
ДеньОктября=ДеньОктября+86400;
КонецЦикла;
ДеньНоября=ПервоеНоября;
КонецНоября=КонецМесяца(ДеньНоября);
Пока ДеньНоября<=КонецНоября Цикл
МассивНоябрь.Добавить(ДеньНоября);
ДеньНоября=ДеньНоября+86400;
КонецЦикла;
ДеньДекабрь=ПервоеДекабря;
КонецДекабря=КонецМесяца(ДеньДекабрь);
Пока ДеньДекабрь<=КонецДекабря Цикл
МассивДекабрь.Добавить(ДеньДекабрь);
ДеньДекабрь=ДеньДекабрь+86400;
КонецЦикла;
ГлавныйМассив=Новый Массив;
ГлавныйМассив.Добавить(МассивЯнварь);
ГлавныйМассив.Добавить(МассивФевраль);
ГлавныйМассив.Добавить(МассивМарт);
ГлавныйМассив.Добавить(МассивАпрель);
ГлавныйМассив.Добавить(МассивМай);
ГлавныйМассив.Добавить(МассивИюнь);
ГлавныйМассив.Добавить(МассивИюль);
ГлавныйМассив.Добавить(МассивАвгуст);
ГлавныйМассив.Добавить(МассивСентябрь);
ГлавныйМассив.Добавить(МассивОктябрь);
ГлавныйМассив.Добавить(МассивНоябрь);
ГлавныйМассив.Добавить(МассивДекабрь);
Для Каждого Месяц ИЗ ГлавныйМассив Цикл
Для Каждого День ИЗ Месяц Цикл
Сообщить(День);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Подумай, как у тебя будет выходить программа из месячного цикла. Никак. Просто представь в уме исполнение этого цикла в последний день месяца. Распиши значение каждой переменной на каждой последующей строчке исполнения.
У тебя 12 бесконечных циклов. До остальных 11-и просто исполнение не доходит, ага.
Подсказка. КакаяТоДата всегда будет <= КонецМесяца(КакаяТоДата). Потому что это одна и та же дата. И у неё есть собственный конец месяца.
(4) В том числе именно поэтому он никогда не станет программистом. Он умеет проверять только синтаксис и соответствие шаблонам. Внутреннюю логику значений переменных (или других сущностей с данными) или методическую составляющую бизнес-задачи он никогда не поймёт.
Пусть лучше многопалых людей рисует, это у него хорошо получается.
(5) А нет
user
Пока ДеньЯнваря <= КонецМесяца(ДеньЯнваря) Цикл
МассивЯнварь.Добавить(ДеньЯнваря);
ДеньЯнваря = ДеньЯнваря + 86400;
КонецЦикла;
дает бесконечный цикл в чем причина думай по шагам
assistant
Причина возникновения бесконечного цикла заключается в том, что условие цикла всегда остаётся истинным из-за динамического изменения значения функции `КонецМесяца(ДеньЯнваря)` при каждом увеличении `ДеньЯнваря`. Давайте рассмотрим пошагово, почему это происходит:
1. **Инициализация:**
- Предположим, что переменная `ДеньЯнваря` инициализирована датой 1 января определённого года (например, `ДеньЯнваря = '01.01.2023'`).
- Функция `КонецМесяца(ДеньЯнваря)` возвращает последний день месяца для даты `ДеньЯнваря`. Изначально это будет 31 января 2023 года.
2. **Первый проход цикла:**
- Условие `ДеньЯнваря <= КонецМесяца(ДеньЯнваря)` проверяется и является истинным.
- `ДеньЯнваря` добавляется в `МассивЯнварь`.
- К `ДеньЯнваря` прибавляется 86400 секунд (одни сутки), и он становится равным 2 января 2023 года.
3. **Последующие проходы цикла:**
- На каждом шаге `ДеньЯнваря` увеличивается на один день.
- Условие цикла проверяется заново, **но функция `КонецМесяца(ДеньЯнваря)` вычисляется каждый раз для обновлённой даты `ДеньЯнваря`**.
- Когда `ДеньЯнваря` достигает 31 января 2023 года, всё еще выполняется условие цикла.
4. **Переход на следующий месяц:**
- После прибавления 86400 секунд к 31 января, `ДеньЯнваря` становится 1 февраля 2023 года.
- Теперь функция `КонецМесяца(ДеньЯнваря)` возвращает уже **последний день февраля** — 28 февраля 2023 года.
- Условие `1 февраля 2023 <= 28 февраля 2023` всё ещё истинно, и цикл продолжается.
5. **Бесконечное продолжение цикла:**
- По мере увеличения `ДеньЯнваря`, функция `КонецМесяца(ДеньЯнваря)` продолжает возвращать конец текущего месяца для нового значения `ДеньЯнваря`.
- Таким образом, условие цикла всегда остаётся истинным, поскольку `ДеньЯнваря` никогда не превышает `КонецМесяца(ДеньЯнваря)` для своего текущего месяца.
- Цикл становится бесконечным, проходя через все последующие месяцы и годы.
**Решение проблемы:**
Чтобы избежать бесконечного цикла, необходимо фиксировать значение конца месяца перед началом цикла, чтобы оно не менялось на каждом шаге. Это можно сделать следующим образом:
```1C
КонецЯнваря = КонецМесяца(ДеньЯнваря); // Вычисляем конец месяца один раз перед циклом
Пока ДеньЯнваря <= КонецЯнваря Цикл
МассивЯнварь.Добавить(ДеньЯнваря);
ДеньЯнваря = ДеньЯнваря + 86400; // Переходим к следующему дню
КонецЦикла;
```
**Объяснение исправления:**
- Фиксируя значение `КонецЯнваря` перед циклом, мы гарантируем, что условие цикла проверяется относительно статичной даты — конца января.
- Когда `ДеньЯнваря` становится больше `КонецЯнваря`, условие цикла становится ложным, и цикл завершается.
- Это позволяет корректно перебрать все даты января без перехода на следующий месяц и избежать бесконечного цикла.
**Вывод:**
Бесконечный цикл возник из-за того, что функция `КонецМесяца(ДеньЯнваря)` динамически изменяла своё значение при каждом увеличении `ДеньЯнваря`, и условие цикла всегда оставалось истинным. Чтобы исправить это, необходимо вычислить конец месяца один раз перед началом цикла и использовать это фиксированное значение в условии цикла.
(8) Ты понял кому ответил? Это тролль. А тролли - это такие же перелопатчики текста как и Chat GPT. На вопрос-то они ответят, но им еще и потроллить надо. Поэтому им этот Chat GPT - как серпом по яйцам. Как они будут троллить, если любой дурак может загрузить в промт книгу Радченко, Chat GPT ее прочитает, ответит на вопросы, и троллить не станет? А никак.
1) Человек находит ошибку в коде. Самостоятельно. Видит что это бесконечный цикл.
2) Человек задает вопрос нейросети, начиная с того, что это бесконечный цикл. Просит объяснений.
3) Нейросеть показывает ему на примере.
4) Человек восторгается нейросетью, наглухо забывая про пункт 1.
(14) Не придирайтесь. Я увидел, что 4o тупит. Попробовал задавать наводящие вопросы. Тупит. Сменил модель. Получил нормальный результат. Выложил фрагмент своих изысканий.
А так-то у автора подход изначально был неправильный. Надо было взять флагманскую модель и попросить написать код. Тогда бы он сразу получил нормально работающий код
(26) Надеюсь, вы не пытаетесь с ним общаться? Это пипец, какой тролль. 61%
Писать ему, конечно, можно, но не для того чтобы с ним подискутировать. Скорее, чтобы читатели форума прочитали. Если надо будет доказать что черное это белое, он и с этим справится.
Не придирайтесь. Я увидел, что 4o тупит. Попробовал задавать наводящие вопросы. Тупит. Сменил модель. Получил нормальный результат.
Вот это как раз именно то, что делает программист, когда "работает" с помощью нейросети. Фокус внимания резко сдвигается - вместо размышлений над проектом и алгоритмом приходится контролировать и уговоривать нейросеть.
В итоге получается полуграмотный джун, на которого возложили обязанности тимлида - утирать сопельки команде. Результат предсказуем. Впрочем, у многих это вызывает восхищение.
(28) Вы, видимо, не поняли Я увидел, что 4о тупит. И был очень удивлен. Потому что, обычно ИИ на такой шняге не тупит. Стал разбираться и понял, что это было исключение, а не правило
А как ты это увидел? Сначала решил задачу сам, и сравнил с ответом нейросети? А что делать тому, кто не умеет в "решил сам" и "увидел тупняк"? Тупо доверять?
(34) Нашел я сайт trychatgpt. Задал вопрос: где у тебя промт? Чат говорит: Извините, но я не могу поделиться своим внутренним промптом или кодом. То есть, он есть, но где-то там внутри этого сайта? Интересно, что в нем написано?
(36) Мне вот интересно - какой все-таки смысл несет инструкция "думай по шагам"? То есть, ИИ может думать не "по шагам", и по мысли вопрошающего - это заведомо приведет к неправильному результату? Наверное, именно поэтому мы бережно направим сеточку в сторону правильного ответа. Который сами мы уже знаем, конечно (а иначе как бы мы смогли управлять сеточкой?)
На языке поклонников нейросетей это означает "объясни свою цепочку рассуждений детально, по шагам, для нас тупых". Без подобной просьбы они сами зачастую ничего из ответа понять не могут - с русским языком у них тяжело.
(38) Аааа... Это так задается структура возвращаемого ответа.
Кароч, скоро будет новая профессия - так заранее запрограммировать структуру ответа, чтобы нейросеть смогла дать именно такой структурированный ответ на заранее правильно запрограммированный (структурированный) вопрос.
Ну я про что и говорю. Вдобавок к дейли, митингам, спринтам, ретроспективам и прочей отчетности по затраченному времени в разрезах характеристик проблем, разработчику приходится теперь и нейросеть направлять на путь истинный.
Зато очень красиво выглядит и на конференции рассказать можно!
Ну я про что и говорю. Вдобавок к дейли, митингам, спринтам, ретроспективам и прочей отчетности по затраченному времени в разрезах характеристик проблем, разработчику приходится теперь и нейросеть направлять на путь истинный.
(37) Правильный вопрос. Флагманские модели сейчас все "думают по шагам". Для них такая присказка не нужна. Для моделей предыдущего поколения (но ими сейчас вовсю пользуются через всякие сайты-телеграмы) такая добавка имеет смысл. Она заставляет модель строить цепочку рассуждений и зачастую улучшает результат.
Изначально я задавал вопрос без нее. Потом пытался с ее помощью выйти на правильный результат. Потом просто забыл убрать.
Спасибо! Получилось. Оставлю тут решение на всякий случай.
&НаКлиенте
Процедура КНОПКА(Команда)
МассивЯнварь=Новый Массив; ПервоеЯнваря=НачалоГода(ТекущаяДата());
МассивФевраль=Новый Массив; ПервоеФевраля=ДобавитьМесяц(ПервоеЯнваря,1);
МассивМарт=Новый Массив; ПервоеМарта=ДобавитьМесяц(ПервоеЯнваря,2);
МассивАпрель=Новый Массив; ПервоеАпреля=ДобавитьМесяц(ПервоеЯнваря,3);
МассивМай=Новый Массив; ПервоеМая=ДобавитьМесяц(ПервоеЯнваря,4);
МассивИюнь=Новый Массив; ПервоеИюня=ДобавитьМесяц(ПервоеЯнваря,5);
МассивИюль=Новый Массив; ПервоеИюля=ДобавитьМесяц(ПервоеЯнваря,6);
МассивАвгуст=Новый Массив; ПервоеАвгуста=ДобавитьМесяц(ПервоеЯнваря,7);
МассивСентябрь=Новый Массив; ПервоеСентября=ДобавитьМесяц(ПервоеЯнваря,8);
МассивОктябрь=Новый Массив; ПервоеОктября=ДобавитьМесяц(ПервоеЯнваря,9);
МассивНоябрь=Новый Массив; ПервоеНоября=ДобавитьМесяц(ПервоеЯнваря,10);
МассивДекабрь=Новый Массив; ПервоеДекабря=ДобавитьМесяц(ПервоеЯнваря,11);
ДеньЯнваря=ПервоеЯнваря;
КонецЯнваря=КонецМесяца(ДеньЯнваря);
Пока ДеньЯнваря<=КонецЯнваря Цикл
МассивЯнварь.Добавить(ДеньЯнваря);
ДеньЯнваря=ДеньЯнваря+86400;
КонецЦикла;
ДеньФевраля=ПервоеФевраля;
КонецФевраля=КонецМесяца(ДеньФевраля);
Пока ДеньФевраля<=КонецФевраля Цикл
МассивФевраль.Добавить(ДеньФевраля);
ДеньФевраля=ДеньФевраля+86400;
КонецЦикла;
ДеньМарта=ПервоеМарта;
КонецМарта=КонецМесяца(ДеньМарта);
Пока ДеньМарта<=КонецМарта Цикл
МассивМарт.Добавить(ДеньМарта);
ДеньМарта=ДеньМарта+86400;
КонецЦикла;
ДеньАпреля=ПервоеАпреля;
КонецАпреля=КонецМесяца(ДеньАпреля);
Пока ДеньАпреля<=КонецАпреля Цикл
МассивАпрель.Добавить(ДеньАпреля);
ДеньАпреля=ДеньАпреля+86400;
КонецЦикла;
ДеньМая=ПервоеМая;
КонецМая=КонецМесяца(ДеньМая);
Пока ДеньМая<=КонецМая Цикл
МассивМай.Добавить(ДеньМая);
ДеньМая=ДеньМая+86400;
КонецЦикла;
ДеньИюнь=ПервоеИюня;
КонецИюня=КонецМесяца(ДеньИюнь);
Пока ДеньИюнь<=КонецИюня Цикл
МассивИюнь.Добавить(ДеньИюнь);
ДеньИюнь=ДеньИюнь+86400;
КонецЦикла;
ДеньИюль=ПервоеИюля;
КонецИюля=КонецМесяца(ДеньИюль);
Пока ДеньИюль<=КонецИюля Цикл
МассивИюль.Добавить(ДеньИюль);
ДеньИюль=ДеньИюль+86400;
КонецЦикла;
ДеньАвгуст=ПервоеАвгуста;
КонецАвгуста=КонецМесяца(ДеньАвгуст);
Пока ДеньАвгуст<=КонецАвгуста Цикл
МассивАвгуст.Добавить(ДеньАвгуст);
ДеньАвгуст=ДеньАвгуст+86400;
КонецЦикла;
ДеньСентябрь=ПервоеСентября;
КонецСентября=КонецМесяца(ДеньСентябрь);
Пока ДеньСентябрь<=КонецСентября Цикл
МассивСентябрь.Добавить(ДеньСентябрь);
ДеньСентябрь=ДеньСентябрь+86400;
КонецЦикла;
ДеньОктября=ПервоеОктября;
КонецОктября=КонецМесяца(ДеньОктября);
Пока ДеньОктября<=КонецОктября Цикл
МассивОктябрь.Добавить(ДеньОктября);
ДеньОктября=ДеньОктября+86400;
КонецЦикла;
ДеньНоября=ПервоеНоября;
КонецНоября=КонецМесяца(ДеньНоября);
Пока ДеньНоября<=КонецНоября Цикл
МассивНоябрь.Добавить(ДеньНоября);
ДеньНоября=ДеньНоября+86400;
КонецЦикла;
ДеньДекабрь=ПервоеДекабря;
КонецДекабря=КонецМесяца(ДеньДекабрь);
Пока ДеньДекабрь<=КонецДекабря Цикл
МассивДекабрь.Добавить(ДеньДекабрь);
ДеньДекабрь=ДеньДекабрь+86400;
КонецЦикла;
ГлавныйМассив=Новый Массив;
ГлавныйМассив.Добавить(МассивЯнварь);
ГлавныйМассив.Добавить(МассивФевраль);
ГлавныйМассив.Добавить(МассивМарт);
ГлавныйМассив.Добавить(МассивАпрель);
ГлавныйМассив.Добавить(МассивМай);
ГлавныйМассив.Добавить(МассивИюнь);
ГлавныйМассив.Добавить(МассивИюль);
ГлавныйМассив.Добавить(МассивАвгуст);
ГлавныйМассив.Добавить(МассивСентябрь);
ГлавныйМассив.Добавить(МассивОктябрь);
ГлавныйМассив.Добавить(МассивНоябрь);
ГлавныйМассив.Добавить(МассивДекабрь);
Для Каждого Месяц ИЗ ГлавныйМассив Цикл
Для Каждого День ИЗ Месяц Цикл
Сообщить(День);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
(10) Не слушай всяких чатов и их адептов.
У тебя уже есть четкие переменные с датами, не надо плодить новых переменных. Вполне можно обойтись КонецМесяца (ПервояЯнваря).
Да и вообще:
НомерГода = Год(ТекущаяДата());
МассивМесяцев = Новый Массив;
Для НомерМесяца = 1 По 12 Цикл
МассивДней = Новый Массив;
ПоследнийДеньМесяца = День(КонецМесяца(Дата(НомерГода, НомерМесяца, 1)));
Для НомерДня = 1 По ПоследнийДеньМесяца Цикл
МассивДней.Добавить(Дата(НомерГода, НомерМесяца, НомерДня));
КонецЦикла;
МассивМесяцев.Добавить(МассивДней);
КонецЦикла;
// Ну и дальше, как у тебя
Показать
Ни один чат так не сделает. Он не умеет в абстракции.
(16) Да это ж элементарщина (для человека) - два вложенных цикла. Первый итератор - фиксированный (1-12), а параметры итератора второго цикла определяются на основании итератора первого цикла.
Всё волшебство в принципе заключается в использовании функции Дата().
(13) Вы ошибаетесь. o1 от OpenAI именно так и сделает. Прям на 1С. И я подозреваю, что и другие флагманские модели от Google, Anthropic, китайцев сделают. Лень проверять
Для Сч = 1 По 28 Цикл
ДниМесяца28.Добавить(Сч);
КонецЦикла
НомерГода = Год(ТекущаяДата());
МассивМесяцев = Новый Массив;
Для НомерМесяца = 1 По 12 Цикл
МассивДней = ДниМесяца28.ВыгрузитьЗначения();
ПоследнийДеньМесяца = День(КонецМесяца(Дата(НомерГода, НомерМесяца, 1)));
Для НомерДня = 29 По ПоследнийДеньМесяца Цикл
МассивДней.Добавить(Дата(НомерГода, НомерМесяца, НомерДня));
КонецЦикла;
МассивМесяцев.Добавить(МассивДней);
КонецЦикла;
(59) https://t.me/seeallochnaya Вот тут чел неплохо пишет. Мне лично нравится
Да, актуальные модели от OpenAI уже хорошо пишут код на 1С. А их дорогущая o1 так вообще отлично. Например код из поста (13) она написала точно такой же и без ошибок. Запускай и будет работать.
Я некоторое время назад думал, что 1С обречена быть на обочине всего этого процесса. Тогда еще объявлялось, что русскоязычные тексты составляют менее 1% в обучающих данных.
Но, видимо, недооценил значение фактора дефицита обучающих данных. С тех пор в обучающие данные "засосали" все, что можно было (и нельзя). И русскоязычное вообще и по 1С тоже
Кстати, если кому интересно. Легкая модель 4o-mini тоже справляется с этой задачей. Так же, как и 4-turbo (предшественник 4o). В общем, что-то недоперемудрили конкретно с моделью 4o.
Мораль, ИИ надо пользоваться с умом
(9) Я с 3,5-turbo пытаюсь работать. Иногда прям помогает. Можно несколькими сообщениями загнать в него здоровенный код и спросить - Проанализируй код, который я тебе оправил в последних семи (допустим) сообщениях и распиши что он делает. И он неплохо так объясняет процедуру за процедурой. Мне помогает.
(50)
За 1М токенов
Ввод от 7.5 до 15 центов (от 7.45 до 14.91 руб. по текущему курсу, от и до, потому что у них там кеширование, которое работает в автоматическом режиме)
Вывод 60 центов (59.63 руб.)