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


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 человек.
Рекламное место пустует