7.7 справка о доходах декретнец

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем fiskal, 14 янв 2010.

  1. TopicStarter Overlay
    fiskal
    Offline

    fiskal

    Регистрация:
    28 дек 2009
    Сообщения:
    42
    Симпатии:
    0
    Баллы:
    1
    вобшем проблема такова..
    есть отчет который формирует список о доходах у декретниц по заданному периоду.
    проблема в том что когда задаешь ,допустим с августа по ноябрь ,а сотрудница ушла в декрет в октябре и у нее в октябре,ноябре начислений 0. то очтет не выводит месяца где нет начислений...тоесть в отчете только август сентябрь...
    как сделать чтоб выводил пустые месяцы тоже?

    помогите пожалуйста разобраться :)
  2. Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Давай код если небольшой, или кусок кода с условием отсекающим
    пустые начисления
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Используй глСобратьДанныеДляЕСН описание колонок - вниутри процедуры
  4. TopicStarter Overlay
    fiskal
    Offline

    fiskal

    Регистрация:
    28 дек 2009
    Сообщения:
    42
    Симпатии:
    0
    Баллы:
    1
    Перем ТП,ЖрнЗарплата;

    Функция РазницаВМесяцах(Д1,Д2)
    Годы = ДатаГод(Д2)-ДатаГод(Д1);
    Если Годы<0 Тогда
    Годы=Годы+100;
    КонецЕсли;
    Разн = ДатаМесяц(Д2)-ДатаМесяц(Д1) + Годы*12;
    Если ДатаЧисло(Д2)<ДатаЧисло(Д1) Тогда
    Разн = Разн-1;
    КонецЕсли;
    Возврат Разн;
    КонецФункции

    Процедура Сформировать()
    Нач=ЖрнЗарплата.НачалоПериодаПоДате(МесяцНач.ПолучитьЗначение(МесяцНач.ТекущаяСтрока()));
    Кон=ЖрнЗарплата.КонецПериодаПоДате(МесяцКон.ПолучитьЗначение(МесяцКон.ТекущаяСтрока()));
    Если Сотрудник.Выбран()=0 Тогда
    Предупреждение("Выберите сотрудника!");
    Возврат;
    КонецЕсли;
    Примеч=""; // A. T.
    Род=""+ Сотрудник.Родитель.Родитель; //
    Если Род="Университет" Тогда //
    Примеч="Университет социальных выплат не производит"; //
    КонецЕсли; // A. T.
    Кон1=Кон;
    Кон=ЖрнЗарплата.КонецПериодаПоДате(Кон+1);

    Запрос = СоздатьОбъект("Запрос");
    Если радиоДей = 2 Тогда
    Если Запрос.Выполнить(
    "//{{ЗАПРОС(ЛицСчет)
    |Период с {Нач} по {Кон1};
    |Сотр = ЖурналРасчетов.Зарплата.Объект;
    |ВР = ЖурналРасчетов.Зарплата.ВидРасч;
    |Дн = ЖурналРасчетов.Зарплата.Дни;
    |Чс = ЖурналРасчетов.Зарплата.Часы;
    |Рез = ЖурналРасчетов.Зарплата.Результат;
    |Пер = ЖурналРасчетов.Зарплата.ПериодРегистрации;
    |Действие = ЖурналРасчетов.Зарплата.ПериодДействия;
    |Группировка Пер;
    |Группировка Действие;
    |Функция Начисл = Сумма(Рез) когда( ВР.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);
    |Функция Дни = Сумма(Дн) Когда( (ВР=ВидРасчета.ОплатаПоОкладу) или (ВР=ВидРасчета.ОплатаПоТарифу) или (ВР=ВидРасчета.ОплатаПоТабелю));
    |Функция Часы = Сумма(Чс) Когда( (ВР=ВидРасчета.ОплатаПоОкладу) или (ВР=ВидРасчета.ОплатаПоТарифу)или (ВР=ВидРасчета.ОплатаПоТабелю));
    |Условие(Сотр=Сотрудник);
    |Условие(ВР<>ВидРасчета.МатПомощь);
    |Условие(ВР<>ВидРасчета.МатПомощьНеОблагаемая);
    |"//}}ЗАПРОС
    )=0 Тогда
    Возврат;
    КонецЕсли;
    иначе
    Если Запрос.Выполнить(
    "//{{ЗАПРОС(ЛицСчет)
    |С {Нач} по {Кон1};
    |Сотр = ЖурналРасчетов.Зарплата.Объект;
    |ВР = ЖурналРасчетов.Зарплата.ВидРасч;
    |Дн = ЖурналРасчетов.Зарплата.Дни;
    |Чс = ЖурналРасчетов.Зарплата.Часы;
    |Рез = ЖурналРасчетов.Зарплата.Результат;
    |Пер = ЖурналРасчетов.Зарплата.ПериодДействия;
    |Действие = ЖурналРасчетов.Зарплата.ПериодРегистрации;
    |Группировка Пер;
    |Группировка Действие;
    |Функция Начисл = Сумма(Рез) когда( ВР.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);
    |Функция Дни = Сумма(Дн) Когда( (ВР=ВидРасчета.ОплатаПоОкладу) или (ВР=ВидРасчета.ОплатаПоТарифу) или (ВР=ВидРасчета.ОплатаПоТабелю));
    |Функция Часы = Сумма(Чс) Когда( (ВР=ВидРасчета.ОплатаПоОкладу) или (ВР=ВидРасчета.ОплатаПоТарифу)или (ВР=ВидРасчета.ОплатаПоТабелю));
    |Условие(Сотр=Сотрудник);
    |Условие(ВР<>ВидРасчета.МатПомощь);
    |Условие(ВР<>ВидРасчета.МатПомощьНеОблагаемая);
    |"//}}ЗАПРОС
    )=0 Тогда
    Возврат;
    КонецЕсли;
    КонецЕсли;
    Таб = СоздатьОбъект("Таблица");
    Телефон=Сотрудник.Подразделение.Получить(ТекущаяДата()).Родитель.Телефон;
    КолМес=ДатаМесяц(Кон)-ДатаМесяц(Нач)+?(ДатаГод(Нач)<>ДатаГод(Кон),12,0);

    Таб.ВывестиСекцию("Справка<");
    Нач_Ит=0; Дни_Ит=0; Часы_Ит=0;
    ДатаНач=Нач;
    Дт=Нач;
    Начисл=0; Ном=0;
    Пока Запрос.Группировка("Пер")=1 Цикл
    Ном=Ном+1;

    Если (Нач<>НачМесяца(Запрос.Пер.ДатаОкончания)) и (Ном=1) Тогда

    Если ДатаГод(Запрос.Пер.ДатаОкончания) <= ДатаГод(Нач) Тогда
    К = ДатаМесяц(НачМесяца(Запрос.Пер.ДатаОкончания)) - 12;
    Иначе
    К = 12;
    КонецЕсли;

    // Разница=ДатаМесяц(НачМесяца(Запрос.Пер.ДатаОкончания))-ДатаМесяц(Нач)+12;
    Разница=ДатаМесяц(НачМесяца(Запрос.Пер.ДатаОкончания))-ДатаМесяц(Нач)+К;
    Для х=1 По Разница Цикл
    МесяцСтр=Формат(ДобавитьМесяц(Нач,х-1),"ДММММГГГГ");
    Таб.ВывестиСекцию("Пустая");
    КонецЦикла;
    КонецЕсли;

    МесяцСтр = Запрос.Пер.ОписательПериода;

    Дт=Запрос.Пер.ДатаОкончания;
    Дт_рег=Дт;
    Начисл=0;
    Дни=0; Часы=0;
    Пока Запрос.Группировка("Действие")=1 Цикл
    Дт_действ=Запрос.Действие.ДатаОкончания;
    Дни=Дни+Запрос.Дни;
    Часы=Часы+Запрос.Часы;
    Начисл=Начисл+Запрос.Начисл;
    КонецЦикла;
    Если (Дни<>0) или (Часы<>0) Тогда
    Пробел=?(((Дни<>0) и (Часы<>0))," / ","");
    ДниЧасы=Строка(Дни);//С* +Пробел+Строка(Часы);
    Иначе
    ДниЧасы="-";
    КонецЕсли;
    Таб.ВывестиСекцию("Начислено");
    //Если Запрос.Пер.ДатаНачала<Кон1 Тогда
    Нач_Ит=Нач_Ит+Начисл;
    Дни_Ит=Дни_Ит+Дни;
    Часы_Ит=Часы_Ит+Часы;
    //КонецЕсли;
    КонецЦикла;
    Если (Дни_Ит<>0) или (Часы_Ит<>0) Тогда
    ЕщеПробел=?(((Дни_Ит<>0) и (Часы_Ит<>0))," / ","");
    Нач_Дни=Строка(Дни_Ит);//С* +ЕщеПробел+Строка(Часы_Ит);
    Иначе
    Нач_Дни="-";
    КонецЕсли;
    Таб.ВывестиСекцию("Справка>");

    Если ПодпПр=1 Тогда
    Таб.ВывестиСекцию("ПодпПр");
    КонецЕсли;
    Таб.ВывестиСекцию("ПодпГлБухг"); //A. T

    Если ПодпСост=1 Тогда
    Если ((Сотрудник.Подразделение.Получить(ТекущаяДата()).ПринадлежитГруппе(Константа.Университет)=1)
    или (Сотрудник.Подразделение.Получить(ТекущаяДата()).ПринадлежитГруппе(Константа.Наука)=1)) Тогда
    ТелефонБухгалтера="1111";
    Иначе
    ТелефонБухгалтера="11111";
    КонецЕсли;
    Таб.ВывестиСекцию("ПодпСост");
    КонецЕсли;

    Таб.ВывестиСекцию("Дата"); //A. T.
    // Вывод заполненной формы
    Таб.Опции(0,0,0,0, "PO0099");
    Таб.ТолькоПросмотр(0);
    Таб.Показать("Справка о заработке",);
    КонецПроцедуры

    Процедура ПриОткрытии()
    Форма.Сотрудник.ВыборГруппы(0);
    ТП=ЖрнЗарплата.ТекущийПериод();
    МесяцНач.ДобавитьЗначение(ТП.ДатаНачала,ТП.ОписательПериода);
    МесяцКон.ДобавитьЗначение(ТП.ДатаНачала,ТП.ОписательПериода);
    Сколько=РазницаВМесяцах('01.01.2002',ТП.ДатаНачала);
    Для Сч=1 По Сколько Цикл
    ТП = ТП.ПрибавитьПериод(-1);
    МесяцНач.ДобавитьЗначение(ТП.ДатаНачала,ТП.ОписательПериода);
    МесяцКон.ДобавитьЗначение(ТП.ДатаНачала,ТП.ОписательПериода);
    КонецЦикла;
    Основание="В ГОРОДСКОЙ ЦЕНТР ПО РАСЧЕТУ ЖИЛИЩНЫХ КОМПЕНСАЦИЙ"
    КонецПроцедуры;

    ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
    Год="";
    РадиоДей = 1;
    ТелефонБухгалтера="";


    ну впринцепи не большой :))
    условия где отсекаюсться нули нету.... я так пологаю нужно чтото добавить чтоб он не отсикал их :)
    буду признателен за помощь...
  5. Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    В глобальном модуле найди процедуру глСобратьДанныедляЕСН() и подставь в свою процедуру
  6. TopicStarter Overlay
    fiskal
    Offline

    fiskal

    Регистрация:
    28 дек 2009
    Сообщения:
    42
    Симпатии:
    0
    Баллы:
    1
    Пытался вчера впихать глСобратьДанныеДляЕСн() не получилось =(
    Если не сложно немогли бы вы наставить на путь истинный более подробно :))
    я так сказать только начал знакомиться с программированием модулей... опыта и знаний маловато..
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А что именно не получилось? Эта процедура возвращает ТаблицуЗначений со всеми необходимыми данными. Описание колонок есть в теле процедуры, параметров - в заголовке процедуры. Смотрите их в глобальном модуле. Не нужно изобретать велосипед.
Похожие темы
  1. abaz
    Ответов:
    2
    Просмотров:
    2.506
  2. rusanton
    Ответов:
    1
    Просмотров:
    410
  3. nbIpKuH_BaH9I
    Ответов:
    21
    Просмотров:
    1.771
  4. bluntschi
    Ответов:
    6
    Просмотров:
    716
  5. Ivan2014
    Ответов:
    7
    Просмотров:
    1.471
Загрузка...

Поделиться этой страницей