Цикл с заданным шагом

1. FKLDOZ 8 16.10.24 14:30 Сейчас в теме
Добрый день!

Подскажите как правильно сделать вывод печатной формы с шагом: нужно, что бы раскраска чередовалась каждые пять строк. Сначала 5 строк нет раскраски, затем 5 строк закрашено и тд

Пока ВыборкаЗарплата.Следующий() Цикл 	
	
			ОбластьЗарплата.Параметры.Заполнить(ВыборкаЗарплата);  
						
			Если ФлПокраски Тогда

			       ОбластьЗарплата.Область(1,2,1,4).ЦветФона=WebЦвета.Фиолетовый;
     		Иначе
		          ОбластьЗарплата.Область(1,2,1,4).ЦветФона=WebЦвета.Белый;

			КонецЕсли; 

			ФлПокраски=Не ФлПокраски;			
			ТабДок.Вывести(ОбластьЗарплата, ВыборкаЗарплата.Уровень());

КонецЦикла;
Показать

Простите, что-то у меня не получается. Не особенно с программированием.

"Библиотека стандартных подсистем", редакция 3.1 (3.1.2.264)
По теме из базы знаний
Найденные решения
2. LeeAreHim 16.10.24 14:45 Сейчас в теме
Прямо в лоб
Покрасим = 1;
Пока ВыборкаЗарплата.Следующий() Цикл

ОбластьЗарплата.Параметры.Заполнить(ВыборкаЗарплата);

Если Покрасим > 5 Тогда

ОбластьЗарплата.Область(1,2,1,4).ЦветФона=WebЦвета.Фиолетовый;
Иначе
ОбластьЗарплата.Область(1,2,1,4).ЦветФона=WebЦвета.Белый;

КонецЕсли;

ТабДок.Вывести(ОбластьЗарплата, ВыборкаЗарплата.Уровень());

Если Покрасим = 10 тогда
Покрасим = 1;
Иначе
Покрасим = Покрасим +1;
КонецЕсли;

КонецЦикла;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. spacecraft 17.10.24 10:33 Сейчас в теме
(1) "нет раскраски" и WebЦвета.Белый это разные цвета.
2. LeeAreHim 16.10.24 14:45 Сейчас в теме
Прямо в лоб
Покрасим = 1;
Пока ВыборкаЗарплата.Следующий() Цикл

ОбластьЗарплата.Параметры.Заполнить(ВыборкаЗарплата);

Если Покрасим > 5 Тогда

ОбластьЗарплата.Область(1,2,1,4).ЦветФона=WebЦвета.Фиолетовый;
Иначе
ОбластьЗарплата.Область(1,2,1,4).ЦветФона=WebЦвета.Белый;

КонецЕсли;

ТабДок.Вывести(ОбластьЗарплата, ВыборкаЗарплата.Уровень());

Если Покрасим = 10 тогда
Покрасим = 1;
Иначе
Покрасим = Покрасим +1;
КонецЕсли;

КонецЦикла;
Показать
3. FKLDOZ 8 16.10.24 14:57 Сейчас в теме
4. jmw 61 17.10.24 04:28 Сейчас в теме
ном = 0;
Пока ВыборкаЗарплата.Следующий() Цикл
	
	ОбластьЗарплата.Параметры.Заполнить(ВыборкаЗарплата);  
	ОбластьЗарплата.Область(1,2,1,4).ЦветФона = ?(ном % 10<5, WebЦвета.Фиолетовый, WebЦвета.Белый);
	
	ФлПокраски=Не ФлПокраски;            
	ТабДок.Вывести(ОбластьЗарплата, ВыборкаЗарплата.Уровень());
	
	ном = ном + 1;
КонецЦикла;
Показать
5. starik-2005 3180 17.10.24 10:10 Сейчас в теме
Вот зачем в приличных языках есть деление на цело и проверка на четность. Было бы просто одд(строка див 5), где одд - это признак четности, див - деление нацело. Если истина - красим, если нет - не красим (ну или наоборот).
7. lmnlmn 69 17.10.24 15:54 Сейчас в теме
(5) В 1С в этом плане относительно прилично так как остаток от деления завезли. В (4) через него как раз не хуже запилии.
9. starik-2005 3180 17.10.24 16:22 Сейчас в теме
(7)
В (4) через него как раз не хуже запилиииии
Не, ну тож норм. Х%1 как раз дает нечетность в условии, но "цел( Строка / 5 ) % 1" - это как-то менее понятно. А строка % 10 < 5 - это совсем выбивает из колеиииии ))))
8. spacecraft 17.10.24 16:09 Сейчас в теме
(5)
одд(строка див 5), где одд - это признак четности, див - деление нацело

не намного сложнее: (Номер % 5 = 0)
starik-2005; +1 Ответить
10. starik-2005 3180 17.10.24 16:25 Сейчас в теме
(8) Ну Номер % 5 = 0 - это 1 0 0 0 0 1 0 0 0 0 1 - не совсем то, что топикастеру надо...
11. lmnlmn 69 17.10.24 16:26 Сейчас в теме
12. spacecraft 17.10.24 16:45 Сейчас в теме
(10) ну, это как применять.
Цвета = Новый Соответствие;
Цвета.Вставить(Истина, Новый Цвет);
Цвета.Вставить(Ложь, WebЦвета.Фиолетовый);
	
Переключатель = Истина;
АктуальныйЦвет = Цвета[Истина];
Счетчик = 0;
Пока ВыборкаЗарплата.Следующий() Цикл     
	Счетчик = Счетчик + 1;
	ОбластьЗарплата.Параметры.Заполнить(ВыборкаЗарплата);  
	ОбластьЗарплата.Область(1,2,1,4).ЦветФона = АктуальныйЦвет;
	ТабДок.Вывести(ОбластьЗарплата, ВыборкаЗарплата.Уровень());
	Если Счетчик % 5 = 0 Тогда
    	Переключатель = Не Переключатель;
		АктуальныйЦвет = Цвета[Переключатель];
	КонецЕсли;
КонецЦикла;
Показать
13. starik-2005 3180 18.10.24 10:26 Сейчас в теме
(12) Ну а в каком-нить более серьезном языке было бы так:
for (i=0; i < count; i++) field[i].color = ?odd(i div 5): green, red;
И фсе...
1С - это монструозный малопонятный гиперсвязанный вообще без какого-либо синтаксического сахара унылый код...
14. esqado 19.06.25 12:38 Сейчас в теме
(13)
Сч = 0; Пока Сч < Счетчик Цикл Поле[Сч].Цвет = ?(Цел(Сч/5)%2, Зеленый, Красный); Сч = Сч + 1; КонецЦикла;

Определение итератора до определения цикла. Инкрементация итератора в конце цикла.
Похоже, что проблема в отсутствие унарного оператора. Тогда это всё меняет.
15. starik-2005 3180 19.06.25 13:20 Сейчас в теме
(14)
Тогда это всё меняет.
Ну не все. Никуда не делись "операторные скобки" цикла, нет инкремента. То же на сях было бы:
while(count--) field[count].color = ?odd(count div 5): green, red;
16. esqado 19.06.25 13:42 Сейчас в теме
(15) Вместо инкремента декремент. Без этого цикл будет бесконечным.
Эскин язык чуть более громоздкий, но за счёт этого он легче читается. Этим обеспечивается более низкий порог вхождения для специалиста. Конечно, после перехода с шарпа мне всё казалось жутко не удобным. Вопрос навыка работы с инструментом.
А вот чего мне однажды не хватило - побитовое сравнение. Требовалось восстановить значения для расшифровки. Пришлось инкапсулировать js для восстановления значений.
Для выполнения прикладных задач это и не нужно.
17. starik-2005 3180 19.06.25 13:51 Сейчас в теме
(16)
побитовое сравнение
В 1с сейчас есть операции с битами, в том числе сравнение:
Синтаксис:
ПобитовоеИ(<Число1>, <Число2>)

Описание:
Возвращает результат логической побитовой операции И для заданной пары чисел.
Оставьте свое сообщение

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