<?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='\
Записи в регистр «ПособияСоциальномуСтрахованию» в основном попадают документом «РасчетЕСН», что не есть хорошо 🙁
Albert не очень понимаю минус (2). Просьба прокомментировать.
(3) А ты поставь ему минус на (1) :)))))))))
(3) «Это есть правильно» — у всех своя степень правильности. Просто когда меняешь один документ хочешь сразу в отчете увидеть результат, не перезаполняя другой документ.
«Критика и предложения по доработками приветствуются» — Ваша фраза 🙂
(5) >>Критика и предложения по доработками приветствуются
Абсолютно верно, но не безосновательный минус!
> Просто когда меняешь один документ хочешь сразу в отчете увидеть результат, не перезаполняя другой документ
Ну по первых если вести как я написал в (2) то есть «пo дaнным тeкущeгo дoкумeнтa» (а это документ «Начисление больничного», если вы не в курсе), то ничего перезаполнять не надо, при проведении документа все будет работать
Во вторых на крупных предприятиях несколько расчетчиков и обязанности распределены в связи с большим объемом работы, и формированием проводок (регламентированном учетом) занимаются совсем не те люди которые вбивают больничные и им намного удобнее формировать и проверять заполняя документ «Расчет ЕСН».
>»Это есть правильно» — у всех своя степень правильности
Если каждый будет делать так как считает нужным, то хуже будет только клиенту. Необходимо узнать как должно работать. Предложить варианты клиенту и только если никакой из них не подходит то уже дорабатывать программу. А не искать легких путей. Это мое личное субъективное мнение.
(4) 🙂 Не думаю что это разумно… тем более что человек все таки ответил…
И в третьих, на мой взгляд, по регистру брать более правильно, так как 8ка очень много позволяет пользователям и возможна такая ситуация что суммы в регистре задвоятся! (например если сначала сделали документ «Расчет ЕСН», а потом решили сделать отражение в «Начислении больничного», а такая не проверяется в ЗУП) а это неверные регламентированные отчеты, что чревато! А в этом отчете такие ситуации видны
(6,7) Я тебе минус скомпенсирую плюсом на (7) 😉
(8) Пасиб :). Примного благодарен. От Вас особенно приятно 😉
Исходя из (7) резонным считаю добавление в описание отчета условий его использования.
(10) считаю (7) прописными истинами, на этом построена 8ка. А исходя из (6) делаю вывод что надо написать описание КАК работает отчет. Описание будет добавлено в обработку во 2й версии.
По функциональности, проверено на реальной базе: например если есть больничный от 31.08.2008:
период с 28.07.2008 по 25.08.2008
28.07 — 29.07 — 2 дня за счет работодателя
30.07 — 31.07 — за счет фсс
01.08 — 25.08 — за счет фсс
В отчет суммы попадают полностью, а вот дни за счет работодателя — пусто (должно быть 2), а за счет фсс только 25 (должно быть 27).
Кстати очень нужный отчет (IMHO)
Забыла написать: период формирования отчета — август.
(при формировании за июль информации по этому больничному нет)
(13) Считаю это правильным. Больничный отражается в месяце НАЧИСЛЕНИЯ
(12) Я не могу смоделировать подобную ситуацию… У выходит все правильно. Как отражается Ваш больничный в регламентированном учете (самим документом или РасчетомЕСН)? Проверьте движения регистратора по данному больничному.
Окажу всякую помощь в решении данной проблемы.
1.Проводки формирует сам документ.
2. Согласна что правильно что больничный отражается в месяце начисления, но ведь он оплатил переходящие дни (суммы абсолютно верны).
3.Даже при формировании с января по август он теряет переходящие с месяца на месяц дни если больничный зарегистрирован в следующем месяце (пример в посте 12) При этом суммы верны, как раз пользовались уже этим отчетом при проверке формирования отчетности в фсс за 9 месяцев.
Файл обновлен…
Версия 2:
-Выведена как еще одна группировка «причина нетрудоспособности»
-Добавлен реквизит «Первичность», указывающий первичный это больничный или вторичный.
-Добавлен реквизит «Разница дней» вычисляющая разницу между днями в документе и собранными по регистрам.(для проверки)
-Если существует разница, то ошибочные общие дни подсвечиваются красным! (для проверки)
Примечание: замечено, что часто при проведении больничного неверно попадают дни в регистр, при перепроведении дни исправляются… причина пока не выяснена.
ОШИБКА в отчете:
Отчет Видит начисление «При постановке на учет в ранние сроки беременности» и
Не видит начисления «Отпуск по беременности и родам»
(17) Вы ничего не путаете? Я могу прислать скриншот где он ВИДИТ эти начисления.
(18) …проверил еще раз — не видит. но правда у меня режим УСН, конфигурация (2.5.12.1).
Я тоже могу прислать скриншот, где не обработка не видит «Отпуск по беременности и родам»
(19) больничные проведены корректно? Что в движениях по регистру «пособия социальному страхованию»?
Имхо «больничный лист» проведен корректно.
У меня в документе записано:
Причина нетрудоспособности = Отпуск по беременности и родам
Начислить = Отпуск по беременности и родам
Нетрудоспособность с 19.11.2008 по 07.04.2009
Сорри за OFF. А с чего это вдруг мне пришло с этой ссылкой такое:
Информационное сообщение сайта Инфостарт — все для 1С
——————————————
Игорь(gutentag) ответил 09.12.08 14:12:48 в «Отчет по больничным листам для ЗУП 8.1»
Имхо «больничный лист» проведен корректно.
У меня в документе записано:
Причина нетрудоспособности = Отпуск по беременности и родам
Начислить = Отпуск по беременности и родам
Нетрудоспособность с 19.11.2008 по 07.04.2009
Адрес комментария:
http://infostart.ru/projects/2608/?p=2#comm21
________________________________________
Меня ни больничные, ни отпуски по родам в жизни никогда не волновали :)))
Стопудово не заходил в эту ветку
(22) Заходили;) пост 4,8… походу пачиму та считается что Вы подписались :), мне тоже что то подобное приходило, но я не обратил внимания… пока
(21) Я просил движения регистра посмотреть… Они вообще есть? Вы их можете посмотреть?
В регистре «Пособие по больничному листу» — не отображается
В регистре «Основные начисления работников организации» — отображается.
Почему так — не знаю. Имхо глюк в программе :-/
(25) Ну отражаться больничные могут 2мя способами или прямо документом больничного если стоит галка Oтpaжaть в учeтe: пo дaнным тeкущeгo дoкумeнтa на закладке Oтpaжeниe пocoбия в учeтe. Скорее всего она у Вас не стоит! Или документом «Рассчет ЕСН» о чем говорилось в посте 1,2.
(26) Спасибо за помощь!
Я Поставил галку в «по данным текущего документа» и Ваша обработка увидела «Отпуск по беременности и родам». Так же и увидел это начисление и отчет в «4-ФСС».
Почему не отображалось «Пособие по больничному листу» в «Рассчет ЕСН» и отчете «4-ФСС» — для меня полная загадка :-/
(27) Именно по этой причине и для проверки был создан этот отчет…. Он так же будет совершенствоваться. Я уже знаю о паре случаев когда криво проводится регистр и соответственно криво отражаются больничные в отчетности. Вскоре выйдет новый релиз уже не тестовый… Там будет механизм отслеживания таких ситуаций и таких больничных. В отчет будут попадать только правильные данные, а «кривые» больничные будут отслеживаться и выделяться!
Сейчас просто нет времени на это… Так что пожелайте мне успехов ))))))
(28) Ура !
Замечательно, неплохо было бы чтобы сразу выводил дату начала и дату окончания, без доп. настроек… Пасибки
Хорошый отчет!
как раз то, что мне надо было ….
то что надо, правда меня просили, чтоб это все в Расчетной ведомости выводило, как в 7-ке, ну да пока так посмотрим, мож потом разберусь и туда пихнем.Спасибо.
Спасибо.
Собирался свою писать, но теперь нет необходимости!
Спасибо.
Собирался свою писать, но теперь нет необходимости!
Пожалуйста!
Спасибо!
Определение Первичный-Вторичный идет по Регистратору, а надо по ДОкументуОснованию (если регистратор — РасчетЕСН, то всё становится первичным. Дни тоже есть в Документе
А за отчет — спасибо! Немножко подправлял — в условие включил Регистратор Сссылка Документ.РасчетЕСН, и указал в нужных местах ДокументОснование вместо Регистратора
(38, 39) Вот это я понимаю комментарии. Вам спасибо. Действительно Вы правы, поправлю как будет время.
(38) Поправил… Вроде )))
Отличный отчет, спасибо!
Толковый отчет, вот если бы добавить пособие
По уходу за ребенком до полутора лет, то цены ему не было. Смотрел внутренности, ничего особо не понял. Не представляю как это сделать.
берется из РегистрНакопления.ПособияПоУходуЗаРебенкомДоПолутораЛет
Уважаемый angler225, еще много в этом отчете можно доработать,из-за кривизны учета созданного 1С это довольно таки трудоемко сделать, но я учту Ваше пожелание.
Да конечно, это весьма не просто. Наверное для семерки это было сделать проще поскольку, таких отчетов уже есть.
(46) Ну ЗиК он намного старше, да и то в нем косяки годами не правятся. А в ЗУП изначально не продумали регистры по этому шаг влево шаг в право выливается в геморой на сами знаете какое место…
Имхо ошибка: для «Организации на УСН», отчет в колонке «дней всего» складывает дни «Дни за счет работодателя» и «Дни за счет ФСС».
(48) А красным подсвечивает?
Вот на счет этого посмотрите:
-Добавлен реквизит «Разница дней» вычисляющая разницу между днями в документе и собранными по регистрам.(для проверки)
-Если существует разница, то ошибочные общие дни подсвечиваются красным! (для проверки)
сформируйте и посмотрите разницу дней.
(49) Да, Красным подсвечивает. Реквизит «Разница дней» в отчете если УСН — автоматически не выводится
Имхо для УСН в отчете надо сделать исключение — не надо складывать дни.
А у меня в отчет не все больничные попадают(
(51) А в регистры они у Вас попадают? А в другие отчеты (типовые!) попадают?
В регистры данные попадают. И в типовые отчеты попадают все больничные, а в этот только один
(53) Ну что я Вам могу посоветовать:
1. Напишите мне релиз конфигурации на которой Вы пытаетесь сформировать отчет.
2. Поэкспериментируйте с параметрами(период отчета) и отборами.
Пока все…
(54) Нашла ошибку. У меня вообще только один больнчный попадает за счет ФСС, ни один в За счет работтодателя, все в Сумму начисления. Хотя все проводки у меня поставлены(
Не подскажите где может быть ошибка в отражении?
Спс. Я бы тебе больше чем один + поставил.
(56) Всегда рад помочь!
(57) Доработку сделал в Вашем отчете. 😀 В описании отчета есть только: «Отчет «Анализ начислений работникам»». Я там добавил ссылку наhttp://www.infostart.ru/public/16458
Спасибо, очень хороший отчет.
Большое спасибо за отчет))
а что делать если перепроведение не помогло -и дни все равно задваивает?
(61)
1. Не использовать отчет
2. Заказать программисту (на месте, потому что удаленно это будет очень сложно сделать) исправить эту ошибку, но нет никаких гарантий, что он сможет это сделать (или придется править и типовую конфигурацию), так как регистры по больничным пишутся мягко сказать «кривоватенько»…
Будет ли отчет переделан под платформу 8.2?
Стандартными средствами не конвертируется =(
Отчёт очень хороший, понравился. Но вот на новом релизе ЗУП (2.5.27.5) перестал работать. Вываливается ошибка. Вы его корректировать не будете?
(64) Любой каприз за Ваши деньги.
>> Вы его корректировать не будете?
Возможно и буду, но когда, неизвестно….
Если автор не против могу выложить исправленную версию.
В УПП не работает только в последней (1.2.33) по той же причине что и в ЗУП 2.5.27-28. После исправления все нормально. В 1.3 не работает по причине 8.2
(66)Конечно выкладывай… Мне тоже ссылочку кинь 😉
а можно ссылочку? =)
К сожалению данный отчет не будет формироваться в последних релизах ЗУП, начиная с 30-го(УПП 1.2 с 35-го), т.к. Документ «Больничный лист» перестал формировать движение в регистре ПособияСоциальномуСтрахованию
Спасибо!
Отчет хороший! Пригодился. Единственно, что он мне нужен был для кадровиков, а там права доступа не дают формировать отчет и им необязательно суммы видеть. Поэтому пришлось немного дорабатывать под себя.
Спасибо! Отчет хороший, но не много дорабатывать пришлось под свои нужды
Отличный отчет, взяли как основу для собственной разработки.
А есть отчет для более новых конфигураций, например, для 2.5.49.2? При формировании выдается ошибка:
На 2.5.56.3 работает без проблем. Спасибо большое!
Не работает на 2.5.76.1. Разработчики конфигурации попереносили функции в другие модули, типа было ФормированиеПечатныхФорм, стало ФормированиеПечатныхФормЗК, ну и другие ошибки есть.