<?php // Полная загрузка сервисных книжек, создан 2025-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='\
Спасибо за разработку
Позволю некоторую обратную связь.
Интересно было, как у вас сделано, что в базу расчета отпуска входит зарплата, а в базу расчета больничного зарплата и отпуск, поэтому бегло просмотрел код.
В базу для Отпуска у вас входят все начисления с кодом НДФЛ 2000, для больничного аналогично.
1. некоторые бухгалтеры отпуск указывают с кодом НДФЛ 2000 (правильность этого — спорный вопрос, но если не ошибаюсь такой вариант допустим). Из за этого возможно ошибочное попадание сумм отпуск в базу отпуска.
2. В базу Больничного не будет попадать Отпуск, если он будет не с кодом 2000.
(0) Табель ❓
. Графиков, календаря все-таки нет 😮
Очень нужное дополнение к типовой задаче.
Буду пробовать применять на практике ОБЯЗАТЕЛЬНО.
По начислению ЗП куча вопросов и различных исключений.
Например, есть ли у вас дни без сохранения ЗП? если да, то выкидываются ли они при расчете средней для отпусков и больничных?
есть ли расчет средней зп — типа донорских, командировки и т.д.?
и т.д. и т.п.
(1) Бухгалтер говорит, что отпуска должны иметь код 2012 и в базу больничного должны попадать только рабочие начисления.
(4) Можно сделать, чтоб выкидывались
а нафига добавлены константы, если они не используются?
И что, для всех налоговых режимов и вариантов их совмещения работает?
Зарплата — дело тонкое. Прикрутить ее к бухгалтерии — дело полезное. +
(7) пытался в свое время, и для общей, и упрощенки, и вмененки. Есть вариант даже для ред. УСН 1.3
Ну а этот вариант работает только для ОСН? И для режима совмещения ОСН+ЕНВД тоже работает?
А для просто ЕНВД работает?
а для Бухгалтерии УСН подойдет?
(11) (12) не очень силен в различиях, но по-моему, расчет больничных и отпусков в ОСН, УСН и в ЕНВД одинаков, только налоги разные
(12) для редакции Бухгалтерия 1.3 (УСН) надо немного переделывать.
Осталось сделать обработку для ввода стажа на основании табеля для формирования сведений в ПФР. Так что, если будет апгрейд, возможно, поставлю и для ред. 1.3
Подскажите пожалуйста как объединить конфигурации?
(15) конфигурация, объединение конфигураций, выбираем 1cv7.md, и галочки ставим по первому скриншоту, далее везде ОК или Принять. Перед объединением ОБЯЗАТЕЛЬНО сделать архивную копию!
а файл 1cv7.md чей брать? Из ЗиК? Я попробовала из ЗиК, она ругается.
Пожалуйста, сделай для редакции Бухгалтерия 1.3 (УСН)!!!!!!!! 😳 ОЧЕНЬ ПРОШУ!!!!!!!!!! : ❗ ❗ ❗
(17) файл 1cv7.md находится в архиве 1cv7.rar, это один из двух файлов, который надо скачать
Почему при заполнении табеля выдается такое сообщение-«ХарактерРаботы = Сотр.ХарактерРаботы.Получить(НачМесяца(ДатаЗнач));
{Глобальный модуль(7384)}: Поле агрегатного объекта не обнаружено (ХарактерРаботы)»
Почему при заполнении табеля выдается сообщение: ХарактерРаботы = Сотр.ХарактерРаботы.Получить(НачМесяца(ДатаЗнач));
{Глобальный модуль(7384)}: Поле агрегатного объекта не обнаружено (ХарактерРаботы)
Молодец!!!! Очень полезная штука. Большое спасибо))) +++++++++++
Отлично!
Очень хорошая вещь. Только у меня не работает автоматический расчет отпускных (больничных).
При нажатии «расчет», выдает ошибку:
«СреднийЗаработок = ВсегоРазмерЗаработка/ВсегоФактОтработано; : {Документ.НачислениеОтпуска.Форма.Модуль(250)}: Деление на 0».
Не пойму, что я не так делаю. Помогите, плз!
(24) сложно сказать. Сделай тогда так:
Если ВсегоФактОтработано <> 0 Тогда
СреднийЗаработок = ВсегоРазмерЗаработка/ВсегоФактОтработано
КонецЕсли
Есть замечание которое успела заметить. В больничных есть ограничение среднедневного заработка 415000 руб./365 дней. А в общем хорошая вещь давно такую искала. Спасибо.
И я прошу, пожалуйста, для УСН выложите. Для нас, «малышей» это ОЧЕНЬ нужная вещь!!!
Добрый день! Выложите, пожалуйста, для УСН! Заранее огромное спасибо.
Присоединяюсь. Очень нужно для УСН. Пожалуйста.
Действительно замечательная разработка для бух 7.7. Можно обойтись без громоздкой ЗиК. В табеле еще можно добавить буковку К — командировки.
Полезная вещь + , вызывает настольгичию, после я перехода на «восьмерку бух и зп базовые версии»
—
А это часом не Камин? Интерфейс-то уж точно от туда …
(32) интерфейс ЗиК 7.7
К сожалению зараработная плата не индексируется при смене окладов.Должен быть расчитан коэффициент индексации при повышении окладов в организации !
(34) так коэффициент индексации используется, если не нажать флажок «Не использовать индекс повышения»
Правильно говорит ваш бухгалтер. Заполните корректно справочник по видам начислений и соответственно пропишите везде, где встречаются ссылки при определении величины налоговой базы.
Вообще-то идея хорошая. У меня она реализована с 2005 года. Правда, для подсчета дней используется компонента Расчет. С начала работы вносились изменения в соответствии с законодательством. Правда перечень документов у меня шире, к вашим прибавьте еще компенсацию за неиспользованный отпуск, уход за ребенком до 1.5 лет, выплаты в связи с ранними сроками беременности. Документ «Табель» формирую перед начислением зарплаты, а затем уж расчет самой зарплаты. Во всех доках, где это требуется, заполнение дней отработанных за месяц автоматическое.
ты смотри какая красота, но лично я ее не скоро смогу увидеть, нету репутации, или чего там еще надо теперь…
Очень полезная обработка в дополнение к типовой конфигурации. Особенно с нашими постоянными перемещениями работников в пространстве (в командировку и обратно). Спасибо автору!
Для УСН есть такая? Уже завидую бухгалтерам кому она подошла… Подскажите пожалуйста что нужно подправить чтобы для УСН тоже использовать?
Жаль, нельзя поставить пять плюсов! Я бухгалтер (программиста 1с нет, все что могу, осиливаю сама). Очень давно мечтала о подобном дополнении! НО! У меня стоит отраслевая 1с (Подрядчик строительства). Можно ли использовать Вашу разработку? Подозреваю, что нет… Жаль.
(40) конечно можно. Обработка изначально и создавалась для клиента, у которого «Подрядчик строительства» 2.3 на 5 пользователей
(39) поробуйте все обновить как написано, программа сама напишет ошибки, которые надо исправить, их не много. Возможно, с обработкой «Автоматическое заполнение стажа СЗВ» будет побольше проблем. Только обязательно в архивной копии.
(41)
Так не бывает! УРА! У меня Подрядчик строительства 2.3 на 5 пользователей! Теперь нужно зарабатывать StartMoney…
Прочитала коментарии очень захотелось попробовать. Надоело считать в Excel. Тем более обновляется 7.7 теперь очень редко и подправлять конфигурацию будет проще.
(44) тем более, что при типовом обновлении и подправлять-то ничего не придется
зачем она нужна?
Вышлите пожалуйста данную программу на мыло vlad__2005@mail.ru Спасибо
Эхх… очень интересное и нужное дополнение к семерке, но где взять эти стартмани… 🙁
Интересно, жаль, что скачать не могу.
Если есть этот вариант, сбросьте пожалуйста на эл.почту: kleponosova@mail.ru . Спасибо заранее!
Ну очень интересно и нужно. Как скачать? crjkmrj ljk;yj ,snm yf cxtne
Да, хотелось бы скачать, но сколько баллов нужно набрать
Автору >>
Обновлено 03.06.2014
А что там новенького?
(54) со 2 апреля 2014 года среднемесячное число для расчета отпусков меняется на 29.3 (было 29.4)
ОК!
Спасибо
(55)
Начала пользоваться Табелем — как заполнить разобралась
и появились вопросы:
1) при нажатии кнопки «действие» выводит в документ «Начисление зарплаты» — Хорошо!
2) Провожу документ «Начисление зарплаты» — а вот дальше не хорошо.
т.е.
при стандартном проведении «Начисление зарплаты» проводки формируются
по счету 70 и счету 68.1 (ндфл), и далее «Закрытием месяца» формируются взносы на счет 69…
а вот при выводе «Начисление зп» через Табель — формируются проводки на все счета 70, 68.1 счета 69… , т.е. взносы начисляются не правильно !!!!
Как бы это поправить — чтобы при выходе через Табель в документ «Начисление ЗП» не формировались проводки по начислению взносов по счете 69 ……
Подскажите.
(57) вы можете прислать mdшник, если не секрет конечно, пройдусь отладчиком. Честно говоря, не помню уже ни семерку, ни эту обработку
Нашла:
В модуле документа НачислениеЗП:
есть такое:
Если документ создан в редакции 4.0, то начислим ЕСН.
Если ВерсияОбъекта < «7.70.421» Тогда
Сч00 = СчетПоКоду(«00»);
Сч69_1 = СчетПоКоду(«69.1»);
Сч69_2_1 = СчетПоКоду(«69.2.1»);
Сч69_3_1 = СчетПоКоду(«69.3.1»);
Сч69_3_2 = СчетПоКоду(«69.3.2»);
Сч69_11 = СчетПоКоду(«69.11»);
Сч70 = СчетПоКоду(«70»);
Сч84 = СчетПоКоду(«84»);
Сч91_2 = СчетПоКоду(«91.2»);
Вот если в строке
Если ВерсияОбъекта = «7.70.421» Тогда (поставить =)
тогда все правильно выводится из Табеля в НачислениеЗП,
Не уверена, надо ли этим воспользоваться
придется при обновлении каждый раз заходить и править
может в документе Табель что-то подобное отобразить
(59) поставьте номер конфигурации, который на данный момент, например 7.70.605
(59) номер конфигурации по-моему проставляется в константах