Имя: Пароль:
1C
 
Работа с общей формой
0 ti_inv
 
naïve
03.04.25
13:03
Доброго дня!

1С обучаюсь буквально второй день, поэтому не судите строго если не совсем корректно структурировать мысли буду, заранее спасибо!

Задание следующее - необходимо создать форму "МесяцыГода"
Форма должна открываться при запуске системы.

По умолчанию стоит текущий год. При создании формы и изменении года должна формироваться таблица с колонками "Месяц"(строка) и Количество Дней (число) и заполняться значениями с января по декабрь для заданного года.

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

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

Заранее спасибо!

Сам код:

&НаКлиенте
Перем Год;

&НаКлиенте
Процедура ПриОткрытии1(Отказ,СтандартнаяОбработка) Реквизит1 = "2025";
Массив = Новый Массив; Массив.Добавить(Тип("Число"));
КЧ = Новый КвалификаторыЧисла(4,0); ОписаниеТипов = Новый ОписаниеТипов(("Число"),,, Новый КвалификаторыЧисла(4,0));
Оповещение = Новый ОписаниеОповещения("ПослеВводаЗначения" , ЭтаФорма, Параметры); ПоказатьВводЗначения(Оповещение, Реквизит1,"Введите год", ОписаниеТипов);
КонецПроцедуры

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

&НаКлиентеПроцедура ПослеВВодаЗначения(Реквизит1, Параметры) Экспорт
Если Реквизит1 <> Неопределено Тогда Год = Реквизит1; КоличествоДнейВГоду = ПолучитьКоличествоДнейНаСервере(Год);
   Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "В " + Год + " году " + КоличествоДнейВГоду + " дней"; Сообщение.Сообщить();
КонецЕсли;КонецПроцедуры
1 Мультук
 
гуру
03.04.25
13:34
(0)

1)
>>1С обучаюсь буквально второй день
А можно адрес сайта, курсов по которому вы обучаетесь ?


2) Почему нельзя руками в конфигураторе создать таблицу значений на форме
А при открытии её заполнить ?

3) Какой chatGPT генерил этот код ?
2 ti_inv
 
naïve
03.04.25
13:41
(1)
1)Всё что доступно в общем доступе и является учебными материалами)
2)Это не совсем подходит по условию задачи.
3)Никакой, это сборная солянка из примеров кода который по аналогии подбирал.
Не пробовал использовать нейросети, но наслышан, что использовать их в 1С не имеет особо смысла ибо целенаправленно никто им не скармливал кучи кода для обучения(могу ошибаться).
3 Волшебник
 
03.04.25
13:51
Какой-то бред тупого бота
4 АгентБезопасной Нацио
 
03.04.25
15:29
(2) код нужно не "подбирать по примерам", а писать осмысленно...
(1) 3.это не AI, это ЕТ.
Программист всегда исправляет последнюю ошибку.