Многомерный массив. Решение задачи.

1. I_am_Alpharius 08.12.24 10:50 Сейчас в теме
Здравствуйте всем! Я начинающий 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 - тоже говорит ошибок нет, и код должен сработать как задумано. Но после нажатия КНОПКИ программа начинает что-то бесконечно обрабатывать и на этом всё...
По теме из базы знаний
Найденные решения
10. I_am_Alpharius 08.12.24 12:00 Сейчас в теме
(2)
(3)

Спасибо! Получилось. Оставлю тут решение на всякий случай.

&НаКлиенте
Процедура КНОПКА(Команда)
	
МассивЯнварь=Новый Массив;    ПервоеЯнваря=НачалоГода(ТекущаяДата());
МассивФевраль=Новый Массив;   ПервоеФевраля=ДобавитьМесяц(ПервоеЯнваря,1);
МассивМарт=Новый Массив;      ПервоеМарта=ДобавитьМесяц(ПервоеЯнваря,2);
МассивАпрель=Новый Массив;    ПервоеАпреля=ДобавитьМесяц(ПервоеЯнваря,3);
МассивМай=Новый Массив;       ПервоеМая=ДобавитьМесяц(ПервоеЯнваря,4);
МассивИюнь=Новый Массив;      ПервоеИюня=ДобавитьМесяц(ПервоеЯнваря,5);
МассивИюль=Новый Массив;      ПервоеИюля=ДобавитьМесяц(ПервоеЯнваря,6);
МассивАвгуст=Новый Массив;    ПервоеАвгуста=ДобавитьМесяц(ПервоеЯнваря,7);
МассивСентябрь=Новый Массив;  ПервоеСентября=ДобавитьМесяц(ПервоеЯнваря,8);
МассивОктябрь=Новый Массив;   ПервоеОктября=ДобавитьМесяц(ПервоеЯнваря,9);
МассивНоябрь=Новый Массив;    ПервоеНоября=ДобавитьМесяц(ПервоеЯнваря,10);
МассивДекабрь=Новый Массив;   ПервоеДекабря=ДобавитьМесяц(ПервоеЯнваря,11);




ДеньЯнваря=ПервоеЯнваря;
КонецЯнваря=КонецМесяца(ДеньЯнваря);
Пока ДеньЯнваря<=КонецЯнваря Цикл
	 МассивЯнварь.Добавить(ДеньЯнваря);
	 ДеньЯнваря=ДеньЯнваря+86400;
КонецЦикла;

ДеньФевраля=ПервоеФевраля;
КонецФевраля=КонецМесяца(ДеньФевраля);
Пока ДеньФевраля<=КонецФевраля Цикл
	 МассивФевраль.Добавить(ДеньФевраля);
	 ДеньФевраля=ДеньФевраля+86400;
КонецЦикла;
 
ДеньМарта=ПервоеМарта;
КонецМарта=КонецМесяца(ДеньМарта);
Пока ДеньМарта<=КонецМарта Цикл
	 МассивМарт.Добавить(ДеньМарта);
	 ДеньМарта=ДеньМарта+86400;
КонецЦикла;
 
ДеньАпреля=ПервоеАпреля;
КонецАпреля=КонецМесяца(ДеньАпреля);
Пока ДеньАпреля<=КонецАпреля Цикл
	 МассивАпрель.Добавить(ДеньАпреля);
	 ДеньАпреля=ДеньАпреля+86400;
КонецЦикла;
 
ДеньМая=ПервоеМая;
КонецМая=КонецМесяца(ДеньМая);
Пока ДеньМая<=КонецМая Цикл
	 МассивМай.Добавить(ДеньМая);
	 ДеньМая=ДеньМая+86400;
КонецЦикла;
 
ДеньИюнь=ПервоеИюня;
КонецИюня=КонецМесяца(ДеньИюнь);
Пока ДеньИюнь<=КонецИюня Цикл
	 МассивИюнь.Добавить(ДеньИюнь);
	 ДеньИюнь=ДеньИюнь+86400;
КонецЦикла;
 
ДеньИюль=ПервоеИюля;
КонецИюля=КонецМесяца(ДеньИюль);
Пока ДеньИюль<=КонецИюля Цикл
	 МассивИюль.Добавить(ДеньИюль);
	 ДеньИюль=ДеньИюль+86400;
КонецЦикла;
 
ДеньАвгуст=ПервоеАвгуста;
КонецАвгуста=КонецМесяца(ДеньАвгуст);
Пока ДеньАвгуст<=КонецАвгуста Цикл
	 МассивАвгуст.Добавить(ДеньАвгуст);
	 ДеньАвгуст=ДеньАвгуст+86400;
КонецЦикла;
 
ДеньСентябрь=ПервоеСентября;
КонецСентября=КонецМесяца(ДеньСентябрь);
Пока ДеньСентябрь<=КонецСентября Цикл
	 МассивСентябрь.Добавить(ДеньСентябрь);
	 ДеньСентябрь=ДеньСентябрь+86400;
КонецЦикла;
 
ДеньОктября=ПервоеОктября;
КонецОктября=КонецМесяца(ДеньОктября);
Пока ДеньОктября<=КонецОктября Цикл
	 МассивОктябрь.Добавить(ДеньОктября);
	 ДеньОктября=ДеньОктября+86400;
КонецЦикла;
 
ДеньНоября=ПервоеНоября;
КонецНоября=КонецМесяца(ДеньНоября);
Пока ДеньНоября<=КонецНоября Цикл
	 МассивНоябрь.Добавить(ДеньНоября);
	 ДеньНоября=ДеньНоября+86400;
КонецЦикла;
 
ДеньДекабрь=ПервоеДекабря;
КонецДекабря=КонецМесяца(ДеньДекабрь);
Пока ДеньДекабрь<=КонецДекабря Цикл
	 МассивДекабрь.Добавить(ДеньДекабрь);
	 ДеньДекабрь=ДеньДекабрь+86400;
КонецЦикла;
 
ГлавныйМассив=Новый Массив;

ГлавныйМассив.Добавить(МассивЯнварь);
ГлавныйМассив.Добавить(МассивФевраль);
ГлавныйМассив.Добавить(МассивМарт);
ГлавныйМассив.Добавить(МассивАпрель);
ГлавныйМассив.Добавить(МассивМай);
ГлавныйМассив.Добавить(МассивИюнь);
ГлавныйМассив.Добавить(МассивИюль);
ГлавныйМассив.Добавить(МассивАвгуст);
ГлавныйМассив.Добавить(МассивСентябрь);
ГлавныйМассив.Добавить(МассивОктябрь);
ГлавныйМассив.Добавить(МассивНоябрь);
ГлавныйМассив.Добавить(МассивДекабрь);

Для Каждого Месяц ИЗ ГлавныйМассив Цикл
    Для Каждого День ИЗ Месяц Цикл 
          Сообщить(День); 
    КонецЦикла; 
КонецЦикла; 

КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2116971 08.12.24 10:57 Сейчас в теме
(1)
ChatGPT - тоже говорит ошибок нет
Почаще спрашивай...

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

У тебя 12 бесконечных циклов. До остальных 11-и просто исполнение не доходит, ага.

Подсказка. КакаяТоДата всегда будет <= КонецМесяца(КакаяТоДата). Потому что это одна и та же дата. И у неё есть собственный конец месяца.
I_am_Alpharius; user1863362; +2 Ответить
4. mkalimulin 1251 08.12.24 11:10 Сейчас в теме
5. user2116971 08.12.24 11:16 Сейчас в теме
(4) В том числе именно поэтому он никогда не станет программистом. Он умеет проверять только синтаксис и соответствие шаблонам. Внутреннюю логику значений переменных (или других сущностей с данными) или методическую составляющую бизнес-задачи он никогда не поймёт.
Пусть лучше многопалых людей рисует, это у него хорошо получается.
6. mkalimulin 1251 08.12.24 11:18 Сейчас в теме
(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; // Переходим к следующему дню

КонецЦикла;

```



**Объяснение исправления:**



- Фиксируя значение `КонецЯнваря` перед циклом, мы гарантируем, что условие цикла проверяется относительно статичной даты — конца января.

- Когда `ДеньЯнваря` становится больше `КонецЯнваря`, условие цикла становится ложным, и цикл завершается.

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



**Вывод:**



Бесконечный цикл возник из-за того, что функция `КонецМесяца(ДеньЯнваря)` динамически изменяла своё значение при каждом увеличении `ДеньЯнваря`, и условие цикла всегда оставалось истинным. Чтобы исправить это, необходимо вычислить конец месяца один раз перед началом цикла и использовать это фиксированное значение в условии цикла.




Просто надо актуальную модель использовать (о1)
7. user2116971 08.12.24 11:19 Сейчас в теме
(6) Ты мне-то зачем эту всю портянку написал???
8. mkalimulin 1251 08.12.24 11:21 Сейчас в теме
(7) В опровержение твоего утверждения
12. Torin57 33 08.12.24 12:08 Сейчас в теме
(8) Ты понял кому ответил? Это тролль. А тролли - это такие же перелопатчики текста как и Chat GPT. На вопрос-то они ответят, но им еще и потроллить надо. Поэтому им этот Chat GPT - как серпом по яйцам. Как они будут троллить, если любой дурак может загрузить в промт книгу Радченко, Chat GPT ее прочитает, ответит на вопросы, и троллить не станет? А никак.
user2116242; +1 1 Ответить
15. user1863362 08.12.24 12:35 Сейчас в теме
(12) И тебе не хворать, гопота ты наша.
Sashares; Torin57; +2 Ответить
62. Sashares 35 10.12.24 10:23 Сейчас в теме
(15) Местный гопник продолжает жечь. Теперь на партнерском форуме.
63. user2107191 10.12.24 11:20 Сейчас в теме
(62) Забанили его на месяц. Ждем реинкарнации.
user1863362; Sashares; +2 Ответить
14. user1863362 08.12.24 12:31 Сейчас в теме
(6) Весьма показательная портянка.

1) Человек находит ошибку в коде. Самостоятельно. Видит что это бесконечный цикл.
2) Человек задает вопрос нейросети, начиная с того, что это бесконечный цикл. Просит объяснений.
3) Нейросеть показывает ему на примере.
4) Человек восторгается нейросетью, наглухо забывая про пункт 1.

Л - Логика!
Sashares; user2116971; +2 Ответить
26. mkalimulin 1251 08.12.24 14:02 Сейчас в теме
(14) Не придирайтесь. Я увидел, что 4o тупит. Попробовал задавать наводящие вопросы. Тупит. Сменил модель. Получил нормальный результат. Выложил фрагмент своих изысканий.
А так-то у автора подход изначально был неправильный. Надо было взять флагманскую модель и попросить написать код. Тогда бы он сразу получил нормально работающий код
27. Torin57 33 08.12.24 14:29 Сейчас в теме
(26) Надеюсь, вы не пытаетесь с ним общаться? Это пипец, какой тролль. 61%

Писать ему, конечно, можно, но не для того чтобы с ним подискутировать. Скорее, чтобы читатели форума прочитали. Если надо будет доказать что черное это белое, он и с этим справится.
Прикрепленные файлы:
29. user1863362 08.12.24 15:38 Сейчас в теме
(27) Борцун с троллями сам пытается стать троллем. Милота!
В следующем посте не забудь объявить себя победителем, царем, кто ты там у нас.
Sashares; +1 Ответить
28. user1863362 08.12.24 15:36 Сейчас в теме
(26)
Не придирайтесь. Я увидел, что 4o тупит. Попробовал задавать наводящие вопросы. Тупит. Сменил модель. Получил нормальный результат.
Вот это как раз именно то, что делает программист, когда "работает" с помощью нейросети. Фокус внимания резко сдвигается - вместо размышлений над проектом и алгоритмом приходится контролировать и уговоривать нейросеть.
В итоге получается полуграмотный джун, на которого возложили обязанности тимлида - утирать сопельки команде. Результат предсказуем. Впрочем, у многих это вызывает восхищение.
user2116971; +1 Ответить
32. user2116971 08.12.24 15:53 Сейчас в теме
(28) И главное - никто не несет ответственности!
"У нас компьютер так посчитал!" (С)
33. mkalimulin 1251 08.12.24 17:13 Сейчас в теме
(28) Вы, видимо, не поняли Я увидел, что 4о тупит. И был очень удивлен. Потому что, обычно ИИ на такой шняге не тупит. Стал разбираться и понял, что это было исключение, а не правило
31. user2116971 08.12.24 15:50 Сейчас в теме
(26)
Я увидел, что 4o тупит.
А как ты это увидел? Сначала решил задачу сам, и сравнил с ответом нейросети? А что делать тому, кто не умеет в "решил сам" и "увидел тупняк"? Тупо доверять?
34. mkalimulin 1251 08.12.24 17:14 Сейчас в теме
(31) Это увидел не я, а автор, который запустил код и обнаружил зависание
35. Torin57 33 08.12.24 17:21 Сейчас в теме
(34) Нашел я сайт trychatgpt. Задал вопрос: где у тебя промт? Чат говорит: Извините, но я не могу поделиться своим внутренним промптом или кодом. То есть, он есть, но где-то там внутри этого сайта? Интересно, что в нем написано?
Прикрепленные файлы:
36. user1863362 08.12.24 17:56 Сейчас в теме
(34)
автор, который запустил код и обнаружил зависание
Которое внезапно в твоём обращении к нейросети превратилось в "<фрагмент кода> дает бесконечный цикл в чем причина думай по шагам".

И правда, причем тут ты? Это же автор увидел, он про это и рассказывал, ага.
37. user2116971 08.12.24 18:04 Сейчас в теме
(36) Мне вот интересно - какой все-таки смысл несет инструкция "думай по шагам"? То есть, ИИ может думать не "по шагам", и по мысли вопрошающего - это заведомо приведет к неправильному результату? Наверное, именно поэтому мы бережно направим сеточку в сторону правильного ответа. Который сами мы уже знаем, конечно (а иначе как бы мы смогли управлять сеточкой?)
38. user1863362 08.12.24 19:30 Сейчас в теме
(37)
какой все-таки смысл несет инструкция
На языке поклонников нейросетей это означает "объясни свою цепочку рассуждений детально, по шагам, для нас тупых". Без подобной просьбы они сами зачастую ничего из ответа понять не могут - с русским языком у них тяжело.
39. user2116971 08.12.24 19:40 Сейчас в теме
(38) Аааа... Это так задается структура возвращаемого ответа.
Кароч, скоро будет новая профессия - так заранее запрограммировать структуру ответа, чтобы нейросеть смогла дать именно такой структурированный ответ на заранее правильно запрограммированный (структурированный) вопрос.
41. mkalimulin 1251 08.12.24 20:00 Сейчас в теме
(39) Нет. Так направляют нейросеть на путь цепочки рассуждений
42. user1863362 08.12.24 21:09 Сейчас в теме
(41)
Так направляют нейросеть
Ну я про что и говорю. Вдобавок к дейли, митингам, спринтам, ретроспективам и прочей отчетности по затраченному времени в разрезах характеристик проблем, разработчику приходится теперь и нейросеть направлять на путь истинный.

Зато очень красиво выглядит и на конференции рассказать можно!
43. Torin57 33 09.12.24 09:54 Сейчас в теме
(41)
Ну я про что и говорю. Вдобавок к дейли, митингам, спринтам, ретроспективам и прочей отчетности по затраченному времени в разрезах характеристик проблем, разработчику приходится теперь и нейросеть направлять на путь истинный.


Против лома нет приема :-)
40. mkalimulin 1251 08.12.24 19:58 Сейчас в теме
(37) Правильный вопрос. Флагманские модели сейчас все "думают по шагам". Для них такая присказка не нужна. Для моделей предыдущего поколения (но ими сейчас вовсю пользуются через всякие сайты-телеграмы) такая добавка имеет смысл. Она заставляет модель строить цепочку рассуждений и зачастую улучшает результат.
Изначально я задавал вопрос без нее. Потом пытался с ее помощью выйти на правильный результат. Потом просто забыл убрать.
3. user1863362 08.12.24 11:06 Сейчас в теме
(1)
ChatGPT - тоже говорит ошибок не
Ты б еще у cберовского гигачада спросил...
ДеньЯнваря<=КонецМесяца(ДеньЯнваря)
Всегда истина. Почему - подумай сам.
I_am_Alpharius; user2116971; +2 Ответить
10. I_am_Alpharius 08.12.24 12:00 Сейчас в теме
(2)
(3)

Спасибо! Получилось. Оставлю тут решение на всякий случай.

&НаКлиенте
Процедура КНОПКА(Команда)
	
МассивЯнварь=Новый Массив;    ПервоеЯнваря=НачалоГода(ТекущаяДата());
МассивФевраль=Новый Массив;   ПервоеФевраля=ДобавитьМесяц(ПервоеЯнваря,1);
МассивМарт=Новый Массив;      ПервоеМарта=ДобавитьМесяц(ПервоеЯнваря,2);
МассивАпрель=Новый Массив;    ПервоеАпреля=ДобавитьМесяц(ПервоеЯнваря,3);
МассивМай=Новый Массив;       ПервоеМая=ДобавитьМесяц(ПервоеЯнваря,4);
МассивИюнь=Новый Массив;      ПервоеИюня=ДобавитьМесяц(ПервоеЯнваря,5);
МассивИюль=Новый Массив;      ПервоеИюля=ДобавитьМесяц(ПервоеЯнваря,6);
МассивАвгуст=Новый Массив;    ПервоеАвгуста=ДобавитьМесяц(ПервоеЯнваря,7);
МассивСентябрь=Новый Массив;  ПервоеСентября=ДобавитьМесяц(ПервоеЯнваря,8);
МассивОктябрь=Новый Массив;   ПервоеОктября=ДобавитьМесяц(ПервоеЯнваря,9);
МассивНоябрь=Новый Массив;    ПервоеНоября=ДобавитьМесяц(ПервоеЯнваря,10);
МассивДекабрь=Новый Массив;   ПервоеДекабря=ДобавитьМесяц(ПервоеЯнваря,11);




ДеньЯнваря=ПервоеЯнваря;
КонецЯнваря=КонецМесяца(ДеньЯнваря);
Пока ДеньЯнваря<=КонецЯнваря Цикл
	 МассивЯнварь.Добавить(ДеньЯнваря);
	 ДеньЯнваря=ДеньЯнваря+86400;
КонецЦикла;

ДеньФевраля=ПервоеФевраля;
КонецФевраля=КонецМесяца(ДеньФевраля);
Пока ДеньФевраля<=КонецФевраля Цикл
	 МассивФевраль.Добавить(ДеньФевраля);
	 ДеньФевраля=ДеньФевраля+86400;
КонецЦикла;
 
ДеньМарта=ПервоеМарта;
КонецМарта=КонецМесяца(ДеньМарта);
Пока ДеньМарта<=КонецМарта Цикл
	 МассивМарт.Добавить(ДеньМарта);
	 ДеньМарта=ДеньМарта+86400;
КонецЦикла;
 
ДеньАпреля=ПервоеАпреля;
КонецАпреля=КонецМесяца(ДеньАпреля);
Пока ДеньАпреля<=КонецАпреля Цикл
	 МассивАпрель.Добавить(ДеньАпреля);
	 ДеньАпреля=ДеньАпреля+86400;
КонецЦикла;
 
ДеньМая=ПервоеМая;
КонецМая=КонецМесяца(ДеньМая);
Пока ДеньМая<=КонецМая Цикл
	 МассивМай.Добавить(ДеньМая);
	 ДеньМая=ДеньМая+86400;
КонецЦикла;
 
ДеньИюнь=ПервоеИюня;
КонецИюня=КонецМесяца(ДеньИюнь);
Пока ДеньИюнь<=КонецИюня Цикл
	 МассивИюнь.Добавить(ДеньИюнь);
	 ДеньИюнь=ДеньИюнь+86400;
КонецЦикла;
 
ДеньИюль=ПервоеИюля;
КонецИюля=КонецМесяца(ДеньИюль);
Пока ДеньИюль<=КонецИюля Цикл
	 МассивИюль.Добавить(ДеньИюль);
	 ДеньИюль=ДеньИюль+86400;
КонецЦикла;
 
ДеньАвгуст=ПервоеАвгуста;
КонецАвгуста=КонецМесяца(ДеньАвгуст);
Пока ДеньАвгуст<=КонецАвгуста Цикл
	 МассивАвгуст.Добавить(ДеньАвгуст);
	 ДеньАвгуст=ДеньАвгуст+86400;
КонецЦикла;
 
ДеньСентябрь=ПервоеСентября;
КонецСентября=КонецМесяца(ДеньСентябрь);
Пока ДеньСентябрь<=КонецСентября Цикл
	 МассивСентябрь.Добавить(ДеньСентябрь);
	 ДеньСентябрь=ДеньСентябрь+86400;
КонецЦикла;
 
ДеньОктября=ПервоеОктября;
КонецОктября=КонецМесяца(ДеньОктября);
Пока ДеньОктября<=КонецОктября Цикл
	 МассивОктябрь.Добавить(ДеньОктября);
	 ДеньОктября=ДеньОктября+86400;
КонецЦикла;
 
ДеньНоября=ПервоеНоября;
КонецНоября=КонецМесяца(ДеньНоября);
Пока ДеньНоября<=КонецНоября Цикл
	 МассивНоябрь.Добавить(ДеньНоября);
	 ДеньНоября=ДеньНоября+86400;
КонецЦикла;
 
ДеньДекабрь=ПервоеДекабря;
КонецДекабря=КонецМесяца(ДеньДекабрь);
Пока ДеньДекабрь<=КонецДекабря Цикл
	 МассивДекабрь.Добавить(ДеньДекабрь);
	 ДеньДекабрь=ДеньДекабрь+86400;
КонецЦикла;
 
ГлавныйМассив=Новый Массив;

ГлавныйМассив.Добавить(МассивЯнварь);
ГлавныйМассив.Добавить(МассивФевраль);
ГлавныйМассив.Добавить(МассивМарт);
ГлавныйМассив.Добавить(МассивАпрель);
ГлавныйМассив.Добавить(МассивМай);
ГлавныйМассив.Добавить(МассивИюнь);
ГлавныйМассив.Добавить(МассивИюль);
ГлавныйМассив.Добавить(МассивАвгуст);
ГлавныйМассив.Добавить(МассивСентябрь);
ГлавныйМассив.Добавить(МассивОктябрь);
ГлавныйМассив.Добавить(МассивНоябрь);
ГлавныйМассив.Добавить(МассивДекабрь);

Для Каждого Месяц ИЗ ГлавныйМассив Цикл
    Для Каждого День ИЗ Месяц Цикл 
          Сообщить(День); 
    КонецЦикла; 
КонецЦикла; 

КонецПроцедуры
Показать
13. user2116971 08.12.24 12:14 Сейчас в теме
(10) Не слушай всяких чатов и их адептов.
У тебя уже есть четкие переменные с датами, не надо плодить новых переменных. Вполне можно обойтись КонецМесяца (ПервояЯнваря).

Да и вообще:
НомерГода = Год(ТекущаяДата());							  
МассивМесяцев = Новый Массив;
Для НомерМесяца = 1 По 12 Цикл
	
	МассивДней = Новый Массив;
	ПоследнийДеньМесяца = День(КонецМесяца(Дата(НомерГода, НомерМесяца, 1)));
	Для НомерДня = 1 По ПоследнийДеньМесяца Цикл
		МассивДней.Добавить(Дата(НомерГода, НомерМесяца, НомерДня));
	КонецЦикла;
	МассивМесяцев.Добавить(МассивДней);
	
КонецЦикла;

// Ну и дальше, как у тебя
Показать
Ни один чат так не сделает. Он не умеет в абстракции.
nomad_irk; I_am_Alpharius; user1863362; Sashares; +4 Ответить
16. I_am_Alpharius 08.12.24 12:45 Сейчас в теме
(13)

Вот это мощно! Сейчас буду разбираться как это работает.
18. user2116971 08.12.24 13:11 Сейчас в теме
(16) Да это ж элементарщина (для человека) - два вложенных цикла. Первый итератор - фиксированный (1-12), а параметры итератора второго цикла определяются на основании итератора первого цикла.

Всё волшебство в принципе заключается в использовании функции Дата().
25. mkalimulin 1251 08.12.24 13:55 Сейчас в теме
(13) Вы ошибаетесь. o1 от OpenAI именно так и сделает. Прям на 1С. И я подозреваю, что и другие флагманские модели от Google, Anthropic, китайцев сделают. Лень проверять
45. lmnlmn 69 09.12.24 11:37 Сейчас в теме
(25) А так?
Для Сч = 1 По 28 Цикл
	ДниМесяца28.Добавить(Сч);
КонецЦикла

НомерГода = Год(ТекущаяДата());
МассивМесяцев = Новый Массив;
Для НомерМесяца = 1 По 12 Цикл
	
	МассивДней = ДниМесяца28.ВыгрузитьЗначения();
	ПоследнийДеньМесяца = День(КонецМесяца(Дата(НомерГода, НомерМесяца, 1)));
	Для НомерДня = 29 По ПоследнийДеньМесяца Цикл
		МассивДней.Добавить(Дата(НомерГода, НомерМесяца, НомерДня));
	КонецЦикла;
	МассивМесяцев.Добавить(МассивДней);
	
КонецЦикла;
Показать
46. mkalimulin 1251 09.12.24 12:01 Сейчас в теме
48. Torin57 33 09.12.24 12:47 Сейчас в теме
(46) А как к gpt-4o mini по API подключаетесь? Я через https://aitunnel.ru
49. mkalimulin 1251 09.12.24 13:57 Сейчас в теме
(48) Я напрямую. У меня аккаунт в OpenAI
47. user2107191 09.12.24 12:03 Сейчас в теме
(45) Вот только в массиве нужны даты, а не номера дней...
51. user1863362 09.12.24 15:27 Сейчас в теме
(45)
А так?

Извращений захотели, щусята?

МассивМесяцев = ПрочитатьЗначениеJSON("[[][][][][][][][][][][][]]");
НомерГода = Год(ТекущаяДата());

ТекушийДень = Дата(НомерГода, 1, 1);
Пока Год(ТекушийДень) = НомерГода Цикл
	МассивМесяцев[Месяц(ТекушийДень) - 1].Добавить(ТекушийДень);
	ТекушийДень = ТекушийДень + 86400;
КонецЦикла;
Показать
Sashares; +1 Ответить
52. user2107191 09.12.24 18:31 Сейчас в теме
53. mkalimulin 1251 09.12.24 21:52 Сейчас в теме
54. user2107191 09.12.24 21:54 Сейчас в теме
(53) В данном конкретном комменте - не тебя.
56. mkalimulin 1251 09.12.24 22:00 Сейчас в теме
(54) И не ИИ. ИИ такое тоже может, если попросить
57. user2107191 09.12.24 22:09 Сейчас в теме
(56) Да никто на твою женщину не покушается, спи с ней спокойно уже.
59. Torin57 33 09.12.24 22:29 Сейчас в теме
(56) Посоветуйте, плиз, чат или форум по искусственному интеллекту.

И второй вопрос, может ли уже ИИ писать код на 1С? Я что-то слышал про copilot, но не погружался в детали.
60. mkalimulin 1251 10.12.24 00:05 Сейчас в теме
(59) https://t.me/seeallochnaya
Вот тут чел неплохо пишет. Мне лично нравится
Да, актуальные модели от OpenAI уже хорошо пишут код на 1С. А их дорогущая o1 так вообще отлично. Например код из поста (13) она написала точно такой же и без ошибок. Запускай и будет работать.
Я некоторое время назад думал, что 1С обречена быть на обочине всего этого процесса. Тогда еще объявлялось, что русскоязычные тексты составляют менее 1% в обучающих данных.
Но, видимо, недооценил значение фактора дефицита обучающих данных. С тех пор в обучающие данные "засосали" все, что можно было (и нельзя). И русскоязычное вообще и по 1С тоже
61. user1863362 10.12.24 08:05 Сейчас в теме
(56)
ИИ такое тоже может, если попросить
Ну приведи пример запроса. А потом посмотри на него, убери оттуда описание заранее известного тебе решения, сбрось контекст и спроси модель еще раз.
9. mkalimulin 1251 08.12.24 11:37 Сейчас в теме
Кстати, если кому интересно. Легкая модель 4o-mini тоже справляется с этой задачей. Так же, как и 4-turbo (предшественник 4o). В общем, что-то недоперемудрили конкретно с моделью 4o.
Мораль, ИИ надо пользоваться с умом
I_am_Alpharius; +1 Ответить
11. I_am_Alpharius 08.12.24 12:04 Сейчас в теме
(9) Я с 3,5-turbo пытаюсь работать. Иногда прям помогает. Можно несколькими сообщениями загнать в него здоровенный код и спросить - Проанализируй код, который я тебе оправил в последних семи (допустим) сообщениях и распиши что он делает. И он неплохо так объясняет процедуру за процедурой. Мне помогает.
19. mkalimulin 1251 08.12.24 13:11 Сейчас в теме
(11) 3.5 все-таки уже устарел. Лучше пользоваться 4o-mini или o1
20. Torin57 33 08.12.24 13:19 Сейчас в теме
(11)
Я с 3,5-turbo пытаюсь работать.

А чем пользуешься, чат-бот в телеграме?
21. I_am_Alpharius 08.12.24 13:31 Сейчас в теме
(20)
А чем пользуешься, чат-бот в телеграме?


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

Кстати я посмотрел - там уже обновили нейросеть, пару недель назад была 3,5-turbo, сейчас уже 4-o-mini.
22. Torin57 33 08.12.24 13:35 Сейчас в теме
(21)
Не уверен можно ли тут ссылки оставлять...

Тоже не знаю. Задал вопрос в саппорт. Можно фразу по которой искал выложить, а я уже сам поищу.
23. I_am_Alpharius 08.12.24 13:37 Сейчас в теме
(22)

Можно фразу по которой искал выложить


trychatgpt
44. Torin57 33 09.12.24 10:00 Сейчас в теме
(21)
Не уверен можно ли тут ссылки оставлять...


Спросил в ТП сайта. Ссылки оставлять можно, но, как правило, они скрываются, для проверки модератором.
24. mkalimulin 1251 08.12.24 13:50 Сейчас в теме
17. Torin57 33 08.12.24 13:02 Сейчас в теме
(9) Ты за кого? За троллей или за людей?
30. Torin57 33 08.12.24 15:42 Сейчас в теме
50. Torin57 33 09.12.24 14:08 Сейчас в теме
Понятно. А сколько стоит?

На aitunnel модель gpt-4o-mini:

Ввод 16.5 руб за 1M токенов
Вывод 132 руб за 1M токенов
55. mkalimulin 1251 09.12.24 21:59 Сейчас в теме
(50)
За 1М токенов
Ввод от 7.5 до 15 центов (от 7.45 до 14.91 руб. по текущему курсу, от и до, потому что у них там кеширование, которое работает в автоматическом режиме)
Вывод 60 центов (59.63 руб.)

В статье есть картинка с текущими ценами
58. пользователь 09.12.24 22:27
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот