Имя: Пароль:
1C
1С v8
Табель сотрудников ЗУП 3.1
0 Staler1
 
12.03.18
06:56
Подскажите как сделать заполнение в определенный столбец.
http://ibb.co/ehFwYH

заполняется на данный момент так
http://ibb.co/nsMyfx


Код который заполняет;


Процедура ВывестиДанныеПоСотруднику(ДокументРезультат, ОбластьДанныеОВремени, ОбластьШапкаТаблицы, ДанныеПоСотруднику, ТекущийЛист)
    ИмяПоляБуквенныйКод = ИмяПоляБуквенныйКод();
    
    
    НастройкиПечатныхФорм = ЗарплатаКадрыПовтИсп.НастройкиПечатныхФорм();
    КоличествоПараметров = ОбластьДанныеОВремени.Параметры.Количество();
    
    Для ИндексПараметра = 0 По КоличествоПараметров - 1 Цикл  
        ОбластьДанныеОВремени.Параметры.Установить(ИндексПараметра, Неопределено);
    КонецЦикла;    
    
    ВидВремениВыходной = ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.ВыходныеДни");
    ВидВремениКомандировка = ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.Командировка");
    
    ОтработаноДнейЗаПервуюПоловинуМесяца = 0;
    ОтработаноЧасовЗаВторуюПоловинуМесяца = 0;
    ОтработаноДнейЗаВторуюПоловинуМесяца = 0;
    ОтработаноЧасовЗаПервуюПоловинуМесяца = 0;
    ОтработаноДнейЗаМесяц = 0;
    ОтработаноЧасовЗаМесяц = 0;
    
    СтруктураФИО = Новый Структура("Фамилия,Имя,Отчество");
    СтруктураФИО.Фамилия = ДанныеПоСотруднику.Фамилия;
    СтруктураФИО.Имя = ДанныеПоСотруднику.Имя;
    СтруктураФИО.Отчество = ДанныеПоСотруднику.Отчество;
    
    Если НастройкиПечатныхФорм.ВыводитьПолныеФИОВСписочныхПечатныхФормах Тогда
        
        ФИО = СтруктураФИО.Фамилия + ?(ПустаяСтрока(СтруктураФИО.Имя), "", " " + СтруктураФИО.Имя
            + ?(ПустаяСтрока(СтруктураФИО.Отчество), "", " " + СтруктураФИО.Отчество))
        
    Иначе
        
        ФИО = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы(СтруктураФИО);
            
    КонецЕсли;
    
    ОбластьДанныеОВремени.Параметры.Сотрудник = ФИО + "
                                            |(" + ДанныеПоСотруднику.ДолжностьНаименование + ")";    
                                            
    ОбластьДанныеОВремени.Параметры.ТабельныйНомер = ДанныеПоСотруднику.СотрудникКод;    
    
    ОбластьДанныеОВремени.Параметры.НомерПП = ДанныеПоСотруднику.СистемныеПоляНомерПоПорядкуВГруппировке;    

    ОтклоненияПоСотруднику = Новый ТаблицаЗначений;
    ОтклоненияПоСотруднику.Колонки.Добавить("ВидВремени");
    ОтклоненияПоСотруднику.Колонки.Добавить("БуквенныйКод");
    ОтклоненияПоСотруднику.Колонки.Добавить("ЦыфровойКод");
    ОтклоненияПоСотруднику.Колонки.Добавить("Часов");
    ОтклоненияПоСотруднику.Колонки.Добавить("Дней");
    
    Для Каждого ДанныеОВремениНаДату Из ДанныеПоСотруднику.Строки Цикл
        
        Если День(ДанныеОВремениНаДату.Дата) <= 15 Тогда
            ОтработаноДнейЗаПервуюПоловинуМесяца = ОтработаноДнейЗаПервуюПоловинуМесяца + ДанныеОВремениНаДату.РабочиеДни;
            ОтработаноЧасовЗаПервуюПоловинуМесяца = ОтработаноЧасовЗаПервуюПоловинуМесяца + ДанныеОВремениНаДату.РабочиеЧасы;
        Иначе
            ОтработаноЧасовЗаВторуюПоловинуМесяца = ОтработаноЧасовЗаВторуюПоловинуМесяца + ДанныеОВремениНаДату.РабочиеЧасы;
            ОтработаноДнейЗаВторуюПоловинуМесяца = ОтработаноДнейЗаВторуюПоловинуМесяца + ДанныеОВремениНаДату.РабочиеДни;
        КонецЕсли;
        
        ОтработаноДнейЗаМесяц = ОтработаноДнейЗаМесяц + ДанныеОВремениНаДату.РабочиеДни;
        ОтработаноЧасовЗаМесяц = ОтработаноЧасовЗаМесяц + ДанныеОВремениНаДату.РабочиеЧасы;

        ПредставлениеВидовВремени = "";
        ЧасыПоВидамВремениСтрока = "";
        
        КоличествоЗаписейНаДату = 0;
        ЭтоКомандировка = Ложь;
        
        Для Каждого ДетальныеЗаписиЗаДень Из ДанныеОВремениНаДату.Строки Цикл
            Если Не ДетальныеЗаписиЗаДень.ВидУчетаВремениРабочееВремя
                И ДетальныеЗаписиЗаДень.ВидУчетаВремени <> ВидВремениВыходной
                И ДетальныеЗаписиЗаДень.ВидУчетаВремениОсновноеВремя <> Справочники.ВидыИспользованияРабочегоВремени.ПустаяСсылка() Тогда
                
                ОтклоненияПоВидуВремени = ОтклоненияПоСотруднику.Добавить();
                
                ОтклоненияПоВидуВремени.ВидВремени = ДетальныеЗаписиЗаДень.ВидУчетаВремени;
                ОтклоненияПоВидуВремени.БуквенныйКод = ДетальныеЗаписиЗаДень[ИмяПоляБуквенныйКод];
                ОтклоненияПоВидуВремени.ЦыфровойКод = ДетальныеЗаписиЗаДень[ИмяПоляБуквенныйКод];
                        ОтклоненияПоВидуВремени.Дней = 1;
                Если ДанныеОВремениНаДату.Строки.Количество() > 1 Тогда
                    ОтклоненияПоВидуВремени.Часов = ДетальныеЗаписиЗаДень.Часы;        
                Иначе     
                    ОтклоненияПоВидуВремени.Часов = ДанныеОВремениНаДату.Часы;
                КонецЕсли;    
                    
            КонецЕсли;
            
            ПредставлениеВидовВремени = ПредставлениеВидовВремени + "/"+  ДетальныеЗаписиЗаДень[ИмяПоляБуквенныйКод];
            
            
            Если Не ДетальныеЗаписиЗаДень.ВидУчетаВремениЦелосменное Тогда
                ЧасыПоВидамВремениСтрока = ЧасыПоВидамВремениСтрока +  "/" + Формат(ДетальныеЗаписиЗаДень.Часы, "ЧГ=");
            КонецЕсли;            
            
            КоличествоЗаписейНаДату = КоличествоЗаписейНаДату + 1;
            
            Если ДетальныеЗаписиЗаДень.ОсновноеВремя = ВидВремениКомандировка Тогда
                ЭтоКомандировка = Истина;
            КонецЕсли;    
        КонецЦикла;    
        
        Если КоличествоЗаписейНаДату = 1
            И ЭтоКомандировка Тогда
            
            ЧасыПоВидамВремениСтрока = "";
        КонецЕсли;    

                        
        НомерДня = День(ДетальныеЗаписиЗаДень.Дата);
        
                ОбластьДанныеОВремени.Параметры.ДниЗаМесяц = ОтработаноДнейЗаМесяц;
        ОбластьДанныеОВремени.Параметры.ЧасыЗаМесяц = ОтработаноЧасовЗаМесяц;
        
        
        ОтклоненияПоСотруднику.Свернуть("ВидВремени,ЦыфровойКод, БуквенныйКод", "Дней, Часов");
                СчетчикОтклонений =1;
        Для Каждого ОтклонениеПоВидуВремени Из ОтклоненияПоСотруднику Цикл
            Если СчетчикОтклонений >1 Тогда
                            Прервать;
            КонецЕсли;
            
            ОбластьДанныеОВремени.Параметры["НеявкаКод" + СчетчикОтклонений] = ОтклонениеПоВидуВремени.БуквенныйКод;
            ОбластьДанныеОВремени.Параметры["НеявкаДниЧасы" + СчетчикОтклонений] = Формат(ОтклонениеПоВидуВремени.Дней, "ЧГ=") +
                ?(ОтклонениеПоВидуВремени.Часов > 0, "(" + Формат(ОтклонениеПоВидуВремени.Часов, "ЧГ=") + ")", "");
            СчетчикОтклонений = СчетчикОтклонений + 1;
            
КонецЦикла;
    
    ВывестиОбласть(ДокументРезультат, ТекущийЛист, ОбластьДанныеОВремени, ОбластьДанныеОВремени);    
КонецПроцедуры
1 Staler1
 
12.03.18
06:59
Пробывал на каждую таблицу свой цикл Создавать, в результате получалось не так как надо, если сможете подскажите как мне сделать, чтобы если есть данные под определенную таблицу то заполнит ее иначе идет дальше.
2 RomaH
 
naïve
12.03.18
07:54
(0) оформи вопрос свой
у тебя не обозначена проблема - от слова "совсем"

помни - правильно заданный вопрос содержит 80% ответа
3 SleepyHead
 
гуру
12.03.18
08:31
(2) Первое слово в комментарии (1) говорит о том, что надо начинать с фундаментальных вещей.
4 Staler1
 
12.03.18
09:17
(2) я написал в (1) сообщении , что делал
5 RomaH
 
naïve
12.03.18
09:30
(4) "в результате получалось не так как надо" - ну зая...
6 Масянька
 
12.03.18
09:34
(0) ЕГЭ сдавал?
7 Staler1
 
12.03.18
09:54
(6) причем тут это?!
8 Масянька
 
12.03.18
09:59
(7) Ошибок (по русскому) много... Понятно, что ошибки есть практически всегда, но что-то в последнее время слишком много...
Только не надо утверждать, что это тут ни при чем.
9 Staler1
 
12.03.18
10:02
(8) ошибки ошибками, лучше подскажите как задачу  решить.. могу обработку загрузить..
10 Масянька
 
12.03.18
10:03
(9) См. (3).
11 Масянька
 
12.03.18
10:10
+ (10) У меня складывается ощущение, что систему нужно просто ломать и строить заново...
Уже так привыкли: берем готовое (доклад, сочинение, отчет и пр.), меняем пару абзацев, строк и сдаем...
В результате - имеем фигню... Полную...
12 Staler1
 
12.03.18
10:14
(11) я только начал изучать! совета спросить не у кого, как мне сделать с 0?! как вы все сами начинали изучать?!
13 Staler1
 
12.03.18
10:16
только критику можно услышать, а по делу единицы скажут только.
14 Малыш Джон
 
12.03.18
10:19
(12) у тебя вопрос-то в чем? "Как сделать, чтобы работало  так, как я хочу?"
ты кидаешь кусок кода и говоришь - "разберитесь и скажите мне что неправильно". Как ты думаешь, что тебе в ответ скажут? Ну и ошибки, да. Тоже ведь говорят об уровне
15 Staler1
 
12.03.18
10:37
(14) я прошу готовый код?!код написал для того, чтоб на кофейной гуще не гадать. прошу помощи чтоб направили в правильном русле искать ответ.
16 Малыш Джон
 
12.03.18
10:43
(15) ты ещё и читать не умеешь...
17 Малыш Джон
 
12.03.18
10:43
(15) у тебя вопрос-то в чем?
18 Staler1
 
12.03.18
10:47
(17) как сделать, чтобы заполнялась таблица в определенном порядке, в определенном столбце?!
19 Малыш Джон
 
12.03.18
10:49
(18) заполнять её в нужном столбце в нужном порядке, не?

и насколько я понимаю, речь идет о табличном документе, а не о таблице?
20 Малыш Джон
 
12.03.18
10:51
+(19) и насколько  понимаю, есть макет?
21 Staler1
 
12.03.18
10:55
(20) да имеется макет
http://ibb.co/n25N3S
22 Малыш Джон
 
12.03.18
11:00
ну вот например:

Для Каждого ОтклонениеПоВидуВремени Из ОтклоненияПоСотруднику Цикл
            Если СчетчикОтклонений >1 Тогда
                            Прервать;
            КонецЕсли;
            
            ОбластьДанныеОВремени.Параметры["НеявкаКод" + СчетчикОтклонений] = ОтклонениеПоВидуВремени.БуквенныйКод;
            ОбластьДанныеОВремени.Параметры["НеявкаДниЧасы" + СчетчикОтклонений] = Формат(ОтклонениеПоВидуВремени.Дней, "ЧГ=") +
                ?(ОтклонениеПоВидуВремени.Часов > 0, "(" + Формат(ОтклонениеПоВидуВремени.Часов, "ЧГ=") + ")", "");
            СчетчикОтклонений = СчетчикОтклонений + 1;
            
КонецЦикла;

больше одной итерации не происходит
23 Staler1
 
12.03.18
11:20
(22) я знаю что больше одной операции не происходит, я  на каждый столбец создал свой цикл по аналогии.
она заполняет, только надо чтобы заполняла по буквенномуКоду. вот тут самое интересное и в этом у меня не понятки.
24 Малыш Джон
 
12.03.18
11:41
(23) ну в общем, это просто для примера. что у тебя находится в буквенном коде - знаешь только ты, мне телепатию включать лень.
код - не очень хороший, мягко говоря. Видишь - сам запутался. Бери отладчик - и проверяй, почему у тебя работает не так, как задумывалось.
25 SleepyHead
 
гуру
14.03.18
07:21
(13) Так ты начни с дела. Опиши задачу, которую решаешь, опиши требуемый результат, а не заставляй тут людей изображать из себя телепатов.
26 Staler1
 
14.03.18
08:08
(25) Задача состоит в том что имеем табель по неявкам, по скриншотам видно, что у табеля имеется таблица (ДО, ОД, ТО и т.д) она заполняется с помощью Цикла последовательно, мне нужно чтобы заполняло определенную колонку, я вот не знаю как это сделать.. Воборкой это реально реализовать? или как лучше?!
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан