<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
на конфигурации ЗиКБУ не пробовали?
Отчет писался и тестировался в конфигурации «Зарплата и Управление Персоналом», редакция 2.5 (2.5.73.1) на обычных (не управляемых) формах. В других конфигурациях запускать не пробовал.
Спасибо автору за отчет, очень пригодился, когда бухгалтерия поставила перед фактом, что им нужна эта форма, руками заполнять долго, а срок у них два дня
(2) начислено сумм зп не сходить с п4(
С отчетом по форме П-4 не сравнивал, делал по указаниям по заполнению 57-т. Попробую сегодня посмотреть в чем отличие.
При разработке отчета основной упор делался на заполнение 2-й таблицы раздела 1 и на второй раздел. 1-я таблица доделывалась в условиях ограниченного времени, когда оказалось, что расчетный не может получить данные о начислениях в разрезе по полу с помощью стандартных отчетов 1с. В принципе в 4-ю колонку 1-й таблицы должны попадать все суммы, начисленные за отчетный период работникам, исключая тех вид занятости которых внесен в список 3 на форме, и исключая виды начислений, внесенные в список 2 на форме.
Огромное спасибо. 1с 8.2 упп редакция 1.3 полет нормальный единственное не встает код профессии, и начисления берет не все, но думаю это решаемо.
Спасибо! Пригодилось очень вовремя. Немножко только пришлось доработать,но это мелочи. Наши экономисты сегодня очень рады.
А где плюсовать-то?
Уважаемый автор! Как обстоят дела в этом отчете с обособленными подразделениями7 А то назрела необходимость в этом отчете, но не уверен, что обособленные подразделения НЕ попадают в него. Уточните пожалуйста этот момент! А то 20го уже сдаваться…
дьякую
К сожалению давно не смотрел этот отчет, так как он сдается нашей организацией раз в несколько лет. Но постараюсь 19 числа посмотреть, вспомнить, что и как там считается и ответить на ваш вопрос.(11) trans63,
В отчете выбираются все отработавшие в выбранной организации полный месяц сотрудники, включая обособленные подразделения, если надо поправлю, без обособленных. Кстати если форма или критерии отбора изменились по сравнению с 2013 г., выложите ссылку на новую форму, на досуге посмотрю, если конечно это до сих пор актуально.
дорабатывать под новую форму не планируете, от 2017 года?
(15) Сейчас я работаю на предприятии, где не требуется предоставлять этот отчет. Но помню сколько труда вложил в него, поэтому, чтобы усилия не пропали даром решил доработать… и доработал. Правила заполнения не менял — если что-то изменилось в заполнении — напишите, поменял только макеты, и добавил макет «Вкладыш», ну и еще по мелочи (совершенству нет предела).
Класс! А возможно ли сделать выборку по подразделениям. А не по всей организации?
На бюджетной зарплате будет работать?
Есть проблема! Если должностей более 16, то выводятся не все должности, а только 16 строк. При нажатии на кнопку Сформировать табличная часть РазделII отчета перезаполняется данными по должностям, не вошедшим в отчет. Так же есть проблема с выводом сумм «тарифного заработка» и «выплаты по район- ному регулиро- ванию», по одной и тойже должности они показываются в разных строках.
Буду благодарен за оперативную корректировку отчета!
Добрый день,
Подскажите, какой алгоритм используется при заполнении второго раздела, во вложении я прикрепил пример, совпадают ли расчеты?
Здравствуйте! скажите, а по подразделениям планируется доработать этот отчет? было бы очень здорово!
(20):
Да уж м
уетодолологи из статистики постарались придумать алгоритм. пришлось лезть в код и смотреть…В принципе так как написано и составляется, правда если у должности работника не проставлена категория статистического учета — то такой работник попадает в самый верх списка.
(21):
Вы предоставляете его по каждому подразделению отдельно? Или вы имеете в виду обособленные подразделения?
(19):
16 строк выводятся если численность работников списочного состава полностью отработавших октябрь от 100 до 249 человек, у меня например численность больше 400 (судя по таблице 2 раздела 1) и выводятся 20 строк.
Если вы имеете в вид, что каждый раз заполнение таблицы меняется, то это согласно инструкции по заполнению — первый сотрудник списка заполняется случайным образом, а остальные подбираются через равные промежутки от него (для вас как я понимаю это -16 строк).
Если можно напишите подробней — что за проблемы.
(20)
(22): Поправил, теперь сотрудники с не заполненной категорией статистического учета имеют код = 3 (другие служащие)
(25) можно скачивать и пользоваться отчет 2017?, пугает надпись, что обновление публикации было 09.11.17 17:23, а Вы подправили только сегодня.
(23) Добавил возможность отбора по подразделениям — в отчете будут выводится данные всех сотрудников работающих в иерархии выбранных подразделений. Если надо сформировать отчет по всем сотрудникам — список подразделений следует очистить.
(26) Попробовал выгрузить отчет — выгрузился последний, со всеми исправлениями — можете качать.
Обработка только для 8.2 работает?
Есть ли где-то для 8.3?
нет кнопки сохранить отчёт и выгрузить тоже. у меня зуп корп 2.5
Добрый день! Все замечательно, проголосовала, хотела скачать, да смутил комментарий выше. Владимир, подскажите пжл, есть ли возможность выгрузки в xml ?
(31): нет выгрузки в xml нет, отчет писался в 2013 г., сейчас переделал его по новой форме (заменил макеты).
Добрый день. В описании не увидел на какой конфигурации работает. Комментарии пролистал — тоже не увидел.
У меня ЗуП 3.1.3 (стандартная, на УФ, платформа 8.3) — не работает. Пишет: «Не установлена схема компоновки данных»
(32)а функция сохранения? у меня просто 140 подразделений, хотелось бы что бы они хотябы сохранялись, если вдруг поправите, пришлите пожалуйста на почту mvm.mgp@mail.ru
(33) Отчет писался для конфигурации ЗУП 2.5 и тестировался на ней же. На управляемых формах работать не будет. В настройках отчета поддерживаемая конфигурация указана, добавил в описание.
Прикрутил отбор по подразделениям и выгрузку в xml
(38):
Спасибо, что доработали функционал, до которого у самого руки не доходили — лень было разбираться с формировании xml для статистики. Могу я вставить код по выгрузке из вашего отчета в свой? В свою очередь возражать не буду, если опубликуете выложенный вами отчет в своей публикации.
Что касается отбора по подразделениям — несколько не согласен, что надо отбирать по списку сотрудников на конец месяца — в случае, если сотрудник перевелся в обособленное подразделение в конце октября, то подтянутся все его начисления как по обособленному, так и по другим подразделениям.
PS: А чей это телефон — 260-09-21?
«Могу я вставить код по выгрузке из вашего отчета в свой?» — ДА, конечно. Отбор по подразделеениям ещё тестируется моей бухгалтерией, там возможно надо доводить до ума. И ещё по начислениям тоже будут проблемы(по-моему надо переделывать на период регистрации). Телефон — это «ой» забил жестко телефон нашей организации и забыл об этом.
Коллеги, помогите разобраться, не могу понять. Почему то начисления районного коэффициента показываются без основного начисления отдельной строкой. Что не так? Районный коэффициент начисляется стандартным зависимым типовым начислением.
(41) У нас так же: есть или тарифный заработок, или РК
(это по II разделу). А выполняю запрос в Консоли запросов — на самом деле 2 строки по каждому сотруднику (различия в данных только по столбцам Районные выплаты и Другие выплаты). Поэтому и данные в табл. 2 раздела I задвоены.
Для отбора по подразделениям изменила условие с «ПодразделениеОрганизации В (&СписокПодразделений)» на «ПодразделениеОрганизации В ИЕРАРХИИ (&СписокПодразделений)».
Некоторые не понимают зачем этот отбор, поясню: у нас есть обособленные подразделения без выделенного баланса. Их вносим не в справочнике Организации, а в справочнике подразделений. У нас это выглядит следующим образом: обособленное подразделение (ОП) с галкой «подразделение зарегистрировано в ИФНС как обособленное … » и указанием кодов ОКАТО,ОКТМО, КПП, а в подчинении список отделов, относящихся к этому ОП (опять же с указанием кодов ОП).
Извиняюсь что сама с собой… Получилось от задвоенности исходных данных при районном коэф-те избавиться: в конструкторе запроса Запрос пакета 3 на вкладке Группировка надо перетащить последнее поле (РК) из списка Групповых полей в список Суммируемых полей. Вот теперь отчет вроде корректно отрабатывает!
Осталось заполнить верно коды ОКПДТР (учила-учила кадры правильно заполнять справочник должностей «подбором из справочника», сами то они не догадывались для чего эта кнопка на форме). А при тестовой выгрузке — загрузке 57-т оказалось, что справочник ОКПДТР в ЗУП2.5 у меня устаревший (коды 6-ти значные, а с 12 года они 5-ти значные). Помнится качала его с ИТС, наверное там же обновление стоит поискать… Пишу для тех, кто пока занимается отладкой-проверкой отчета, параллельно дали бы задание соответствующим службам уточнить актуальность кодов ОКПДТР в вашей базе.
(43): Текст запросов с 2013 г. не менялся, сейчас посмотрел, да, в первом запросе неверно сделано соединение, надо переписать. Насчет районного коэффициента — не тестировал, у меня он не используется. Завтра постараюсь выделить время на доработку отчета.
Странно, вроде бы когда делал отбор по подразделениям, везде условие ставил В ИЕРАРХИИ,
(38) Спасибо огромное! Все работает ) к тому же скачал бесплатно )
Выявилась ошибка при выводе количества сотрудников в первом разделе. Вместо 820 сотрудников выводилось 269. В коде количество занимаемых ставок берется из справочника сотрудники. Почему оттуда? Лучше из регистра кадровых данных. Так правильнее.
Из-за перехода из другой программы у старых сотрудников не стояли занимаемые ставки и они не попадали в отчет, а попадали только новенькие сотрудники, соответственно и в разделе 2 меньше было строк.
Поправили, теперь верно считает. Могу скинуть доработанную версию.
На какой версии ЗУП работает отчет?
(48) 2.5
(49) понятно! Спасибо!
(47)
Да, так правильнее, запрос в отчете поправил.
Не стоит, если других доработок нет. Поправить ставки в запросе — минутное дело.
Неверно подставляется коды по образованию. Прикрепил скрин кодов. С чего вы решили,если код в 1с равен 7,то это код 4 (среднее общее), хотя это высшее и должна быть цифра 1.
(51) Не берусь утверждать (так как у меня старая версия отчета), но проверьте еще в запросе КодПоОКПДТР (у нас вставал код первоначальной должности сотрудника в Организации при приеме, а не код ОКПДТР текущей должности, надо РаботникиОрганизацийСрезПоследних.Должность.КодПоОКПДТР КАК КодПоОКПДТР).
И образование (графа 6 раздел II) кодировка противоположная в 2017 году: 1- высшее (06,07,08), …, 6 — не имеет основное общее образование (01,02).
А так вроде все. Большое спасибо! Очень помогло…
Ну вот, ни одни мы заметили…
(52). Страничку не обновляла, поэтому увидела ваше сообщение только после того как свое отправила…
(54) видимо кусок кода по получению кодов образования неглядя вытащили из какой-то другой программы. вот этот кусок:
Показать
В типовой 2.5 таких кодов то нет, которые здесь анализируются
Сверять отчет с реальными людьми довольно неудобно, неплохо было бы в табличную часть формы добавить фамилии людей, т.к. все равно данные выводятся в разрезе реальных людей,т.к. имеется и начисление по конкретному сотруднику и дата рождения.
При выгрузке в хмл должны выгружаться целые (без копеек) суммы начисленной зарплаты и для стажа работы одна цифра после запятой, в обработке выгужаются 2 цифры после запятой
(55):
Отчет писался в 2013 г. для базы определенного предприятия (как и многие выложенные здесь за стартмани). Соответственно специалитета и магистратуры, как я подозреваю в 2013 году в справочнике «Виды образования физических лиц» не было. Код на тот момент не откуда не вытягивал «неглядя», а писал сам на основании данных вышеупомянутого справочника. К сожалению не имею времени, чтобы выявлять все подобные баги, но раз вы его заметили — исправлю.
(56):
Проще всего, чтобы не менять стандартную форму, будет добавить расшифровку раздела 2 по сотруднику.
(57):
Андрея Бочкарева . Откуда информация о количестве знаков после запятой в xml?
Код по выгрузке xml скопирован (не то чтобы «неглядя», но с некоторыми доработками) из отчета
(53) Исправил.
(60) в самой форме в названиях колонки пишется инфа о количестве знаков после запятой. А увидел,что так неправильно, когда подгрузил хмл файл в программу по передаче электронной отчетности контур-экстерн, данные подгрузились нормально,но подсветились красным, как ошибочные, убрал лишние цифры после запятой в контуре и нормально отчет ушел.
(62) :
Вчера скачал шаблон xml с сайта росстата, там так и есть, разрядность выгрузки в xml в обработке поправил.