Книга знаний

1С:Предприятие / v8 / Объекты конфигурации / Регистры

v8: Автоматизировать ввод значений графика работ

Для начисления зарплата регистры расчета используют значения графиков работ (регистр сведений с измерениями "Дата", и обычно еще "ГрафикРаботы". Далее приведен пример, как можно автоматизировать ввод значений значений в этот регистр сведений. Для этого добавляем в форму элемента табличное поле со списком регистра сведений "ГрафикРаботы", и добавляем кнопку заполнить...Автор статьи: Demiurg
Последняя редакция №1 от 12.06.05
URL: http://kb.mista.ru/article.php?id=42

Для начисления зарплата регистры расчета используют значения графиков работ (регистр сведений с измерениями "Дата", и обычно еще "ГрафикРаботы". Далее приведен пример, как можно автоматизировать ввод значений значений в этот регистр сведений. Для этого добавляем в форму элемента справочника ГрафикиРабот табличное поле со списком регистра сведений "ГрафикРаботы", и добавляем кнопку заполнить.

Процедура КоманднаяПанель1Заполнить(Кнопка)
   
   ТекущийГрафик = Ссылка;
   
   ИнтервалПоказа = Новый НастройкаПериода;
   ИнтервалПоказа.ДатаНачала = НачалоМесяца(ТекущаяДата());
   ИнтервалПоказа.ДатаОкончания = КонецДня(КонецМесяца(ТекущаяДата()));
   ИнтервалПоказа.ВариантНачала = ВариантГраницыИнтервала.КонкретнаяДата;
   ИнтервалПоказа.ВариантОкончания = ВариантГраницыИнтервала.КонкретнаяДата;
   
   Если ИнтервалПоказа.Редактировать() Тогда
       
       ДатаНачалаИнтервала = ИнтервалПоказа.ПолучитьДатуНачала();
       ДатаОкончанияИнтервала = ИнтервалПоказа.ПолучитьДатуОкончания();
       НаборЗаписейКалендарь = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();
       НаборЗаписейКалендарь.Отбор.ГрафикРаботы.Значение = ТекущийГрафик;
       НаборЗаписейКалендарь.Отбор.ГрафикРаботы.Использование = Истина;
       Дней = (ДатаОкончанияИнтервала - ДатаНачалаИнтервала) / 86400;
       
       Для Сч = 0 По Дней Цикл
           
           НовыйДень = НаборЗаписейКалендарь.Добавить();
           НовыйДень.ГрафикРаботы = ТекущийГрафик;
           НовыйДень.Дата = ДатаНачалаИнтервала + Сч * 86400;
           
           Если ДеньНедели(ДатаНачалаИнтервала + Сч * 86400)>5 Тогда
               НовыйДень.Значение = 0;
           Иначе
               НовыйДень.Значение = 8;
           КонецЕсли;              
           
       КонецЦикла;
       
   Иначе
       
       Возврат;
       
   КонецЕсли;
   
   НаборЗаписейКалендарь.Записать();
   
КонецПроцедуры

И добавим, что бы при открытии в списке регистра "Графики работ" происходил отбор по текущему элементу справочника ГрафикиРабот.

Процедура ПриОткрытии()
   ЭлементыФормы.ТабличноеПолеГрафикиРаботы.Значение.Отбор.ГрафикРаботы.Установить(Ссылка);
КонецПроцедуры

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика