Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибки в конфигурации ЗиК 7.7
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Пользователю 1С 7.7 > 1С Зарплата и Кадры 7.7 для Украины
tgpov
Регламентированные отчеты персонификация в ПФ personpf.ert. Не правильно ведется подсчет количества дней


Процедура ИндДанныеСотр(Знач Сотр)
...
Пока ТабДвиженияСотр.ПолучитьСтроку() = 1 Цикл
Если (ДатаПериода >= ТабДвиженияСотр.ДатаПриема) И (ДатаПериода <= ТабДвиженияСотр.ДатаУвольнения)
ИЛИ (ДатаПериода >= ТабДвиженияСотр.ДатаПриема) И (Число(ТабДвиженияСотр.ДатаУвольнения)=0)
Тогда
ДатаС = ДатаПериода;
Если ТабДвиженияСотр.ДатаПриема > ДатаПериода Тогда
ДатаС = ТабДвиженияСотр.ДатаПриема;
КонецЕсли;
ДатаПо = КонПериода;
Если (ДатаЧисло(ТабДвиженияСотр.ДатаУвольнения) <> 0) И (ТабДвиженияСотр.ДатаУвольнения < КонПериода) Тогда
ДатаПо = ТабДвиженияСотр.ДатаУвольнения;
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;



РЕшение


Процедура ИндДанныеСотр(Знач Сотр)
.....
ТабДвиженияСотр. ВыбратьСтроки();
Пока ТабДвиженияСотр.ПолучитьСтроку() = 1 Цикл
Если (КонПериода >= ТабДвиженияСотр.ДатаПриема) И (ДатаПериода <= ТабДвиженияСотр.ДатаУвольнения)
ИЛИ (КонПериода >= ТабДвиженияСотр.ДатаПриема) И (Число(ТабДвиженияСотр.ДатаУвольнения)=0)
Тогда
ДатаС = ДатаПериода;
Если ТабДвиженияСотр.ДатаПриема > ДатаПериода Тогда
ДатаС = ТабДвиженияСотр.ДатаПриема;
КонецЕсли;
ДатаПо = КонПериода;
Если (ДатаЧисло(ТабДвиженияСотр.ДатаУвольнения) <> 0) И (ТабДвиженияСотр.ДатаУвольнения < КонПериода) Тогда
ДатаПо = ТабДвиженияСотр.ДатаУвольнения;
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;
tgpov
Еще
Регламентированные отчеты персонификация в ПФ personpf.ert



// ===============================
Функция ПолучитьДвиженияСотр(Знач Сотр)

тбДвижений = СоздатьОбъект("ТаблицаЗначений");
тбДвижений.НоваяКолонка("ДатаПриема","Дата");
тбДвижений.НоваяКолонка("ДатаУвольнения","Дата");

Док = СоздатьОбъект("Документ");
//Док.ВыбратьПоЗначению(Дата1,Дата2,"ПриказыПоСотруднику",Сотр);
Док.ВыбратьПоЗначению(,,"ПриказыПоСотруднику",Сотр);
Пока Док.ПолучитьДокумент() = 1 Цикл

Если Док.Вид() = "ПриказОПриеме" Тогда
тбДвижений.НоваяСтрока();
тбДвижений.ДатаПриема = Док.ДатаНачала;

ИначеЕсли Док.Вид() = "ПриказОбУвольнении" Тогда
тбДвижений.Сортировать("ДатаПриема");
Кво = тбДвижений.КоличествоСтрок();
Для Инд = 0 По Кво-1 Цикл
тбДвижений.ПолучитьСтрокуПоНомеру(Кво-Инд);
Если тбДвижений.ДатаПриема < Док.ДатаУвольнения Тогда
тбДвижений.ДатаУвольнения = Док.ДатаУвольнения;
КонецЕсли;
КонецЦикла;

КонецЕсли;

КонецЦикла;

Если тбДвижений.КоличествоСтрок() = 0 Тогда
тбДвижений.НоваяСтрока();
тбДвижений.ДатаПриема = Сотр.ДатаНачалаДействия;
тбДвижений.ДатаПриема = Сотр.ДатаОкончанияДействия;
КонецЕсли;

Возврат тбДвижений;

КонецФункции



Решение


// ===============================
Функция ПолучитьДвиженияСотр(Знач Сотр)

тбДвижений = СоздатьОбъект("ТаблицаЗначений");
тбДвижений.НоваяКолонка("ДатаПриема","Дата");
тбДвижений.НоваяКолонка("ДатаУвольнения","Дата");

Док = СоздатьОбъект("Документ");
//Док.ВыбратьПоЗначению(Дата1,Дата2,"ПриказыПоСотруднику",Сотр);
Док.ВыбратьПоЗначению(,,"ПриказыПоСотруднику",Сотр);
Пока Док.ПолучитьДокумент() = 1 Цикл

Если Док.Вид() = "ПриказОПриеме" Тогда
тбДвижений.НоваяСтрока();
тбДвижений.ДатаПриема = Док.ДатаНачала;
тбДвижений.ДатаУвольнения = Сотр.ДатаОкончанияДействия;
ИначеЕсли Док.Вид() = "ПриказОбУвольнении" Тогда
Кво = тбДвижений.КоличествоСтрок();
Если Кво = 0 Тогда
тбДвижений.НоваяСтрока();
тбДвижений.ДатаПриема = Сотр.ДатаНачалаДействия;
тбДвижений.ДатаУвольнения = Сотр.ДатаОкончанияДействия;
КонецЕсли;
тбДвижений.Сортировать("ДатаПриема");
Кво = тбДвижений.КоличествоСтрок();
Для Инд = 0 По Кво-1 Цикл
тбДвижений.ПолучитьСтрокуПоНомеру(Кво-Инд);
Если тбДвижений.ДатаПриема < Док.ДатаУвольнения Тогда
тбДвижений.ДатаУвольнения = Док.ДатаУвольнения;
тбДвижений.ДатаПриема = Сотр.ДатаНачалаДействия;
КонецЕсли;
КонецЦикла;

КонецЕсли;

КонецЦикла;

Если тбДвижений.КоличествоСтрок() = 0 Тогда

тбДвижений.НоваяСтрока();
тбДвижений.ДатаПриема = Сотр.ДатаНачалаДействия;
тбДвижений.ДатаУвольнения = Сотр.ДатаОкончанияДействия;
КонецЕсли;

Возврат тбДвижений;

КонецФункции


tgpov
Ошибка 7.7 ЗиК регламентные отчеты форма 1дф


Процедура РассчитатьПоФактуВыплаты()
...
тбНачисленоДляЛьгот.ВыбратьСтроки();
тбНачисленоДляЛьгот.ПолучитьСтроку();

тбНачислено.Сортировать("ИНН+, Сотр*, ПериодДействия+");
тбНачислено.ВыбратьСтроки();
Пока тбНачислено.ПолучитьСтроку() = 1 Цикл
Если (тбНачисленоДляЛьгот.Сотр <> тбНачислено.Сотр)
ИЛИ (тбНачисленоДляЛьгот.ПериодДействия <> тбНачислено.ПериодДействия)
Тогда
тбНачисленоДляЛьгот.ПолучитьСтроку();
КонецЕсли;
тбНачислено.НачисленоДляЛьгот = тбНачисленоДляЛьгот.Начислено;
КонецЦикла;


Возможно такое решение (синхронизируем две таблицы по сотруднику)



тбНачислено.ВыбратьСтроки();
Пока тбНачислено.ПолучитьСтроку() = 1 Цикл
Если (тбНачисленоДляЛьгот.Сотр <> тбНачислено.Сотр)
ИЛИ (тбНачисленоДляЛьгот.ПериодДействия <> тбНачислено.ПериодДействия)
Тогда
Если тбНачисленоДляЛьгот.ИНН > тбНачислено.ИНН Тогда
Пока тбНачислено.Сотр <> тбНачисленоДляЛьгот.Сотр Цикл
тбНачисленоДляЛьгот.ПолучитьСтроку();
КонецЦикла;
Если тбНачисленоДляЛьгот.ПериодДействия = тбНачислено.ПериодДействия Тогда
тбНачислено.НачисленоДляЛьгот = тбНачисленоДляЛьгот.Начислено;
КонецЕсли;
КонецЕсли;
Иначе
тбНачислено.НачисленоДляЛьгот = тбНачисленоДляЛьгот.Начислено;
КонецЕсли;
КонецЦикла;
tgpov
Отчет.Расчетные ведомости


// ===============================
Процедура ВыполнитьЗапрос(ПечФорма)
...
ИначеЕсли (ПечФорма = "ВедомостьП6") ИЛИ (ПечФорма = "ВедомостьП7") Тогда

добавить


|Функция СуммаМежрасчетных = Сумма(Сумма) когда((ВидРасч = ВидРасчета.ВыплатаЧерезБанк) ИЛИ (ВидРасч = ВидРасчета.ВыплатаЧерезКассу) ИЛИ (ВидРасч = ВидРасчета.ВыплатаНатурой));
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.