Прошу совета по коду

1. bladeson 23.04.17 14:33 Сейчас в теме
Здравствуйте! Я начинающий "программист" 1С. При выполнении задачи получилось такое:


Если Форма.ЭлементыФормы["Фл5"].Значение = Истина Тогда
				Если Форма.ЭлементыФормы["Фл1"].Значение = ИСТИНА Тогда 
				ТекстПрод = ТекстПрод + " при t -18.  "
				ИначеЕсли Форма.ЭлементыФормы["Фл2"].Значение = ИСТИНА Тогда
				ТекстПрод = ТекстПрод + " при t -18.  "
				ИначеЕсли Форма.ЭлементыФормы["Фл3"].Значение = ИСТИНА Тогда
				ТекстПрод = ТекстПрод + " при t -18.  "
				ИначеЕсли Форма.ЭлементыФормы["Фл4"].Значение = ИСТИНА Тогда
				ТекстПрод = ТекстПрод + " при t -18.  "
				ИначеЕсли Форма.ЭлементыФормы["КостныйОстаток"].Значение = ИСТИНА Тогда
				ТекстПрод = ТекстПрод + " при t -18.  "
				ИначеЕсли Форма.ЭлементыФормы["МясоМехОбвалки"].Значение = ИСТИНА Тогда
				ТекстПрод = ТекстПрод + " при t -18.  "
				ИначеЕсли Форма.ЭлементыФормы["ТушкаКур1С"].Значение = ИСТИНА Тогда
				ТекстПрод = ТекстПрод + " при t -18.  ";
				КонецЕсли;
			КонецЕсли;
			Если Форма.ЭлементыФормы["Фл6"].Значение = Истина Тогда   
				Если Форма.ЭлементыФормы["Фл1"].Значение = ИСТИНА Тогда 
				ТекстПрод = ТекстПрод + " при t (-2;+2).  "
				ИначеЕсли Форма.ЭлементыФормы["Фл2"].Значение = ИСТИНА Тогда
				ТекстПрод = ТекстПрод + " при t (0;+2).  "
				ИначеЕсли Форма.ЭлементыФормы["Фл3"].Значение = ИСТИНА Тогда
				ТекстПрод = ТекстПрод + " при t (0;+2).  "
				ИначеЕсли Форма.ЭлементыФормы["Фл4"].Значение = ИСТИНА Тогда
				ТекстПрод = ТекстПрод + " при t (0;+2).  ";
				КонецЕсли;
			КонецЕсли;
			Если Форма.ЭлементыФормы["Фл7"].Значение = Истина Тогда
				ТекстПрод = ТекстПрод + Форма.ЭлементыФормы["Фл7"].Подсказка + " при t (0;+6).  ";
			КонецЕсли;
Показать


И вот вопрос, а можно ли как то "покрасивше" это оформить? А то что-то крутиться в головушке, но вот сообразить не могу никак.
По теме из базы знаний
Найденные решения
2. Alexey_ 27 23.04.17 15:05 Сейчас в теме
(1)например, объединить условия, сократить путь до проверяемого в условии значения:
Если Фл5 И (Фл1 Или Фл2 Или Фл3 Или Фл4 Или КостныйОстаток Или МясоМехОбвалки Или ТушкаКур1С) Тогда
	ТекстПрод = ТекстПрод + " при t -18. ";
КонецЕсли;
bladeson; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Alexey_ 27 23.04.17 15:05 Сейчас в теме
(1)например, объединить условия, сократить путь до проверяемого в условии значения:
Если Фл5 И (Фл1 Или Фл2 Или Фл3 Или Фл4 Или КостныйОстаток Или МясоМехОбвалки Или ТушкаКур1С) Тогда
	ТекстПрод = ТекстПрод + " при t -18. ";
КонецЕсли;
bladeson; +1 Ответить
5. starjevschik 23.04.17 16:21 Сейчас в теме
(2) это известный фокус, условия
Если А = Истина Тогда

и
Если А Тогда

не эквивалентны, второе будет вызывать ошибку, если А не того типа, первое будет всегда правильно отрабатывать.
Судя по коду, лучше использовать первый вариант о)
bladeson; +1 Ответить
3. bladeson 23.04.17 16:07 Сейчас в теме
Спасибо. Действительно, так поинтереснее. Только у меня чутка по другому и трабла лезет: Преобразование значения к типу Булево не может быть выполнено.

Если ФлЗаморозка И (ФлМясо1кат Или ФлСубпродукты Или ФлПолуфабрикаты Или ФлФаршКур Или ФлКостныйОстаток Или ФлМясоМехОбвалки Или ФлТушкаКур1с) Тогда
ТекстПрод = ТекстПрод + " при t -18.  ";
КонецЕсли;
4. Alexey_ 27 23.04.17 16:08 Сейчас в теме
(3) что-то из условия не булево, смотри в отладчике
bladeson; +1 Ответить
6. bladeson 23.04.17 16:23 Сейчас в теме
Ну получается, что ФлЗаморозка это флажок.
7. bladeson 23.04.17 17:10 Сейчас в теме
Я сделяль :)


Если ФлЗаморозка И	(ФлМясоIкат Или ФлСубпродукты Или ФлПолуфабрикаты Или ФлФаршКур Или ФлКостныйОстаток Или ФлМясоМехОбвалки Или ФлТушкаКур1с) Тогда
    			ТекстПрод = ТекстПрод + " при t -18.  ";
			КонецЕсли;
			
			Если ФлОхлад И ФлМясоIкат Тогда 
				ТекстПрод = ТекстПрод + " при t (-2;+2).  ";
			КонецЕсли;
				
			Если ФлОхлад И (ФлСубпродукты Или ФлПолуфабрикаты Или ФлФаршКур) Тогда
				ТекстПрод = ТекстПрод + " при t (0;+2).  ";
			КонецЕсли;
			
			Если ФлКолбасы Тогда
				ТекстПрод = ТекстПрод + ФлКолбасыПодсказка + " при t (0;+6).  ";
			КонецЕсли;
Показать
8. bladeson 23.04.17 17:28 Сейчас в теме
Ребят, спасибо большое за советы!
9. bladeson 23.04.17 19:47 Сейчас в теме
Если есть еще предложения, буду рад:)
10. ipoloskov 162 24.04.17 08:51 Сейчас в теме
Предлагаю не называть элементы формы (и вообще переменные, реквизиты и проч.) "Фл1", "Фл2".
В русском языке много других красивых слов, из которых можно составить выражения, понятные человеку, который будет читать и редактировать вашу программу после вас. Например, "РежимРаботыМинус18", "РежимРаботыМинус2Плюс2"
bladeson; starjevschik; +2 Ответить
11. bladeson 24.04.17 14:03 Сейчас в теме
(10) Да с удовольствием бы, но я тут только до ума довел немного. А писал это какой-то извращенец.
Оставьте свое сообщение

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