Заполнение ТЗ

1. TopZlodey 13 20.07.18 15:34 Сейчас в теме
Здравствуйте, учусь программировать в 1С и пытаюсь реализовать следующий механизм:
В документе при установке даты начала и даты конца в ТЗ появляются новые колонки с названием месяцев попавших в период.
Как добавлять колонки я разобрался, а вот как сделать правильный цикл и выбрать названия месяцев попавших в период не получается. Подскажите пожалуйста как можно реализовать данный функционал.
P.S. Для примера поставили дату начала 1 января 2018 - дата конца 3 марта 2018 : добавились колонки Январь, Февраль, Март.
По теме из базы знаний
Найденные решения
4. Boneman 298 20.07.18 15:52 Сейчас в теме
(3)
НачалоИнтервала = некаяДата;
КонецИнтервала = некаядата;
МассивМесяцев = Новый Массив;
Для Итератор=0 по 11 Цикл
	МесяцКонец = ДобавитьМесяц(НачалоМесяца(НачалоИнтервала),Итератор);
	Если МесяцКонец>КонецИнтервала тогда
		прервать;
	КонецЕсли;
	МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));
КонецЦикла;
Показать

примерно так
на выходе в МассивМесяцев у тебя должен быть список месяцев
9. Boneman 298 20.07.18 16:19 Сейчас в теме
(8) измени
МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ")); 
Сообщить(МассивМесяцев); 

НазваниеКолонки=Формат(МассивМесяцев, "ДФ=MMMM"); 

на
//МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));  
//Сообщить(МассивМесяцев);  

НазваниеКолонки=Формат(МесяцКонец,"ДФ=ММММ"); 


ты неправильно массив используешь. Тебе нужно само значение а не массив. В массив я помещал, для примера. А ты в самом цикле добавляешь свои реквизиты
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 20.07.18 15:44 Сейчас в теме
(1) наименование месяца буквами по дате можно получить функцией формат Формат(Дата, "ДФ=MMMM");
по периоду,
делаешь цикл, от 1 до 12
в цикле используешь функцию ДобавитьМесяц
к НачалоМесяца начала интервала и количество итераций.
и проверяешь, не достигло ли значение даты конца. Если достигло то прервать.
3. TopZlodey 13 20.07.18 15:46 Сейчас в теме
(2) Добавление и наименование колонок смог реализовать так:
	НазваниеКолонки=Формат(ТекущаяДата(), "ДФ=MMMM");
	НовыйРеквизит = Новый Массив;
	НовыйРеквизит.Добавить(Новый РеквизитФормы(НазваниеКолонки, Новый ОписаниеТипов("Число"), "ПрозводственныеПланы", НазваниеКолонки, Истина));
	ИзменитьРеквизиты(НовыйРеквизит);


	НоваяКолонка = Элементы.Добавить(НазваниеКолонки, Тип("ПолеФормы"), Элементы.ПрозводственныеПланы);
	НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
	НоваяКолонка.ПутьКДанным = "ПрозводственныеПланы."+НазваниеКолонки;
Показать


Но про цикл если честно не понимаю как это реализовать в коде.
4. Boneman 298 20.07.18 15:52 Сейчас в теме
(3)
НачалоИнтервала = некаяДата;
КонецИнтервала = некаядата;
МассивМесяцев = Новый Массив;
Для Итератор=0 по 11 Цикл
	МесяцКонец = ДобавитьМесяц(НачалоМесяца(НачалоИнтервала),Итератор);
	Если МесяцКонец>КонецИнтервала тогда
		прервать;
	КонецЕсли;
	МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));
КонецЦикла;
Показать

примерно так
на выходе в МассивМесяцев у тебя должен быть список месяцев
5. TopZlodey 13 20.07.18 16:08 Сейчас в теме
(4)
НачалоИнтервала = некаяДата; КонецИнтервала = некаядата; МассивМесяцев = Новый Массив; Для Итератор=0 по 11 Цикл МесяцКонец = ДобавитьМесяц(НачалоМесяца(НачалоИнтервала),Итератор); Если МесяцКонец>КонецИнтервала тогда прервать; КонецЕсли; МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ")); КонецЦикла;


Спасибо, буду разбираться как это все работает, только подскажите пожалуйста почему итератор по 11?
6. Boneman 298 20.07.18 16:10 Сейчас в теме
(5)
почему итератор по 11

Ну если к январю добавить 11 - то должен получится декабр , а больше нам и не нужно
7. TopZlodey 13 20.07.18 16:12 Сейчас в теме
8. TopZlodey 13 20.07.18 16:15 Сейчас в теме
(6) Если можно, то еще вопрос, попытался запустить при изменении начальной даты через сервер:


НачалоИнтервала = Объект.НачалоПериода;
	КонецИнтервала = Объект.КонецПериода;
		МассивМесяцев = Новый Массив;
		Для Итератор=0 по 11 Цикл
    МесяцКонец = ДобавитьМесяц(НачалоМесяца(НачалоИнтервала),Итератор);
    Если МесяцКонец>КонецИнтервала тогда
        прервать;
    КонецЕсли;
    МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));
	Сообщить(МассивМесяцев);
	
	НазваниеКолонки=Формат(МассивМесяцев, "ДФ=MMMM");
	НовыйРеквизит = Новый Массив;
	НовыйРеквизит.Добавить(Новый РеквизитФормы(НазваниеКолонки, Новый ОписаниеТипов("Число"), "ПрозводственныеПланы", НазваниеКолонки, Истина));
	ИзменитьРеквизиты(НовыйРеквизит);


	НоваяКолонка = Элементы.Добавить(НазваниеКолонки, Тип("ПолеФормы"), Элементы.ПрозводственныеПланы);
	НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
	НоваяКолонка.ПутьКДанным = "ПрозводственныеПланы."+НазваниеКолонки;
	КонецЦикла;
Показать



Ругается:

{Документ.ПроизводственныеПланы.Форма.ПроизводственныеПланы.Форма(57)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты)
ИзменитьРеквизиты(НовыйРеквизит);
по причине:
Неуникальное имя реквизита. Имя: "Массив"
9. Boneman 298 20.07.18 16:19 Сейчас в теме
(8) измени
МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ")); 
Сообщить(МассивМесяцев); 

НазваниеКолонки=Формат(МассивМесяцев, "ДФ=MMMM"); 

на
//МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));  
//Сообщить(МассивМесяцев);  

НазваниеКолонки=Формат(МесяцКонец,"ДФ=ММММ"); 


ты неправильно массив используешь. Тебе нужно само значение а не массив. В массив я помещал, для примера. А ты в самом цикле добавляешь свои реквизиты
Оставьте свое сообщение

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