Как получить за период все отпуска и больничные по сотруднику? Задача: получить в ЗУП 2.5 за определенный период все отпуска и больничные по сотруднику
вот пример запроса и кода:
Код 1C v 8.х //Получим все отпуска и больничные
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ОсновныеНачисленияРаботниковОрганизаций.ПериодДействия,
| ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало,
| ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец,
| ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
| ОсновныеНачисленияРаботниковОрганизаций.Сотрудник,
| ОсновныеНачисленияРаботниковОрганизаций.Результат,
| ОсновныеНачисленияРаботниковОрганизаций.НормаДней,
| ОсновныеНачисленияРаботниковОрганизаций.НормаЧасов,
| ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней,
| ОсновныеНачисленияРаботниковОрганизаций.ОтработаноЧасов,
| ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДнейПоПятидневке
|ИЗ
| РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
|ГДЕ
| ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В(&ВидРасчета)
| И ОсновныеНачисленияРаботниковОрганизаций.Сотрудник =Сотрудник
| И ОсновныеНачисленияРаботниковОрганизаций.ПериодДействия МЕЖДУДатаН ИДатаК
|";
кзСписокВидРасчета = Новый СписокЗначений;
кзСписокВидРасчета.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтпКалендарныеДни);
кзСписокВидРасчета.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуБЛ);
Запрос.УстановитьПараметр("ВидРасчета", кзСписокВидРасчета);
Запрос.УстановитьПараметр("ДатаК", КонПериода);
Запрос.УстановитьПараметр("ДатаН", НачалоМесяца(КонПериода));
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
РезультатЧасовОтпускИБолн = Запрос.Выполнить().Выбрать();
Категория:
1С Зарплата и Управление Персоналом 2.5 Поле списка ~ Как заполнить подменю на командной панели, добавив пометку и установив обработчик? В форме документа на основной панели "ДействияФормы" создаем подменю "ПодменюТипДокумента" и в процедуру при открытии добавляем СформироватьТипыДокумента():
Код 1C v 8.х Процедура Пометка(Кнопка)
//Отменим пометки у всех кнопок
Для Каждого ТекКнопа из ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Кнопки Цикл
ТекКнопа.Пометка = Ложь;
КонецЦикла;
//Теперь установим пометку текущей кнопки
Кнопка.Пометка=?(Кнопка.Пометка, Ложь, Истина);
//Задаем название подменю именем выбранной кнопки
ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Текст = "Тип документа: "+Кнопка.Имя;
//Установим значения обработчика Вида расчета
Если Кнопка.Имя = "Валюта" тогда
ВидРасчета=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Оклад в валюте");
ИначеЕсли Кнопка.Имя = "Рубли" тогда
ВидРасчета=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Оклад в рублях");
Иначе
ВидРасчета=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка();
КонецЕсли;
КонецПроцедуры
Процедура СформироватьТипыДокумента()
МенюКнопки = ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Кнопки;
НоваяКнопка = МенюКнопки.Вставить(0, "Обычный", ТипКнопкиКоманднойПанели.Действие, "Обычный", Новый Действие("Пометка"));
НоваяКнопка = МенюКнопки.Вставить(1, "Валюта", ТипКнопкиКоманднойПанели.Действие, "Валюта", Новый Действие("Пометка"));
НоваяКнопка = МенюКнопки.Вставить(2, "Рубли", ТипКнопкиКоманднойПанели.Действие, "Рубли", Новый Действие("Пометка"));
//Определим какой тип документа по Виду расчета и поставим пометку
Если ВидРасчета=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Оклад в валюте") Тогда
ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Кнопки[1].Пометка = Истина;
ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Текст = "Тип документа: "+ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Кнопки[1].Имя;
ИначеЕсли ВидРасчета=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Оклад в рублях") Тогда
ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Кнопки[2].Пометка = Истина;
ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Текст = "Тип документа: "+ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Кнопки[2].Имя;
Иначе
ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Кнопки[0].Пометка = Истина;
ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Текст = "Тип документа: "+ЭлементыФормы.ДействияФормы.Кнопки.ПодменюТипДокумента.Кнопки[0].Имя;
КонецЕсли;
КонецПроцедуры
В результате на форме появляется подменю Тип Документа, с выбором значений Обычный, Валюта, Рубли! При выборе значения на нем устанавливается помета,а на других убирается и устанавливается значение реквизита ВидРасчета
Обязательно посмотрите еще пример:
Программное добавление кнопок подменю на командную панель формы Категория:
Работа с Формой (Диалог) и её элементами Функция проверки типа значения Код 1C v 8.х
// Функция возвращает Истина при соответствии типов, ложь в обратном случае
Функция НужныйТипЗнач(ИсхЗнач,ТипЗнач)
Возврат ТипЗнч(ИсхЗнач) = Тип(ТипЗнач);
КонецФункции
// Некоторые примеры обращения
// ИсхЗнач - проверяемое значение
// НужныйТипЗнач(ИсхЗнач,"Строка")
// НужныйТипЗнач(глЗначениеПеременной("глТекущийПользователь"),"СправочникСсылка.Пользователи")
// НужныйТипЗнач(ИсхЗнач,"Форма")
// НужныйТипЗнач(ИсхЗнач,"Булево")
// НужныйТипЗнач(ИсхЗнач,"Строка")
// НужныйТипЗнач(ИсхЗнач,"Число")
// НужныйТипЗнач(ИсхЗнач,"Дата"))
// НужныйТипЗнач(ИсхЗнач,"Массив")
// НужныйТипЗнач(ИсхЗнач,"Структура")
// НужныйТипЗнач(ИсхЗнач,"Соответствие")
// НужныйТипЗнач(ИсхЗнач,"СписокЗначений")
// НужныйТипЗнач(ИсхЗнач,"ТаблицаЗначений")
// НужныйТипЗнач(ИсхЗнач,"ДеревоЗначений")
// НужныйТипЗнач(ИсхЗнач,"ПланСчетовСсылка.Хозрасчетный")
// НужныйТипЗнач(ИсхЗнач,"ПланСчетовСсылка.Налоговый")
// НужныйТипЗнач(ИсхЗнач,"ХранилищеЗначения")
// НужныйТипЗнач(ИсхЗнач,"Картинка")
// НужныйТипЗнач(ИсхЗнач,"ПолеВвода")
// НужныйТипЗнач(ИсхЗнач,"Панель")
// НужныйТипЗнач(ИсхЗнач,"Флажок")
// НужныйТипЗнач(ИсхЗнач,"РегистрРасчетаНаборЗаписей.УправленческиеНачисления")
// НужныйТипЗнач(ИсхЗнач,"ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций")
// НужныйТипЗнач(ИсхЗнач,"ДокументСсылка.ОтпускПоУходуЗаРебенком")
// НужныйТипЗнач(ИсхЗнач,"ИнтернетПочтовоеСообщение")
// НужныйТипЗнач(ИсхЗнач, "БизнесПроцессСсылка.м_Документооборот")
Код 1C v 7.x
// Функция возвращает 1 при соответствии типов, 0 в обратном случае
Функция НужныйТипЗнач(ИсхЗнач,ТипЗнач)
Если ТипЗначенияСтр((ИсхЗнач) = ТипЗнач тогда
Возврат 1;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
// Некоторые примеры обращения
// ИсхЗнач - проверяемое значение
// НужныйТипЗнач(ИсхЗнач,"Строка")
// Значения типов данных:
// ''Число'' (''Number'') - числовой тип данных;
// ''Строка'' (''String'') - строковый тип данных;
// ''Дата'' (''Date'') - тип данных Дата;
// ''Перечисление'' (''Enum'') - агрегатный тип данных ''Перечисление'';
// ''Справочник'' (''Reference'') - агрегатный тип данных ''Справочник'';
// ''Документ'' (''Document'') - агрегатный тип данных ''Документ'';
// ''Регистр'' (''Register'') - агрегатный тип данных ''Регистр'';
// ''Календарь'' (''Calendar'') - агрегатный тип данных ''Календарь'';
// ''ВидРасчета'' (''Calculation'') - агрегатный тип данных ''ВидРасчета'';
// ''ЖурналРасчетов'' (''CalcJournal'') - агрегатный тип данных ''ЖурналРасчетов'';
// ''ПланСчетов'' (''ChartOfAccounts'') - агрегатный тип данных ''ПланСчетов'';
// ''Счет'' (''Account'') - агрегатный тип данных ''Счет'';
// ''Операция'' (''Operation'') - агрегатный тип данных ''Операция'';
// ''КорректныеПроводки'' (''CorrectEntries'') - агрегатный тип данных ''КорректныеПроводки'';
// ''БухгалтерскиеИтоги'' (''BookkeepingTotals'') - агрегатный тип данных ''БухгалтерскиеИтоги'';
// ''Таблица'' (''Table'') - агрегатный тип данных ''Таблица'';
// ''Текст'' (''Text'') - агрегатный тип данных ''Текст'';
// ''Запрос'' (''Query'') - агрегатный тип данных ''Запрос'';
// ''СписокЗначений'' (''ValueList'') - агрегатный тип данных ''СписокЗначений'';
// ''ТаблицаЗначений'' (''ValueTable'') - агрегатный тип данных ''ТаблицаЗначений'';
// ''Периодический'' (''Periodic'') - агрегатный тип данных ''Периодический'';
// ''Картинка'' (''Picture'') - агрегатный тип данных ''Картинка'';
// ''ГрупповойКонтекст'' (''GroupContext'') - контекст программного модуля или Формы;
// ''OLE'' (''OLE'') - OLE-объект.
// ''НеизвестныйОбьект'' (''UnknownObject'') - для типов, для которых в системе не предусмотрено специальное строковое обозначение;
// '''' (пустая строка) - неопределенный тип данных.
Категория:
Работа с Типами данных Добавить новый элемент плана видов расчета Код 1C v 8.х
// добавим новые начисления в базу исполнительных листов
ПВРУд = ПланыВидовРасчета.УдержанияОрганизаций;
ПВРОсн = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций;
ОбъектВР = ПВРУд.ИЛПроцентомБезБЛ.ПолучитьОбъект();
НоваяСтрока = ОбъектВР.БазовыеВидыРасчета.Добавить();
НоваяСтрока.ВидРасчета = ПВРОсн.РайонныйКоэффициент;
НоваяСтрока = ОбъектВР.БазовыеВидыРасчета.Добавить();
НоваяСтрока.ВидРасчета = ПВРОсн.СевернаяНадбавка;
ОбъектВР.Записать();
ОбъектВР = ПВРУд.ИЛПроцентом.ПолучитьОбъект();
НоваяСтрока = ОбъектВР.БазовыеВидыРасчета.Добавить();
НоваяСтрока.ВидРасчета = ПВРОсн.РайонныйКоэффициент;
НоваяСтрока = ОбъектВР.БазовыеВидыРасчета.Добавить();
НоваяСтрока.ВидРасчета = ПВРОсн.СевернаяНадбавка;
ОбъектВР.Записать();
Категория:
Планы видов расчета