Как вывести все расчеты, относящиеся к выбранному Сотруднику Код 1C v 7.x сСотр_2 = СоздатьОбъект("Справочник.Сотрудники");
// Метод Выбрать вызывает диалог для выбора элемента справочника
// Если сотрудник не выбран
если сСотр_2.Выбрать("Выберите сотрудника", "ФормаСписка") = 0 тогда
Предупреждение("Сотрудник не выбран.");
возврат;
конецЕсли;
// Выбран Иванов Б. Ю.
жз = СоздатьОбъект("ЖурналРасчетов.Зарплата");
жз.ВыбратьЗаписиПоОбъекту(сСотр_2.ТекущийЭлемент());
пока жз.ПолучитьЗапись() = 1 цикл
Сообщить("" + жз.Объект + СимволТабуляции + жз.ВидРасч +
Символ Табуляции + жз.Результат);
конецЦикла;
Категория:
Журналы расчетов Вхождение вида расчета в группу Посчитаем все начисления текущего сотрудника за январь:
Код 1C v 7.x // 1-й вариант:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда
ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;
КонецЕсли;
КонецЦикла;
// 2-й вариант:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
Если ГруппаРасчетов.ВсеНачисления.СодержитВидРасчета(ЖЗ.ВидРасч)=1 Тогда
ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;
КонецЕсли;
КонецЦикла;
Категория:
Виды расчетов Расчет начислений по сотруднику, подразделени, документу Код 1C v 7.x // Посчитаем все начисления текущего сотрудника за январь:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда
ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;
КонецЕсли;
КонецЦикла;
// Теперь рассчитаем все записи текущего сотрудника, введеные в текущем месяце:
ЖЗ.ВыбратьПериодПоОбъекту (ТекСотр, ДатаНач);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
ЖЗ.Рассчитать();
КонецЦикла;
/// Рассчитаем все записи по документу, независимо от того, в каком расчетном периоде записи порождались:
ЖЗ.ВыбратьЗаписиПоДокументу (ВыбрДокумент);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
ЖЗ.Рассчитать();
КонецЦикла;
// Рассчитаем все записи по указанному подразделению. В журнале расчетов указана графа отбора "Подразделение".
ТекПер = ЖЗ.ТекущийПериод();
ЖЗ.ВыбратьПоЗначению ("Подразделение",ВыбрПодразделение, ТекПер, ТекПер);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
ЖЗ.Рассчитать();
КонецЦикла;
Категория:
Журналы расчетов Работа с журналом расчетов в 1С7.7 из 1С 8.1 через Com соединение Недавно делал перенос справочников и документов из 1С 7.7 "Зарплата и кадры" в 1С 8.1 "Управление торговым предприятием" через Com соединение. Во время переноса столкнулся с некоторыми проблемами. Одна из них - это при выполнении запроса очень важно правильно указать синтаксис передаваемых значений, особенно даты, иначе запрос не будет выполняться. Как правильно написать запрос? Смотрим:
Код 1C v 8.х //Создадим Com объект для подключения к 1С 77
База77 = Новый COMObject("V77.Application");
//Устанавливаем соединение
Открыта = База77.Initialize(База77.RMTrade,"/d" + ПутьКБазе77,"NO_SPLASH_SHOW");
Если Открыта Тогда
Предупреждение("Ошибка открытия информационной базы!");
Иначе
Сообщить("БАЗА ОТКРЫТА УСПЕШНО!");
Конецесли;
//Определим дату из периода за который
//необходимо выбрать данные
ДатаПериода = ТекущаяДата();
//Подключимся к журналу расчетов
Зрп = База77.CreateObject("ЖурналРасчетов.Зарплата");
//Получим период журнала расчета по нашей дате
//переведем в формат без времени
НТП = Формат(Зрп.НачалоПериодаПоДате(ДатаПериода),"ДЛФ=Д");
КТП = Формат(Зрп.КонецПериодаПоДате(ДатаПериода),"ДЛФ=Д");
//Напишем текст запроса
//обратите внимание на установку периода в запросе
//Если неправильно написать, будет вылазить ошибка
ТекстЗапр = "//{{ЗАПРОС(ВидыРасч)
|Период с '" + НТП + "' по '" + КТП + "';
|Вир = ЖурналРасчетов.Зарплата.ВидРасч;
|Рез = ЖурналРасчетов.Зарплата.Результат;
|Дни = ЖурналРасчетов.Зарплата.Дни;
|ДатаНачала = ЖурналРасчетов.Зарплата.ДатаНачала;
|ДатаОкончания = ЖурналРасчетов.Зарплата.ДатаОкончания;
|Часы = ЖурналРасчетов.Зарплата.Часы;
|Субконто = ЖурналРасчетов.Зарплата.Субконто;
|Сот = ЖурналРасчетов.Зарплата.Объект;
|КодОбъекта = ЖурналРасчетов.Зарплата.Объект.Код;
|Функция РезСумма = Сумма(Рез);
|Группировка Сот;
|Группировка Вир;
|"//}}ЗАПРОС
;
//Создаем объект типа запрос
Запр = База77.CreateObject("Запрос");
//Выполним запрос, если успешно делаем выборку
Если Запр.Выполнить(ТекстЗапр) <> 0 Тогда
Пока Запр.Группировка("Сот") = 1 Цикл
Пока Запр.Группировка("Вир") = 1 Цикл
//...................
//Здесь пишем код выборки и обработки полученных данных
Конеццикла;
Конеццикла;
Конецесли;
Если нам необходимо установить отбор в журнале, например по сотруднику, то сделать это можно следующим образом:
Код 1C v 8.х //в перечне полей добавляем поле код объекта (можно наименование)
"|КодОбъекта = ЖурналРасчетов.Зарплата.Объект.Код;"
//строка условия будет следующей
"|Условие(КодОбъекта = " + Сотр.код + ");"
Из журнала расчетов можно выбрать записи без запроса, методом прямой выборки. В некоторых ситуациях этот способ может быть даже удобней чем через запрос. В данном случае синтаксис будет довольно простым:
Код 1C v 7.x Запр = База77.CreateObject("ЖурналРасчетов.Зарплата");
Запр.ВыбратьЗаписиПоОбъекту(Сотр,НТП,КТП);
Пока Запр.ПолучитьЗапись() = 1 Цикл
//Делаем обработку выборки
Конеццикла;
Написал Валецкий Станислав Категория:
Журналы расчетов