Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Составление расписания дневной смены 5 бригад.

Составление расписания дневной смены 5 бригад.
Я
   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);
    КонецЦикла;
Может есть другие варианты реализации расписания?
При работе в форме не эффективно используются подобные метода, как сделать правильней?
//Операции с количеством дней, плюс или минус день
Если Элемент.ТекущаяКолонка.Имя="Первое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Первое);
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Второе" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Второе);
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Третье" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Третье);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Четвертое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Четвертое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Пятое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Пятое);         
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Шестое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Шестое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Седьмое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Седьмое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Восьмое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Восьмое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Девятое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Девятое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Десятое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Десятое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Одиннадцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Одиннадцатое);
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Двенадцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Двенадцатое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Тринадцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Тринадцатое);         
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Четырнадцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Четырнадцатое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Пятнадцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Пятнадцатое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Шестнадцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Шестнадцатое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Семьнадцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Семьнадцатое);         
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Восемнадцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Восемнадцатое);
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Девятнадцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Девятнадцатое);
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Двадцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Двадцатое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьПервое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьПервое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьВторое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьВторое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьТретье" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьТретье);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьЧетвертое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьЧетвертое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьПятое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьПятое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьШестое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьШестое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьСедьмое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьСедьмое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьВосьмое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьВосьмое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="ДвадцатьДевятое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.ДвадцатьДевятое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="Тридцатое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.Тридцатое);        
    ИначеЕсли Элемент.ТекущаяКолонка.Имя="ТридцатьПервое" Тогда
        ДеньПриИзменении(Элемент.ТекущиеДанные.ТридцатьПервое);    
    КонецЕсли;
 
 
   HeKrendel
 
1 - 15.08.19 - 09:02
Вот это овно код
   Случайный прохожий
 
2 - 15.08.19 - 09:05
Студенты конфу разрабатывали? :)
   HeKrendel
 
3 - 15.08.19 - 09:06
Да и судя по коду забыли код на проверку типа года?

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.