Изменение модуля документа "Табель отработанного времени"

1. skalapendra 18.02.09 17:57 Сейчас в теме
Подскажите пожалуйста что нужно изменить в модуле документа Табель учета рабочего времени, чтобы при выполнении Процедуры Заполнить() предыдущие данные из табличной части не удалялись.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
28. seermak 665 19.02.09 18:55 Сейчас в теме
в (1)вы поставили вопрос:
Подскажите пожалуйста что нужно изменить в модуле документа Табель учета рабочего времени, чтобы при выполнении Процедуры Заполнить() предыдущие данные из табличной части не удалялись
- вот вам и подсказывают как в табличную часть добавить новые строки не удаляя старых, а вы по ходу меняете вопрос - т.е теперь вам надо в строках табличной части у уже внесенных сотрудников добавить еще дополнительный ТипЧасов или я что-то не так понял....
2. Душелов 4021 18.02.09 19:17 Сейчас в теме
Закомментировать или удалить ту строку, в которой идет очистка, возможно
ТабЧасть.УдалитьСтроки() или .ОчиститьВсе(), что-то подобное в процедуре заполнения.
3. skalapendra 19.02.09 13:59 Сейчас в теме
В том то и дело что определить эту строку я не могу. В процедуре заполнения никаких очистить, удалить, ничего подобного нет.
4. anbxp 19.02.09 15:00 Сейчас в теме
Если КоличествоСтрок()>0 Тогда
		Если Вопрос("Перед заполнением список сотрудников будет очищен."
					"Продолжить?","Да+Нет")="Нет" Тогда
			Возврат
		КонецЕсли;
	КонецЕсли;

Если ответ положительный, тогда выполняется
ЗагрузитьТабличнуюЧасть(Параметры);
5. skalapendra 19.02.09 15:16 Сейчас в теме
Правильно, но перед этим идет очистка табличной части, т.е. если я скопировала процедуру и создала новую кнопку, то при выполнении процедуры пред. данные очищаются, а мне нужно чтобы они оставались и добавлялись новые автоматически.
6. anbxp 19.02.09 15:20 Сейчас в теме
Так эта ЗагрузитьТабличнуюЧасть() и очищает. Замените ее на ВыбратьСтроки(), НоваяСтрока()
7. skalapendra 19.02.09 15:29 Сейчас в теме
В этом случае придется опять же заносить всех сотрудников с их часами вручную, а необходимо это сделать автоматически
8. anbxp 19.02.09 15:36 Сейчас в теме
? Что вручную? При таком подходе предыдущие строки удаляться не будут. Вопрос в этом был?
9. WiseSnake 1521 19.02.09 15:53 Сейчас в теме
Наталья anbxp имел ввиду что вместо ЗагрузитьТабличнуюЧасть() которая очищает ТЧ. Необходимо написать самому код по заполнению ТЧ..типа:
Параметры.ВыбратьСтроки()
Пока Параметры.ПолучитьСтроку()=1 Цикл
    \\тут добавляем строку в ТЧ и заполняем сотрудника
КонецЦикла

Но если честно не вижу ни одной причины изменять код. Можно заполнение настроить правильным распределениям по группам или замечательно все заполняется по подразделениям!!!
10. skalapendra 19.02.09 16:20 Сейчас в теме
Подразделения тут совсем не причем. я бы и рада, просто у каждого сотрудника свой график с 3-мя видами часов и 1200 сотрудников, требуют чтобы все было нажатием 3 кнопок или одной. Помогите кто-нибудь извернуться.....
14. WiseSnake 1521 19.02.09 16:37 Сейчас в теме
(10) насколько я помню ЗиК это все отрабатывает и все заполняет... Может вам стоит лучше разобраться что и когда заполняется??
11. skalapendra 19.02.09 16:22 Сейчас в теме
У меня у Иванова- дневные, вечерние. ночные, и т.д. у всеххх!!!!!
12. skalapendra 19.02.09 16:24 Сейчас в теме
Да, удаляться не будут, а вот автоматическое заполнение пропадет.....((HELP
13. WiseSnake 1521 19.02.09 16:35 Сейчас в теме
15. anbxp 19.02.09 16:39 Сейчас в теме
Тут проблема, как я понимаю, в том, что по Заполнить проставляются только основные часы ("Всего отработано времени")
16. skalapendra 19.02.09 16:52 Сейчас в теме
Совершенно точно, заполняются только основные часы, а у меня еще у сотрудников по 2 видв часов в графиках, вот их то и приходится дополнять подбором
17. skalapendra 19.02.09 16:55 Сейчас в теме
Я пробовала изменять часы, на Вечерние, тогда заполняет только вечерние, пробовала добавлять Вечерние, пишет слишком много параметров, пробовала добавлять Перечисления и тип часов, в этом случае он заполняет табличную часть последним видом часов по сотрудникам.
18. anbxp 19.02.09 16:56 Сейчас в теме
Так с этого и надо было начинать:)
19. skalapendra 19.02.09 16:56 Сейчас в теме
Товарищи специалисты!Помогите пожалуйста, а то приближается расчетный период, и дело близится к моему расстрелу......
20. skalapendra 19.02.09 16:58 Сейчас в теме
Вероятно я немного невнятно объяснила причину, но это всего лишь стресс, перед растрельной стенкой....
21. seermak 665 19.02.09 18:05 Сейчас в теме
Процедура Заполнить()
	Если КоличествоСтрок()>0 Тогда
		Если Вопрос("Перед заполнением список сотрудников будет очищен."
					"Продолжить?","Да+Нет")="Нет" Тогда
		Возврат
		КонецЕсли;
	КонецЕсли;
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.Установить("ДатаАктуальности", ДатаПериода);
Параметры.Установить("Идентификатор","_ФИЛЬТР_"+Вид()+"_"+НомерДок+"_"+ДатаДок);
ОткрытьФормуМодально("Обработка.ЗаполнитьСписокСотрудников",Параметры);
	Если ТипЗначенияСтр(Параметры)="ТаблицаЗначений" Тогда
	Параметры.НоваяКолонка("ТипЧасов");
	Сч = 1;
	   Пока Сч <= Параметры.КоличествоСтрок() Цикл
		СотрудникИзТаблицы = Параметры.ПолучитьЗначение(Сч, 1);
		ФормаТруда = СотрудникИзТаблицы.ФормаТруда.Получить(ДатаПериода);
			Если (ФормаТруда = Перечисление.ФормыТруда.ТабельПодневнОклад) или 
				  (ФормаТруда = Перечисление.ФормыТруда.ТабельПочасОклад) или
				  (ФормаТруда = Перечисление.ФормыТруда.ТабельПочасТариф) тогда
			Параметры.УстановитьЗначение(Сч, "ТипЧасов",Перечисление.ТипыЧасов.Основные);
			Сч = Сч+1;
			Продолжить;
			Иначе
			Параметры.УдалитьСтроку(Сч);
			КонецЕсли;
		КонецЦикла;
   
	Параметры.ВыбратьСтроки() 
      Пока Параметры.ПолучитьСтроку()=1 Цикл 
      НоваяСтрока();
		Сотрудник = Параметры.Сотрудник;
		//все что в параметрах можно запихать 
      КонецЦикла
		//ЗагрузитьТабличнуюЧасть(Параметры);
   ЗаполнитьГрафиками();
	КонецЕсли;
КонецПроцедуры	// Заполнить
Показать
22. skalapendra 19.02.09 18:21 Сейчас в теме
//все что в параметрах можно запихать Это что? Простите за глупый вопрос, это например
Параметры.УстановитьЗначение(Сч, "ТипЧасов",Перечисление.ТипыЧасов.Вечерние);Я правильно понимаю?
24. seermak 665 19.02.09 18:29 Сейчас в теме
(22) Параметры - это таблица значений, возвращенная вам из модальной формы выбора сотрудников "("Обработка.ЗаполнитьСписокСотрудников")
23. seermak 665 19.02.09 18:26 Сейчас в теме
это значит: в отладчике установите точку останова на строке
Сотрудник = Параметры.Сотрудник; 
и отттрассируйте и посмотрите что еще есть в возвращенной таблице Параметры. или заремьте строку
ЗаполнитьГрафиками(); 
и посмотрите что попадает в табличную часть еще кроме сотрудника, если больше ничего, убберите ремы со строки
ЗаполнитьГрафиками(); 
и больше ничего не делайте - все должно получиться
25. skalapendra 19.02.09 18:41 Сейчас в теме
Ничего не могу сделать с отладчиком, он сразу зависает, а в программе ничего не происходит, заполняет всех сотрудников с основными часами(
26. skalapendra 19.02.09 18:46 Сейчас в теме
Параметры.УстановитьЗначение(Сч, "ТипЧасов",Перечисление.ТипыЧасов.Основные); Вот в этой строке один вид часов, его и заполняет, по всем сотрудникам, на этом все заканчиватся, в Обработке Списка сотрудников нет вообще упоминаний о Типах Часов. Если в этой строке я указываю Ночные вместо Основные, то заполняются все ночные и т.д.
27. anbxp 19.02.09 18:55 Сейчас в теме
Похоже на лень обыкновенную, ну да ладно:)
Процедура Заполнить()

	Если КоличествоСтрок()>0 Тогда
		Если Вопрос("Перед заполнением список сотрудников будет очищен."
					"Продолжить?","Да+Нет")="Нет" Тогда
			Возврат
		КонецЕсли;
	КонецЕсли;
	Параметры = СоздатьОбъект("СписокЗначений");
	Параметры.Установить("ДатаАктуальности", ДатаПериода);
	Параметры.Установить("Идентификатор","_ФИЛЬТР_"+Вид()+"_"+НомерДок+"_"+ДатаДок);
	ОткрытьФормуМодально("Обработка.ЗаполнитьСписокСотрудников",Параметры);
	Если ТипЗначенияСтр(Параметры)="ТаблицаЗначений" Тогда
		Параметры.НоваяКолонка("ТипЧасов");
		Сч = 1;
		Пока Сч <= Параметры.КоличествоСтрок() Цикл
			СотрудникИзТаблицы = Параметры.ПолучитьЗначение(Сч, 1);
			ФормаТруда = СотрудникИзТаблицы.ФормаТруда.Получить(ДатаПериода);
			Если (ФормаТруда = Перечисление.ФормыТруда.ТабельПодневнОклад) или 
				 (ФормаТруда = Перечисление.ФормыТруда.ТабельПочасОклад) или
				 (ФормаТруда = Перечисление.ФормыТруда.ТабельПочасТариф) тогда
				Параметры.УстановитьЗначение(Сч, "ТипЧасов",Перечисление.ТипыЧасов.Основные);
				Сч = Сч+1;
			 	Продолжить;
			Иначе
				Параметры.УдалитьСтроку(Сч);
			КонецЕсли;
		КонецЦикла;

		//ЗагрузитьТабличнуюЧасть(Параметры);
		УдалитьСтроки();
		Параметры.ВыбратьСтроки();
		Пока Параметры.ПолучитьСтроку() = 1 Цикл
			НоваяСтрока();
			Сотрудник	= Параметры.Сотрудник;
			ТипЧасов	= Параметры.ТипЧасов;
			НоваяСтрока();
			Сотрудник	= Параметры.Сотрудник;
			ТипЧасов	= Перечисление.ТипыЧасов.Вечерние;
			НоваяСтрока();
			Сотрудник	= Параметры.Сотрудник;
			ТипЧасов	= Перечисление.ТипыЧасов.Ночные;
		КонецЦикла;	
	    ЗаполнитьГрафиками();
		
		//Теперь, если хотим, можно зачистить ТЧ от пустых строк
		инд = КоличествоСтрок();
		Пока инд > 0 Цикл
			ПолучитьСтрокуПоНомеру(инд);
			Если ВсегоЧасов = 0 Тогда
				УдалитьСтроку();
			КонецЕсли;	
			инд = инд - 1;
		КонецЦикла;	
	КонецЕсли;

КонецПроцедуры	// Заполнить
Показать

P.S. Добровольные пожертвования принимаются:)
Serg1970; +1 Ответить
29. skalapendra 20.02.09 10:14 Сейчас в теме
Нет Сергей вы меня не поняли, мне надо чтобы в таблицу автоматически входили все часы сотрудника. Не одной строкой, а хоть 5, но автоматически по списку всех сотрудников
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот