<?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='\
Спасибо!Спасибо!Спасибо!Спасибо!Спасибо!Спасибо!Спасибо! 😀
Отлично
Спасибо ОГРОМНОЕ!!!! Давно о такой мечтала!!!!!!
спасибо, что сделали табель для 8-ки, т.к. для 7.7 уже давно есть, а вот для 8-ки бухгалтерия предприятие не было.
Прошу отнестись с пониманием, очень хорошо, что есть наконец табель, но не в обиду, если можно немного доработать, тогда будет вообще супер :
1. в поле «ответственный» подставлять не из списка «пользователи» , а также из списка «сотрудники», чтобы выводилась ФИО рядом с должностью, т.к. в поле «ПОЛЬЗОВАТЕЛИ» как правило у всех логин.
2. для совместительства предусмотреть возможность выбора: 1/4 ставки или 1/2 ставки и т.д.
3. можно сделать кнопку «СОХРАНИТЬ» рядом с кнопкой «ПЕЧАТЬ» или с кнопкой «ЗАКРЫТЬ», в се равно где, лишь бы табель сохранялсся в 1С ?
4. попробовала заполнить по производственному календарю : все хорошо , считает дни и часы и за 1-ю и за 2-. половину месяца и всего за месяц.
затем взяла и 7-го и 8-го июня поставила букву К вместо буквы Я, т.е. командировка, часы оставила 8 и 8, а другому сделала букву Б больничный 7,8,9,10-го
результат: не пишет кол-во дней неявки и букву (код) не пишет , а было бы здорово, если бы в неявке написал букву Б и 4 дня
не пишет в код Я — и кол-во дней и код К и кол-во дней.
Может быть можно предусмотреть еще и поля для этих граф, чтобы вручную вносить, как и сами буквы К и Б?
Можно, конечно сделать в режиме редактирования и ФИО кадровика и и Б и К , но если возможно , то , конечно, здорово бы было, чтобы не руками, а автоматически
да, конечно, плюс
(4) по пожеланию 1 — если в настройках текущего пользователя указано физ.лицо, то как раз оно и будет подставляться в печатную форму (это видно на скриншоте). вообще стоял вопрос на какой справочник делать ссылку: пользователи или работники. решил что будут пользователи, т.к. предполагается что предприятие маленькое и в пользователях указаны та физ.лица, которые должны подставляться.
http://www.infostart.ru/public/18788/ .
по пожеланию 2 — вроде для совместительства и так есть выбор: по умолчанию 1/2 ставки, при отмеченной галочке — 1/4.
по пожеланию 3 — нет, нельзя, т.к. в этом случае придется вносить изменения в конфигурацию, а я как раз хотел сделать полностью автономную форму (чтобы не трогать конфигурацию, поставляемую 1С). если нужна с сохранениями, то используйте эту
по пожеланию 4 — в указаниях по применению и заполнению Т-12 и Т-13 сказано:»…При отражении неявок на работу, учет которых ведется в днях (отпуск, дни временной нетрудоспособности, служебные командировки, отпуск в связи с обучением, время выполнения государственных или общественных обязанностей и т.д.), в Табеле в верхней строке в графах проставляются только коды условных обозначений, а в нижней строке графы остаются пустыми…» поэтому при К часов не может быть.
за колонку «неявки по причинам» — учту. скоро сделаю (просто мне она не нужна — у меня не болеют).
К, Б и т.п. придется руками вносить, так же как и уволенного работника — особенности формы.
!!!ИСПРАВЛЕНО!!!
если 15-е число месяца приходилось на код, отличный от «Я», то не суммировались дни и часы за первую половину месяца (например: так получалось в мае и августе 2010)
!!!ДОПОЛНЕНО!!!
в печатной форме в колонках неявки ставит код и количество дней по кодам, отмеченным в табеле «Б», «ОТ» и «К».
огромное спасибо!!!
касательно пожеланий (4)
по п.1 можно добавить в пользователи нужную ФИО специально для табеля, это не проблема
п.2 имелось ввиду и т.д. , то есть у нас, например, совместитель работает по 3 часа в день, но это можно и руками проставить, ерунда
по п.3
при желании можно сохранить в любую папку пользователя, это не проблема
по п.4 просто замечательно сделал!!!
жаль, что не предусмотрена возможность ставить плюсы за то, что разработчик учитывает пожелания и что-то изменяет, дополняет
Очень здорово, что теперь есть табель для 8ки!! Спасибо! но у меня почему то выдает ошибку, когда я нажимаю кнопку «заполнить табель»: Индекс находится за границами массива. У меня что то не так? или с обработкой?
(8) эта ошибка возникает если не заполнен календарь (нужно открыть его, перенести праздники с выходных дней на рабочие и т.п. и нажать в нем кнопку «Записать»).
(4)(8) Выражаю искреннее соболезнование…
(8) удивляюсь, что это Вам навеяло выражать соболезнования?
народ общается, уже был дан ответ и уже поставлен плюс и сказано огромное спасибо
и вдруг Вы со своими соболезнованиями
странно
(10) Имеется в виду, очевидно, то, что разумнее использовать ЗиУК, нежели чем прикручивать табель к БП. Это не моя точка зрения, если что.
хватит головной боли от бухгалтерии. К ЗиУК даже приближаться не хочу!!!!!!!!!!!!1
Очень нужная вещь для фирмы с численностью 1,5-2 десятка работников. Спасибо.
Огромное спасибо! Очень нужная и полезная обработка!
Спасибо тысячи раз! Это предел мечтаний для таких небольших фирм как мы, нам отдельно всегда приходилось делать, а программы по начислению заработной платы (т.к. все окладники), смысла приобретать никакого.
Шикарно… Уже давно пользуюсь в 1.6, а теперь с 2.0… Огромное спасибо
YuryKr
riop 04.08.10 13:28 Ссылка Цитата Ник
у меня почему то выдает ошибку, когда я нажимаю кнопку «заполнить табель»: Индекс находится за границами массива. У меня что то не так? или с обработкой?
(8) эта ошибка возникает если не заполнен календарь (нужно открыть его, перенести праздники с выходных дней на рабочие и т.п. и нажать в нем кнопку «Записать»).
Подскажите плз, у меня выдает аналогичную ошибку. Какой календарь я должна корректировать?
Календарь в самой программе не корректируется, а просто отображает дни месяца. В самой оборабоке я никакого календаря не вижу:((
Спасибо
(18) идешь по пути: (Файл, Правка, Операции … (это меню будет, если установлен интерфейс «полный»)) Предприятие — Производственный календарь (в самом конце списка). его и надо заполнить.
спасибо огромное, сейчас попробую:)))
Господи, какие же молодцы!!!! От такого гемора избавили ручного. А какой из табелей Вы можете порекомендовать для 7.7 УСн? Там просто добавить во внешний отчет или тоже надо календарь править? Спасибо
(21) не молодцы, а молодец:-)! к сожалению с семеркой уже как лет 8 не работаю — не могу сказать что там и как. но вроде здесь встречал табель для 7-ки. воспользуйся поиском.
1С:Предприятие 8.2 (8.2.13.219)
Бухгалтерия предприятия, редакция 2.0 (2.0.21.1)
спасибо, все работает 😀
😀 Бухгалтерия предприятия, редакция 2.0 (2.0.23.9) Спасибо огромное!!!!!))))) все установилось и работает , вы мне спасли время на общение с маленьким ребенком)))))))
И от меня вам большое спасибо! Благодаря таким доработкам ноша на наших бухгалтерских плечах становится легче! Очень пригодился отчет, спасибо!
Спасибо, грамотная, а главное нужная доработка.
Полезная штука! Спасибо!
Спасибо! очень хорошая обработка, долго искала что-то подобное и не могла найти, а этой пользуюсь и очень довольна, первый раз вижу обработку для табеля, заполняемую в три-четыре клика!
Спасибо большое. Очень полезная и удобная обработка.
(22) доброго времени суток! подскажите пожалуйста, почему в табель не попадают некоторые сотрудники? уже все перепробовал и график менял, и ставку и подразделение, в впустую. Есть Мысли на этот счет?
(30) уволенные в месяце формирования табеля туда не попадают. если нет, то так не скажу — надо смотреть базу.
поковырял, немного переписал под себя, теперь можно сохранять табели в внешние файлы, и загружать их.. вот хочу еще прикрутить как-то к нему штатное расписание, может есть мысли? БП базовая, поэтому нужно извернуться)
за разработку большой плюс, не пришлось писать с нуля)
(32) кстати, где-то уже летала мысль про сохранение — пост (4). мысли есть, но вот со временем — беда, так что все идеи, скорее всего, будут реализованы в 1 квартале 2012 года.
у меня работает сохранени и загрузка, только правда файлы txt, и овершенно нечитаемые. Хочу сделать выгрузку в excel, и загрузку соответственно оттуда же.. Еще думал по поводу штатных расписаний, можно сделать дополнительным реквизитом к специальности работников, и тянуть оттуда. И пересчет также. В моем табеле для подразделения администрация расчет «Ставка * количество отработанных дней / норма дней», для остальных «Ставка * количество часов за месяц/норма часов»(почасовка).
хорошая вещь, правда доработал напильником под себя, да будет автору счастье )
отличная вещь, авторам огромное спасибо
согласна с высказываниями, что небольшим фирмам нет смысла покупать ЗиК, например.
все расчеты выполняются средствами базовой версии 1С
Отлично! Спасибо огромное! Теперь все в одном окне хоть!
Огромное спасибо автору! Экономит время бухгалтеру, который совмещает должность кадровика =)
Замечание/Ошибка: Последний номер табеля не сохраняется.
Рекомендую сделать номер иабеля = номеру месяца. А если табель составляется по подразделениям, то сделать составной номер, например: «номер месяца/номер подразделения»
(0) riop, адаптировал/скомпоновал Вашу форму для 15″-экрана с разрешением 1024х768, так как не влезала кнопка печать + закомментировал предупреждение об отсутствии номера табеля.
Смотрите прикрепленный файл «8.2_Табель_для_2.0-вар002.epf» + картинку
(39)
Замечание/Ошибка: Последний номер табеля не сохраняется.
— не совсем понятно, что имеется ввиду. в обработке сохраняется последний номер табеля (при закрытии), а, при открытии, к нему прибавляется единица.
Рекомендую сделать номер иабеля = номеру месяца. А если табель составляется по подразделениям, то сделать составной номер, например:»номер месяца/номер подразделения»
— каждому по-разному удобно. мне удобно так, как сделано.
(40) респект и уважуха.
(41)
Я сегодня:
1) составлял табель за январь 2011г и поставил номер 1 -> печатал табель -> закрыл обработку
2) открыл обработку установил месяц февраль 2011г, а номер остался 1 -> пришлось вручную менять на следующий…
3) и так далее до декабря 2011г вручную менял номер.
Если я обработку не закрываю, а меняю месяцы, то номер табеля остается неизменным — что тоже не есть правильно.
——
Вот поэтомуто я и писал, что хорошо бы при смене месяца номер менялся бы(ну, хотябы номер табеля = номер месяца)
———
В остальном, спаисбо за полезную вещь!
Вполне прилично, спасибо.
Спасибо ОГРОМНОЕ!!!! Давно о такой мечтала!!!!!!
Если я обработку не закрываю, а меняю месяцы, то номер табеля остается неизменным — что тоже не есть правильно.
——
Последний номер табеля не сохраняется.
Еще раз спасибо автору. Ну так время экономит. Если учитывать, что у нас много фирм — то это просто спасение наше. Спасибки, спасибки.
респект автору!
Огромное спасибо! (Проверила на 2.0.43.12)
Спасибо!!! Для нас маленьких, мечта!!! У меня правда не проставляются расшифровка ответственного лица( проверяла на 2.0 (2.0.49.8)
Спасибо за очень нужную и полезную обработку, пользуюсь ей постоянно — реально экономит время.
Спасибо большое за обработку. Нужная вещь! Иначе приходилось «рисовать» документ в Excel!
Попробовала сформировать Табель за 2012 год (мне нужно будет и за 2011 год).
Программа выдает «Индекс находится за пределами массива»
Что нужно предпринять, чтобы было можно сформировать за прошлые периоды?
Заранее спасибо!
(55) Uejova, нужно внимательно читать описание или справку — там написано: «Для правильной работы обработки необходим заполненный «Регламентированный производственный календарь» на период формирования отчета.»
Сначала вышла ошибка при нажатии кнопки «Заполнить табель»:
{Форма.Форма(108)}: Индекс находится за границами массива
ВидДня = Данные[ДеньМесяца — 1].ВидДня;
Исправил перезаполнение регистра — Производственный календарь.
Уважаемый riop!
Исправьте грамматическую ошибку при печати — Не указана номер табеля. на указан)))) Бух смеялся…