Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Табель сотрудников ЗУП 3.1

Табель сотрудников ЗУП 3.1
Я
   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;
            
КонецЦикла;
    
    ВывестиОбласть(ДокументРезультат, ТекущийЛист, ОбластьДанныеОВремени, ОбластьДанныеОВремени);    
КонецПроцедуры
 
 
   Staler1
 
1 - 12.03.18 - 06:59
Пробывал на каждую таблицу свой цикл Создавать, в результате получалось не так как надо, если сможете подскажите как мне сделать, чтобы если есть данные под определенную таблицу то заполнит ее иначе идет дальше.
   RomaH
 
2 - 12.03.18 - 07:54
(0) оформи вопрос свой
у тебя не обозначена проблема - от слова "совсем"

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

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

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

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


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