|
Составление расписания дневной смены 5 бригад. | ☑ | ||
---|---|---|---|---|
0
Guerro
15.08.19
✎
08:55
|
Есть нетиповая конфигурация(конф.основания нет), есть документ расписание, которое каждый месяц нужно создавать, есть 5 бригад, по 2 человека в каждой. Возник вопрос составления расписания в 1С для автоматизации и эргономики. Табличная часть выглядит следующим образом: http://vfl.ru/fotos/1b918cfe27546343.html, а печатная форма следующим образом: http://vfl.ru/fotos/cdc216ba27546344.html.
Как в ячейках значение булево заменить на закрашенные по определенному значению? вот цикл по области: Для Каждого ТекСтрокаТабличнаяЧасть1 Из ТабличнаяЧасть1 Цикл ОбластьТабличнаяЧасть1.Параметры.Заполнить(ТекСтрокаТабличнаяЧасть1); ТабДок.Вывести(ОбластьТабличнаяЧасть1); КонецЦикла; Может есть другие варианты реализации расписания? При работе в форме не эффективно используются подобные метода, как сделать правильней? //Операции с количеством дней, плюс или минус день Если Элемент.ТекущаяКолонка.Имя="Первое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Первое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Второе" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Второе); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Третье" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Третье); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Четвертое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Четвертое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Пятое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Пятое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Шестое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Шестое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Седьмое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Седьмое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Восьмое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Восьмое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Девятое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Девятое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Десятое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Десятое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Одиннадцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Одиннадцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Двенадцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Двенадцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Тринадцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Тринадцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Четырнадцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Четырнадцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Пятнадцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Пятнадцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Шестнадцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Шестнадцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Семьнадцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Семьнадцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Восемнадцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Восемнадцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Девятнадцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Девятнадцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Двадцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Двадцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьПервое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьПервое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьВторое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьВторое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьТретье" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьТретье); ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьЧетвертое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьЧетвертое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьПятое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьПятое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьШестое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьШестое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьСедьмое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьСедьмое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьВосьмое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьВосьмое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьДевятое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьДевятое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Тридцатое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Тридцатое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="ТридцатьПервое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.ТридцатьПервое); КонецЕсли; |
|||
1
HeKrendel
15.08.19
✎
09:02
|
Вот это овно код
|
|||
2
Случайный прохожий
15.08.19
✎
09:05
|
Студенты конфу разрабатывали? :)
|
|||
3
HeKrendel
15.08.19
✎
09:06
|
Да и судя по коду забыли код на проверку типа года?
еще 4 если, и по месяцу, это еще 12 если ;-) |
|||
4
Guerro
15.08.19
✎
09:10
|
(3) (2) (1) посмотрел бы на ваши первые строки кода
|
|||
5
Случайный прохожий
15.08.19
✎
09:34
|
Можно было бы посоветовать выделять области-ячейки и отдельно закрашивать каждую после вывода строки, но я бы лучше не выводил сразу строку, а присоединял бы ячейки справа при помощи метода "Присоединить". А в макете просто создай два поля (для закрашенных и не закрашенных ячеек). Это более правильно, т.к. не во всех месяцах 31 день.
|
|||
6
mikecool
15.08.19
✎
09:37
|
(0)
попробуй лапшу Если Элемент.ТекущаяКолонка.Имя="Первое" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Первое); ИначеЕсли Элемент.ТекущаяКолонка.Имя="Второе" Тогда ДеньПриИзменении(Элемент.ТекущиеДанные.Второе); заменить на ДеньПриИзменении(Элемент.ТекущиеДанные[Элемент.ТекущаяКолонка.Имя]) |
|||
7
Guerro
15.08.19
✎
10:07
|
(5) Спасибо, попробую
|
|||
8
Guerro
15.08.19
✎
10:09
|
(6) это безумно сократило код и сделало его правильным, спасибо большое
|
|||
9
Guerro
15.08.19
✎
10:18
|
Как в ячейках значение булево заменить на закрашенные по определенному значению? вот цикл по области:
Для Каждого ТекСтрокаТабличнаяЧасть1 Из ТабличнаяЧасть1 Цикл ОбластьТабличнаяЧасть1.Параметры.Заполнить(ТекСтрокаТабличнаяЧасть1); ТабДок.Вывести(ОбластьТабличнаяЧасть1); КонецЦикла; http://vfl.ru/fotos/cdc216ba27546344.html |
|||
10
Guerro
15.08.19
✎
10:58
|
Сделал так, но краситься вся колонка под значением истина:
Цвет = Новый Цвет(255,0,0); Для Каждого ТекСтрокаТабличнаяЧасть1 Из ТабличнаяЧасть1 Цикл Колонка=1; ОбластьТабличнаяЧасть1.Параметры.Бригада=ТекСтрокаТабличнаяЧасть1.Бригада; ОбластьТабличнаяЧасть1.Параметры.Сотрудник=ТекСтрокаТабличнаяЧасть1.Сотрудник; ОбластьТабличнаяЧасть1.Параметры.КоличествоДней=ТекСтрокаТабличнаяЧасть1.КоличествоДней; Для каждого Ячейка Из ТекСтрокаТабличнаяЧасть1 Цикл Если ТипЗнч(Ячейка)=Тип("Булево") и Ячейка=Истина тогда ОбластьТабличнаяЧасть1.Область(1,Колонка,1,Колонка).ЦветФона=Цвет; КонецЕсли; Колонка=Колонка+1; КонецЦикла; //ОбластьТабличнаяЧасть1.Параметры.Заполнить(ТекСтрокаТабличнаяЧасть1); ТабДок.Вывести(ОбластьТабличнаяЧасть1); КонецЦикла; |
|||
11
Guerro
15.08.19
✎
11:00
|
||||
12
bootini
15.08.19
✎
12:13
|
Если ТипЗнч(Ячейка)=Тип("Булево") и Ячейка=Истина тогда
ОбластьТабличнаяЧасть1.Область(1,Колонка,1,Колонка).ЦветФона=Цвет; Иначе ОбластьТабличнаяЧасть1.Область(1,Колонка,1,Колонка).ЦветФона= Белый; КонецЕсли; |
|||
13
Guerro
15.08.19
✎
12:26
|
(12) Спасибо большое. все, тема закрыта
|
|||
14
HeKrendel
15.08.19
✎
12:48
|
(4) Вряд ли ты посмотришь на мой код вообще ;-)
|
|||
15
HeKrendel
15.08.19
✎
12:51
|
Но обычно когда ты повторяешь код свой 2, 3-й раз, обычно сразу надо задумываться что алгоритм не правильный, или правильный но не оптимальный
|
|||
16
piter3
15.08.19
✎
12:51
|
Мне бы лень было писать)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |