Изменение модуля документа "Табель отработанного времени"
По теме из базы знаний
- Пример решения расчетной задачи с табелем (для 1С:Специалист)
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Учет по проектам в 1С:Бухгалтерия 3.0
- Задачи по доработке типовых решений. ЗУП 3.1. Доработка выплаты аванса фиксированной суммой, проверка на отработанное время. Вывод предупреждения как в ЗУП 2.5
- Пример технического описания сложной задачи в ЗУП
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
в (1)вы поставили вопрос: - вот вам и подсказывают как в табличную часть добавить новые строки не удаляя старых, а вы по ходу меняете вопрос - т.е теперь вам надо в строках табличной части у уже внесенных сотрудников добавить еще дополнительный ТипЧасов или я что-то не так понял....
Подскажите пожалуйста что нужно изменить в модуле документа Табель учета рабочего времени, чтобы при выполнении Процедуры Заполнить() предыдущие данные из табличной части не удалялись
Если КоличествоСтрок()>0 Тогда
Если Вопрос("Перед заполнением список сотрудников будет очищен."
"Продолжить?","Да+Нет")="Нет" Тогда
Возврат
КонецЕсли;
КонецЕсли;
Если ответ положительный, тогда выполняется
ЗагрузитьТабличнуюЧасть(Параметры);
Правильно, но перед этим идет очистка табличной части, т.е. если я скопировала процедуру и создала новую кнопку, то при выполнении процедуры пред. данные очищаются, а мне нужно чтобы они оставались и добавлялись новые автоматически.
Наталья anbxp имел ввиду что вместо ЗагрузитьТабличнуюЧасть() которая очищает ТЧ. Необходимо написать самому код по заполнению ТЧ..типа:
Но если честно не вижу ни одной причины изменять код. Можно заполнение настроить правильным распределениям по группам или замечательно все заполняется по подразделениям!!!
Параметры.ВыбратьСтроки()
Пока Параметры.ПолучитьСтроку()=1 Цикл
\\тут добавляем строку в ТЧ и заполняем сотрудника
КонецЦикла
Но если честно не вижу ни одной причины изменять код. Можно заполнение настроить правильным распределениям по группам или замечательно все заполняется по подразделениям!!!
Подразделения тут совсем не причем. я бы и рада, просто у каждого сотрудника свой график с 3-мя видами часов и 1200 сотрудников, требуют чтобы все было нажатием 3 кнопок или одной. Помогите кто-нибудь извернуться.....
Я пробовала изменять часы, на Вечерние, тогда заполняет только вечерние, пробовала добавлять Вечерние, пишет слишком много параметров, пробовала добавлять Перечисления и тип часов, в этом случае он заполняет табличную часть последним видом часов по сотрудникам.
Процедура Заполнить()
Если КоличествоСтрок()>0 Тогда
Если Вопрос("Перед заполнением список сотрудников будет очищен."
"Продолжить?","Да+Нет")="Нет" Тогда
Возврат
КонецЕсли;
КонецЕсли;
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.Установить("ДатаАктуальности", ДатаПериода);
Параметры.Установить("Идентификатор","_ФИЛЬТР_"+Вид()+"_"+НомерДок+"_"+ДатаДок);
ОткрытьФормуМодально("Обработка.ЗаполнитьСписокСотрудников",Параметры);
Если ТипЗначенияСтр(Параметры)="ТаблицаЗначений" Тогда
Параметры.НоваяКолонка("ТипЧасов");
Сч = 1;
Пока Сч <= Параметры.КоличествоСтрок() Цикл
СотрудникИзТаблицы = Параметры.ПолучитьЗначение(Сч, 1);
ФормаТруда = СотрудникИзТаблицы.ФормаТруда.Получить(ДатаПериода);
Если (ФормаТруда = Перечисление.ФормыТруда.ТабельПодневнОклад) или
(ФормаТруда = Перечисление.ФормыТруда.ТабельПочасОклад) или
(ФормаТруда = Перечисление.ФормыТруда.ТабельПочасТариф) тогда
Параметры.УстановитьЗначение(Сч, "ТипЧасов",Перечисление.ТипыЧасов.Основные);
Сч = Сч+1;
Продолжить;
Иначе
Параметры.УдалитьСтроку(Сч);
КонецЕсли;
КонецЦикла;
Параметры.ВыбратьСтроки()
Пока Параметры.ПолучитьСтроку()=1 Цикл
НоваяСтрока();
Сотрудник = Параметры.Сотрудник;
//все что в параметрах можно запихать
КонецЦикла
//ЗагрузитьТабличнуюЧасть(Параметры);
ЗаполнитьГрафиками();
КонецЕсли;
КонецПроцедуры // Заполнить
Показать
это значит: в отладчике установите точку останова на строке и отттрассируйте и посмотрите что еще есть в возвращенной таблице Параметры. или заремьте строку и посмотрите что попадает в табличную часть еще кроме сотрудника, если больше ничего, убберите ремы со строки и больше ничего не делайте - все должно получиться
Сотрудник = Параметры.Сотрудник;
ЗаполнитьГрафиками();
ЗаполнитьГрафиками();
Параметры.УстановитьЗначение(Сч, "ТипЧасов",Перечисление.ТипыЧасов.Основные); Вот в этой строке один вид часов, его и заполняет, по всем сотрудникам, на этом все заканчиватся, в Обработке Списка сотрудников нет вообще упоминаний о Типах Часов. Если в этой строке я указываю Ночные вместо Основные, то заполняются все ночные и т.д.
Похоже на лень обыкновенную, ну да ладно:)
P.S. Добровольные пожертвования принимаются:)
Процедура Заполнить()
Если КоличествоСтрок()>0 Тогда
Если Вопрос("Перед заполнением список сотрудников будет очищен."
"Продолжить?","Да+Нет")="Нет" Тогда
Возврат
КонецЕсли;
КонецЕсли;
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.Установить("ДатаАктуальности", ДатаПериода);
Параметры.Установить("Идентификатор","_ФИЛЬТР_"+Вид()+"_"+НомерДок+"_"+ДатаДок);
ОткрытьФормуМодально("Обработка.ЗаполнитьСписокСотрудников",Параметры);
Если ТипЗначенияСтр(Параметры)="ТаблицаЗначений" Тогда
Параметры.НоваяКолонка("ТипЧасов");
Сч = 1;
Пока Сч <= Параметры.КоличествоСтрок() Цикл
СотрудникИзТаблицы = Параметры.ПолучитьЗначение(Сч, 1);
ФормаТруда = СотрудникИзТаблицы.ФормаТруда.Получить(ДатаПериода);
Если (ФормаТруда = Перечисление.ФормыТруда.ТабельПодневнОклад) или
(ФормаТруда = Перечисление.ФормыТруда.ТабельПочасОклад) или
(ФормаТруда = Перечисление.ФормыТруда.ТабельПочасТариф) тогда
Параметры.УстановитьЗначение(Сч, "ТипЧасов",Перечисление.ТипыЧасов.Основные);
Сч = Сч+1;
Продолжить;
Иначе
Параметры.УдалитьСтроку(Сч);
КонецЕсли;
КонецЦикла;
//ЗагрузитьТабличнуюЧасть(Параметры);
УдалитьСтроки();
Параметры.ВыбратьСтроки();
Пока Параметры.ПолучитьСтроку() = 1 Цикл
НоваяСтрока();
Сотрудник = Параметры.Сотрудник;
ТипЧасов = Параметры.ТипЧасов;
НоваяСтрока();
Сотрудник = Параметры.Сотрудник;
ТипЧасов = Перечисление.ТипыЧасов.Вечерние;
НоваяСтрока();
Сотрудник = Параметры.Сотрудник;
ТипЧасов = Перечисление.ТипыЧасов.Ночные;
КонецЦикла;
ЗаполнитьГрафиками();
//Теперь, если хотим, можно зачистить ТЧ от пустых строк
инд = КоличествоСтрок();
Пока инд > 0 Цикл
ПолучитьСтрокуПоНомеру(инд);
Если ВсегоЧасов = 0 Тогда
УдалитьСтроку();
КонецЕсли;
инд = инд - 1;
КонецЦикла;
КонецЕсли;
КонецПроцедуры // Заполнить
ПоказатьP.S. Добровольные пожертвования принимаются:)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот