<?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='\
может номер строки табличной части лишний? и печатать для текущей выделенной строки по умолчанию стоит?
я не ставила 😀 мне проще нашим кадрам объяснить, как пользоваться дополнительным полем в форме, чем отвечать на постоянные звонки: «Я тут нажала, а у меня не то появилось»
Хорошо бы по умолчанию сделать всё-таки печать всех строк, имеющих нужный вид неявки. Или регулировать доп.свойством.
Кстати, как вам ЗУП на 8.2? Косяков много? Пользователи спокойно воспринимают?
(4) позже попробую сделать, пока не до этого….
косяки конечно есть, как же без них… пользователи до сих пор в шоке (зуп стоит уже 5 месяцев), особенное если учитывать, что до этого кадры работали в ворде, а зарплатники в БЭСТе. худо-бедно учимся, уже виднеется свет в конце тонеля
{ВнешняяОбработка.ОтпускаПоБеременностиИРодамТ6.МодульОбъекта(129)}: Ошибка при вызове метода контекста (ПолучитьОбласть): Область не найдена: Согласовано
ОбластьМакетаСогласовано = Макет.ПолучитьОбласть(«Согласовано»); // с кем согласовано
по причине:
Область не найдена: Согласовано
(6) Извиняюсь, мой косяк, блок Согласовано работал только для макетов нашей организации. Исправила, можно качать заново. Однако интересен тот факт, что обработку скачали уже 62 человека, а ошибка обнаружилась только сейчас =)
(7)
Да ничего удивительного. Качают «абы було», на всякий случай.
+(8) Кстати, и ваши могли спокойно обойтись без оного, у вас же там не конвейер беременных? Ручки бы не отвалились в кадрах в Ворде нарисовать в кои-то веки
(7) Плюсую
(8) Даже если «абы было», можно же запустить посмотреть. не понимаю я таких
(9) как показывает практика, ручки у них отвалились раз в месяц приказ в ворде набивать… ну, как говорится, любой каприз за ваши деньги 🙂
(11) Слушай, а ведь бывают и НЕ кадровые приказы…
Как же они, бедные, их печатают? 😀
(12) наверно, таких еще небыло, ибо если бы им еще какую бумажку надо было, они бы уже давно ко мне прибежали. Забавно то, что они только с начала года начали работать в 1с, до этого ВСЕ приказы набивали в ворде
Процедура ПолучитьТекстЗапросаПоОтветственнымЛицам() переехала из модуля ФормированиеПечатныхФорм в модуль ФормированиеПечатныхФормЗК, после редактирования все работает. Автору огромная благодарность!!! 😀
а у меня как раз такой приказик пользователи попросили, расчетчики довольны. Спасибо, огромное автору.
а у меня на ЗуП 2.5.40.4 вылезла ошибка
{ВнешняяОбработка.ОтпускаПоБеременностиИРодамТ6.МодульОбъекта(34)}: Метод объекта не обнаружен (ПолучитьТекстЗапросаПоОтветственнымЛицам)
Запрос.Текст = ФормированиеПечатныхФорм.ПолучитьТекстЗапросаПоОтветственнымЛицам(
Не удалось сформировать внешнюю печатную форму!
Метод объекта не обнаружен (ПолучитьТекстЗапросаПоОтветственнымЛицам)
Прошу прощения, прочитала комментарий (14), исправила — Все работает!!! Спасибо!
{ВнешняяОбработка.ОтпускаПоБеременностиИРодамТ6.МодульОбъекта(34)}: Метод объекта не обнаружен (ПолучитьТекстЗапросаПоОтветственнымЛицам)
Запрос.Текст = ФормированиеПечатныхФорм.ПолучитьТекстЗапросаПоОтветственнымЛицам(
Пожалуйста, поясните подробно, как можно исправить косяк, не привлекая программиста!
файл отредактирован в соответствии с релизом 2.5.42.4 ЗУП
Вопрос теоретическо-филосовский: если законом не предусмотрен отпуск, то нет ли в этом нарушения закона(ов)?
(20) нет, не нарушает. Организация имеет право издавать любые внутренние приказы не противоречащие законодательству
Я уже третий год успешно сопротивлялась написанию подобного приказа. Из подобного же — приказ на смену фамилии. Но плюсик поставила, сейчас скачаю и попробую прикрутить с ЗиКБУ.
(22) …ну, еще дождаться бы от Автора приказа «на разрешение получить единовременное пособие из ФСС» 🙂
—
(23) если попросят — и такой сделаю =) любой каприз за ваши деньги =)
Отпуск по беременности и родам обычно плавно переходит в отпуск по уходу за ребенком до полутора лет и мохно было бы расширить возможности данной формы. Сами пока в Ворде набираем.
(25) Печатная форма отпуска по уходу за ребенком есть в документе Отпуск по уходу за ребенком. Зачем изобретать велосипед?
Хорошо бы добавить авторегистрацию, а также отключение ответственного и списка согласований.
знакомая ситуация))
А мы, вообще, не печатали такой приказ, пока ФСС не потребывала при подаче документов на возврат. И я уже месяц смотрю на бумажку образец, а руки не доходят сделать обработку, поэтому с радостью скачаю и поблагодарю автора.
счас скачну) посмотрим.. заранее плюс
Отлично, несколько раз уже разгорался спор по этому приказу. Нужен он или не нужен. Проблема в том, что в фонды требуют ксерокопии этих приказов. Вот и получается чехорда. Поэтоу лучше уж иметь печатную форму, да и 1С-никам давно бы пора ее внедрить в ЗиУП, а не упираться, что приказ не является основанием для отпуска по беременности и родам.
(31) profych1, если 1с-ники начнут внедрять в конфигурацию все что просят фонды и налоговые, но не требуется по законодательству, то мы с Вами устанем обновляться… :-)))
(32)а если не начнут, то мы устанем сами это дорабатывать
(33) если за нас все будут делать 1с-ники, зачем же тогда вообще мы нужны?
(34)например, чтобы исправлять их косяки =)))
(35) Это точно… Об этом я как то подзабыла :-)))
Хорошая печатная форма. Хотя вопрос с ее необходимости и спорный, автору большое спасибо за работу!!
Спасибо, хотел сам писать. А количество дней отпуска сохраняются?
Отлично у нас как раз начальник КАДРОВ потребовал печать данного приказа. Спасибо. Кстати долго ржал когда он заявил, дословно: «Внести в справочник отпусков Отпуск по беременности и родам для формирования приказа о предоставлении отпуска по беременности и родам». После этого захотелось действительного так и сделать и поставить галку предоставлять всем.
(39) может ему еще нужно график отпусков по беременности и родам?))))))))))))))
Спасибо, как раз пригодилась
Спасибо, печатная форма очень полезная.
Подскажите, пожалуйста, как поступить:
печатная форма привязывается к бухгалтерскому документу НачислениеПоБольничномуЛисту, а печатать этот приказ должны кадровики, которым нет доступа к этому виду документов?
Обработка крепится к документу НеявкиИБолезниОрганизации — кадровому документу.
В некоторых компаниях от нечего делать только и придумывают новые формы. Так что сойдет. От меня +.
Большая благодарность автора за данную печатную форму, как раз понадобилась такая форма
Спасибо, пригодилась!
Нашим понадобилась, в целом нормально
Но на одну недоработку сразу могу указать: для подключения к документу «НеявкиИБолезниОрганизации» неплохо бы использовать макет «Параметры_Авторегистрации». Иногда все-таки и простые пользователи качают, а у них от действий по розыску и подключению нужного документа и ступор может быть.
№2
Дополняю:
По умолчанию исполнителя стоит заполнять из данных поля «Ответственный». Там, конечно, не физ. лицо, а пользователь и не сотрудни, но если «пользователь» заполнен полностью и правильно, проблем с поиском нужного физ. лица или сотрудника нет.
ЗУП 2.5 (2.5.94.1)
{ВнешняяОбработка.ОтпускаПоБеременностиИРодамТ6.МодульОбъекта(27)}: Метод объекта не обнаружен (ГоловнаяОрганизация)
Запрос.УстановитьПараметр(«ГоловнаяОрганизация», ОбщегоНазначения.ГоловнаяОрганизация(СсылкаНаОбъект.Организация));
там функция «ГоловнаяОрганизация» в модуле «ОбщегоНазначенияЗК»
То верно, но учтите, что публикация не первой свежести.