Как удалить все расчеты, относящиеся к выбранному Документу Код 1C v 7.x док = СоздатьОбъект("Документ.Премия");
// Метод Выбрать вызывает диалог для выбора документа
// Если документ не выбран
если док.Выбрать("Выберите документ") = 0 тогда
Предупреждение("Документ не выбран.");
возврат;
конецЕсли;
жз = СоздатьОбъект("ЖурналРасчетов.Зарплата_2");
жз.ВыбратьЗаписиПоДокументу(док.ТекущийДокумент());
пока жз.ПолучитьЗапись() = 1 цикл
жз.УдалитьЗапись(); // Удаляем расчет
конецЦикла; // пока
док.Удалить(0); // Удаляем документ (ставим 1С-пометку удаления)
Категория:
Журналы расчетов Как вывести все расчеты, относящиеся к выбранному Документу Код 1C v 7.x док = СоздатьОбъект("Документ.Премия");
// Метод Выбрать вызывает диалог для выбора документа
// Если документ не выбран
если док.Выбрать("Выберите документ") = 0 тогда
Предупреждение("Документ не выбран.");
возврат;
конецЕсли;
жз = СоздатьОбъект("ЖурналРасчетов.Зарплата");
жз.ВыбратьЗаписиПоДокументу(док.ТекущийДокумент());
пока жз.ПолучитьЗапись() = 1 цикл
Сообщить("" + жз.Объект + СимволТабуляции + жз.ВидРасч + СимволТабуляции + жз.Результат);
КонецЦикла;
Категория:
Журналы расчетов Как вывести все расчеты, относящиеся к выбранному Сотруднику Код 1C v 7.x сСотр_2 = СоздатьОбъект("Справочник.Сотрудники");
// Метод Выбрать вызывает диалог для выбора элемента справочника
// Если сотрудник не выбран
если сСотр_2.Выбрать("Выберите сотрудника", "ФормаСписка") = 0 тогда
Предупреждение("Сотрудник не выбран.");
возврат;
конецЕсли;
// Выбран Иванов Б. Ю.
жз = СоздатьОбъект("ЖурналРасчетов.Зарплата");
жз.ВыбратьЗаписиПоОбъекту(сСотр_2.ТекущийЭлемент());
пока жз.ПолучитьЗапись() = 1 цикл
Сообщить("" + жз.Объект + СимволТабуляции + жз.ВидРасч +
Символ Табуляции + жз.Результат);
конецЦикла;
Категория:
Журналы расчетов Как вывести текущий, следующий и предшествующий периоды журнала Зарплата Код 1C v 7.x жз = СоздатьОбъект("ЖурналРасчетов.Зарплата");
пер = жз.ТекущийПериод();
Сообщить("Текущий период:" + Символ Табуляции + пер);
пер = пер.ПрибавитьПериод(1);
Сообщить("Период после:" + СимволТабуляции + пер);
пер = пер.ПрибавитьПериод(-2);
Сообщить("Период до:" + СимволТабуляции + пер);
или
Код 1C v 7.x жз = СоздатьОбъект("ЖурналРасчетов.Зарплата");
жз.ВыбратьЗаписи(); // Позиционируемся на первом расчете ЖЗ
пер = жз.ПериодРегистрации; // или жз.ПериодДействия;
Сообщить("Период регистрации:" + СимволТабуляции + пер);
пер = пер.ПрибавитьПериод(1);
Сообщить("Период после:" + СимволТабуляции + пер);
пер = пер.ПрибавитьПериод(-2);
Сообщить("Период до:" + СимволТабуляции + пер);
В обоих случаях результат будет:
Текущий период: Декабрь 2009 г.
Период после: Январь 2010 г.
Период до: Ноябрь 2009 г.
Категория:
Журналы расчетов Вхождение вида расчета в группу Посчитаем все начисления текущего сотрудника за январь:
Код 1C v 7.x // 1-й вариант:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда
ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;
КонецЕсли;
КонецЦикла;
// 2-й вариант:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
Если ГруппаРасчетов.ВсеНачисления.СодержитВидРасчета(ЖЗ.ВидРасч)=1 Тогда
ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;
КонецЕсли;
КонецЦикла;
Категория:
Виды расчетов Расчет начислений по сотруднику, подразделени, документу Код 1C v 7.x // Посчитаем все начисления текущего сотрудника за январь:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда
ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;
КонецЕсли;
КонецЦикла;
// Теперь рассчитаем все записи текущего сотрудника, введеные в текущем месяце:
ЖЗ.ВыбратьПериодПоОбъекту (ТекСотр, ДатаНач);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
ЖЗ.Рассчитать();
КонецЦикла;
/// Рассчитаем все записи по документу, независимо от того, в каком расчетном периоде записи порождались:
ЖЗ.ВыбратьЗаписиПоДокументу (ВыбрДокумент);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
ЖЗ.Рассчитать();
КонецЦикла;
// Рассчитаем все записи по указанному подразделению. В журнале расчетов указана графа отбора "Подразделение".
ТекПер = ЖЗ.ТекущийПериод();
ЖЗ.ВыбратьПоЗначению ("Подразделение",ВыбрПодразделение, ТекПер, ТекПер);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
ЖЗ.Рассчитать();
КонецЦикла;
Категория:
Журналы расчетов Выгрузка используемых видов расчетов в таблицу значений Код 1C v 7.x ТЗВидыРасчётов = Новый ТаблицаЗначений;
ТЗВидыРасчётов.Колонки.Добавить("ВидРасчёта");
ЖРЗарплата = v7.CreateObject("ЖурналРасчетов.Зарплата");
ЖРЗарплата.ВыбратьЗаписи(НачДата,КонДата);
Пока ЖРЗарплата.ПолучитьЗапись() = 1 Цикл
СтрВидыРасчётов = ТЗВидыРасчётов.Добавить();
СтрВидыРасчётов.ВидРасчёта = ЖРЗарплата.ВидРасч.Наименование;
КонецЦикла;
ЖРДополнительный = v7.CreateObject("ЖурналРасчетов.Дополнительный");
ЖРДополнительный.ВыбратьЗаписи(НачДата,КонДата);
Пока ЖРДополнительный.ПолучитьЗапись() = 1 Цикл
СтрВидыРасчётов = ТЗВидыРасчётов.Добавить();
СтрВидыРасчётов.ВидРасчёта = ЖРДополнительный.ВидРасч.Наименование;
КонецЦикла;
ЖРНалогиСФОТ = v7.CreateObject("ЖурналРасчетов.НалогиСФОТ");
ЖРНалогиСФОТ.ВыбратьЗаписи(НачДата,КонДата);
Пока ЖРНалогиСФОТ.ПолучитьЗапись() = 1 Цикл
СтрВидыРасчётов = ТЗВидыРасчётов.Добавить();
СтрВидыРасчётов.ВидРасчёта = ЖРНалогиСФОТ.ВидРасч.Наименование;
КонецЦикла;
ЖРСтраховыеВзносы = v7.CreateObject("ЖурналРасчетов.СтраховыеВзносы");
ЖРСтраховыеВзносы.ВыбратьЗаписи(НачДата,КонДата);
Пока ЖРСтраховыеВзносы.ПолучитьЗапись() = 1 Цикл
СтрВидыРасчётов = ТЗВидыРасчётов.Добавить();
СтрВидыРасчётов.ВидРасчёта = ЖРСтраховыеВзносы.ВидРасч.Наименование;
КонецЦикла;
Написал
IKSparrow Категория:
Виды расчетов Перебор записей журнала расчетов Например, организуем перебор записей с периодом действия в январе.
Код 1C v 7.x ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ДатаНач = '01.01.2002';
ДатаКон = '31.01.2002';
ЖЗ.ВыбратьЗаписи(ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
// <действия с тек. записью>
КонецЦикла;
А теперь организуем перебор записей, введенных в январе.
Код 1C v 7.x ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ДатаНач = '01.01.2002';
ЖЗ. ВыбратьПериод(ДатаНач);
Пока ЖЗ.ПолучитьЗапись()=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 Цикл
//Делаем обработку выборки
Конеццикла;
Написал Валецкий Станислав Категория:
Журналы расчетов