8.х Цикл

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем pal_vas, 19 ноя 2008.

  1. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Таб. часть дока "ТабельУчетаРабочегоВремениОрганизации" состоит из след-х столбцов: 1 сотрудник, 2Вид1, 3Часов1, 4Вид2, 5Часов2,..., Вид31, Часов31.
    таб часть дока."НачислениеЗПОндулин" состоит из столбцов: Сотрудник, Час1,Час2,час3,Больничный,оклад,отпуск,расчет.
    Для перебора таб части "ТабельУчетаРабочегоВремениОрганизации"
    я использую следующий код:

    Т
    Код:
    ЧДокОснования = Поступление.ОтработанноеВремя;
    Для каждого ТекущаяСтрока Из ТЧДокОснования Цикл 
    НоваяСтрока = НачислениеЗП.Добавить();
    НоваяСтрока.Сотрудник = ТекущаяСтрока.Сотрудник;
    Час1 = 0;
    Час2 = 0;
    Час3 = 0;
    Если ТекущаяСтрока.Вид1 = справочники.КлассификаторИспользованияРабочегоВремени.Я ТОГДА
    ЕСЛИ ТекущаяСтрока.Часов1 > 10 тогда 
    час1 = час1 + 8;
    час2 = час2 + 2;
    час3 = ТекущаяСтрока.Часов1 - 10;
    НоваяСтрока.Час1 = час1;
    НоваяСтрока.Час2 = час2;
    НоваяСтрока.Час3 = Час3;
    
    как избавиться от использования такого цикла для каждого столбца Вид№ и часов№, наверняка есть решение, не первый же случай такой....
  2. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Первое чо пришло в голову: Выгрузить все в таблицы значений и организовать внутренний цикл используя номера столбцов.
  3. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Код:
    ТЧДокОснования = Поступление.ОтработанноеВремя;
    Для каждого ТекущаяСтрока Из ТЧДокОснования Цикл 
    НоваяСтрока = НачислениеЗП.Добавить(); 
    НоваяСтрока.Сотрудник = ТекущаяСтрока.Сотрудник;
    Час1 = 0;
    Час2 = 0;
    Час3 = 0;
    Для N = 1 По 31 цикл  
    Если ТекущаяСтрока["Вид"+N] = справочники.КлассификаторИспользованияРабочегоВремени.Я ТОГДА            
    Для M = 1 По 31 цикл
    ЕСЛИ ТекущаяСтрока["Часов"+M] > 10 тогда 
    час1 = час1 + 8;
    час2 = час2 + 2;
    час3 = ТекущаяСтрока["Часов"+M] - 10;
    иначе;
    если ТекущаяСтрока["Часов"+M] > 8  
    и    ТекущаяСтрока["Часов"+M] < 10 тогда
    Час1 = час1 + 8;
    Час2 = ТекущаяСтрока["Часов"+M]-8;
    иначе
    если ТекущаяСтрока["Часов"+M] < 8 тогда                 
    Час1 = ТекущаяСтрока["Часов"+M];    
    конецесли;
    конецесли;
    конецесли;
    конеццикла;
    конецесли;
    КонецЦикла;
    КонецЦикла;
    НоваяСтрока.Час1 = час1;        
    НоваяСтрока.Час2 = час2;        
    НоваяСтрока.Час3 = Час3;
    Для N = 1 По 31 цикл
    Если ТекущаяСтрока["Вид"+N] =  Справочники.КлассификаторИспользованияРабочегоВремени.ОТ Тогда    Для M = 1 По 31 цикл        
    НоваяСтрока.Отпуск = Текущаястрока["Часов"+M];    
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    Для N = 1 По 31 цикл        
    Если ТекущаяСтрока["Вид"+N] = Справочники.КлассификаторИспользованияРабочегоВремени.Б Тогда     НоваяСтрока.Больничный = ТекущаяСтрока.Часов1;
    КонецЕсли;
    КонецЦикла;
    
    
    сделал вот так, но чтото не работает, в чем ошика подскажите :unsure:
  4. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Ребята я ламер ))))
    Разобралси...
    Кому интересно вот код
    Код:
    ТЧДокОснования = Поступление.ОтработанноеВремя;
    Для каждого ТекущаяСтрока Из ТЧДокОснования Цикл 
    НоваяСтрока = НачислениеЗП.Добавить();
    НоваяСтрока.Сотрудник = ТекущаяСтрока.Сотрудник;
    Час1 = 0;
    Час2 = 0;
    Час3 = 0;
    Час11 = 0;
    Час22 = 0;
    Час33 = 0;
    Отпуск = 0;
    Больничный = 0;
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/для')">	Для i=1 по 31 цикл;</span>
    Если ТекущаяСтрока["Вид"+i ]= справочники.КлассификаторИспользованияРабочегоВремени.ОТ тогда
    Отпуск = текущаястрока["часов"+i]+отпуск;
    иначе; 
    если ТекущаяСтрока["Вид"+i] = справочники.КлассификаторИспользованияРабочегоВремени.Б тогда
    больничный = текущаястрока["часов"+i]+больничный;
    иначе;
    если ТекущаяСтрока["Вид"+i]= Справочники.КлассификаторИспользованияРабочегоВремени.Я тогда
    если текущаяСтрока["часов"+i] <=8 тогда
    час11 = текущаястрока["часов"+i]+ час11;
    иначе;
    если ТекущаяСтрока["часов"+i] > 10 тогда
    Час11 = час11 + 8;
    Час22 = час22 + 2;
    час33 =  текущаястрока["часов"+i]-10+ час33;
    иначе;
    Час11 = час11+8;
    час22 = текущаястрока["часов"+i] - 8;
    
    конецесли;
    конецесли;
    конецесли;
    конецесли;
    конецесли;
    конеццикла;
    НоваяСтрока.Отпуск = Отпуск;
    НоваяСтрока.Больничный = Больничный;
    НоваяСтрока.Час1 = Час11;
    НоваяСтрока.Час2 = Час22;
    НоваяСТРОКА.Час3 = Час33;
    

Поделиться этой страницей