Как сбросить флаг ручной правки расчетов выбранного сотрудника, кроме указанных расчетов В примере обнуляется флаг ручной правки расчетов выбранного сотрудника, кроме
расчетов с ВР ПремияСум, для которых, наоборот, вносится ручная правка результата.
Новая величина премии равна 1250 руб. Попутно выполняется расчет записей,
с которых снимется флаг ручной правки.
Код 1C v 7.x сСотр_2 = СоздатьОбъект("Справочник.Сотрудники");
// Метод Выбрать вызывает диалог для выбора элемента справочника
// Если сотрудник не выбран
если сСотр_2.Выбрать("Выберите сотрудника", "ФормаДляВыбора") = 0 тогда
Предупреждение("Сотрудник не выбран.");
возврат;
конецЕсли;
// Выбран Агальцов Ю. А.
жз = СоздатьОбъект("ЖурналРасчетов.Зарплата");
жз.ВыбратьПериодПоОбъекту(сСотр_2.ТекущийЭлемент());
ВР = ВидРасчета.ПремияСум;
пока жз.ПолучитьЗапись() = 1 цикл
если (жз.Исправлена = 1) и (жз.ВидРасч = ВР) тогда
жз.ОтменитьИсправление(); // Снимаем флаг ручной правки результата
жз.Рассчитать(); // Рассчитываем запись
конецЕсли;
если жз.ВидРасч = ВР тогда
жз.Исправить( 1250.0);
конецЕсли;
конецЦикла; // пока
Предупреждение("Готово.");
конецПроцедуры
Категория:
Журналы расчетов Как определить сумму "по окладу" текущего сотрудника Код 1C v 7.x ПоОкладу = 0;
ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ДатаНач = '01.01.2002';
ЖЗ. ВыбратьПериодПоОбъекту(ТекСотр, ДатаНач);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
Если ЖЗ.ВидРасч = ВидРасчета.ПоОкладу Тогда
ПоОкладу = ПоОкладу + ЖЗ.Результат;
КонецЕсли;
КонецЦикла;
Категория:
Виды расчетов Расчет начислений по сотруднику, подразделени, документу Код 1C v 7.x // Посчитаем все начисления текущего сотрудника за январь:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда
ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;
КонецЕсли;
КонецЦикла;
// Теперь рассчитаем все записи текущего сотрудника, введеные в текущем месяце:
ЖЗ.ВыбратьПериодПоОбъекту (ТекСотр, ДатаНач);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
ЖЗ.Рассчитать();
КонецЦикла;
/// Рассчитаем все записи по документу, независимо от того, в каком расчетном периоде записи порождались:
ЖЗ.ВыбратьЗаписиПоДокументу (ВыбрДокумент);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
ЖЗ.Рассчитать();
КонецЦикла;
// Рассчитаем все записи по указанному подразделению. В журнале расчетов указана графа отбора "Подразделение".
ТекПер = ЖЗ.ТекущийПериод();
ЖЗ.ВыбратьПоЗначению ("Подразделение",ВыбрПодразделение, ТекПер, ТекПер);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
ЖЗ.Рассчитать();
КонецЦикла;
Категория:
Журналы расчетов Перебор записей журнала расчетов Например, организуем перебор записей с периодом действия в январе.
Код 1C v 7.x ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ДатаНач = '01.01.2002';
ДатаКон = '31.01.2002';
ЖЗ.ВыбратьЗаписи(ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
// <действия с тек. записью>
КонецЦикла;
А теперь организуем перебор записей, введенных в январе.
Код 1C v 7.x ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ДатаНач = '01.01.2002';
ЖЗ. ВыбратьПериод(ДатаНач);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
// <действия с тек. записью>
КонецЦикла;
Отличие методов
ВыбратьЗаписи и ВыбратьПериод проявляется, если запись введена в другом месяце, но период ее действия лежит в январе. Например, в феврале сотруднику выдают премию за январь. Тогда запись будет введена в феврале (период регистрации), но период ее действия - январь. В первый цикл она попадет, а во второй нет.
Категория:
Журналы расчетов Как заполнить диаграмму данными? Код 1C v 8.х Диаграмма = ЭлементыФормы.Диаграмма;
// Очистить диаграмму, возможно ранее в нее уже выводились данные.
Диаграмма.КоличествоСерий = 0;
Диаграмма.КоличествоТочек = 0;
// Количество серий будет ограничиваться (не все значения будут показываться).
Диаграмма.МаксимумСерий = МаксимумСерий.Ограничено;
Диаграмма.МаксимумСерийКоличество = 7;
Диаграмма.ВидПодписей = ВидПодписейКДиаграмме.Процент;
Диаграмма.ОбластьЗаголовка.Текст = "Обороты номенклатуры";
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.Номенклатура,
| СУММА(ПродажиКомпанииОбороты.КоличествоОборот) КАК КоличествоОборот
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиКомпанииОбороты
|СГРУППИРОВАТЬ ПО
| ПродажиКомпанииОбороты.Номенклатура";
Результат = Запрос.Выполнить();
// Запретить обновление диаграммы на время вывода данных.
Диаграмма.Обновление = Ложь;
// Установить единственную точку.
Диаграмма.КоличествоТочек = 1;
Диаграмма.Точки[0].Текст = "Количество";
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
// Количество серий, если бы не ограничивали зависело бы от результата запроса.
КоличествоСерий = Диаграмма.Серии.Количество();
Диаграмма.КоличествоСерий = КоличествоСерий + 1;
Диаграмма.Серии[КоличествоСерий].Текст = Выборка.Номенклатура;
// Установить значение "на пересечении" точки и серии.
// Первый параметр - 0 , так как в диаграмме только одна точка.
Диаграмма.УстановитьЗначение(0, КоличествоСерий, Выборка.КоличествоОборот);
КонецЦикла;
// Обновить диаграмму.
Диаграмма.Обновление = Истина;
Код 1C v 7.x //Пример 1:
Процедура ПостроитьДиаграмму(Диагр)
КолСерий=0;
//количество серий определяется по количеству элементов в справочнике Материалы Спр=СоздатьОбъект("Справочник.Материалы");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
// группы элементов пропускаются
Если Спр.ЭтоГруппа()=0 Тогда
КолСерий=КолСерий+1;
КонецЕсли;
КонецЦикла;
// установка количества серий и точек
Диагр.КоличествоСерий(КолСерий);
Диагр.КоличествоТочек(1);
//в качестве значений на диаграмме примем количественное сальдо конечное по счету 10 и текущему элементу справочника
БИ=СоздатьОбъект("БухгалтерскиеИтоги");
БИ.Рассчитать(ДатаОтчета, ДатаОтчета);
номер=1;
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Если Спр.ЭтоГруппа()=0 Тогда
Диагр.УстановитьИмяСерии(Номер, Спр.Наименование);
Диагр.УстановитьЗначение(1,номер,БИ.СКД("10","К",,Спр.ТекущийЭлемент()));
номер=номер+1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Код 1C v 7.x // Пример 2:
Процедура СформироватьДиаграмму(Диаграмма1)
// Блокируем обновление, пока обрабатываются данные
Диаграмма1.Обновление(0);
Диаграмма1.Заголовок = "Поступления от покупателей";
Диаграмма1.УстановитьИмяСерии(1, "Рубли");
Диаграмма1.АвтоУстановкаИменТочек(1);
// Заполним диаграмму значениями
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
Бухит.ВыполнитьЗапрос(НачКвартала(РабочаяДата()),
КонКвартала(РабочаяДата()),"60.1",,,1,"Неделя","С");
БухИт.ВыбратьПериоды();
А = 1;
// дебетовые обороты по счету 60.1 покажут поступления
// денег от покупателей
Пока БухИт.ПолучитьПериод() = 1 Цикл
Диаграмма1.УстановитьЗначение(А, 1, БухИт.ДО());
А = А +1;
КонецЦикла;
// после наполнения данными перерисовываем
Диаграмма1.Обновление(1);
КонецПроцедуры
Категория:
Диаграмма