Имя: Пароль:
1C
1С v8
Составление расписания дневной смены 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
Мне бы лень было писать)