<?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='\
Арчибальд ау…
не дай бог чтобы у нас увольняли подразделениями или пачками…типун тебе. Продай обработку автогигантам)))) не автовазу там или иж авто
(1) УА!!!
Аватарка понравилась :))
Но в следующий дайджест все равно не включу. Это было бы профанацией при моем уровне восьмерочной компетенции (~0)
А что не так с компетенцией???
Если всех уволить, зачем тогда 1С ЗУП ? тогда уж и модуль по самоудалению базы доделайте :))
на скриншоте выглядит качественно
Ребятки давайте я вам кое что поведаю. В наше кризисное время многие собственники чтобы спасти бизнес закрывают ооо1 увольняя из него сотрудников и тут же открывают ооо2 принимая в него этих же сотрудников. Так что не так все плохо.
(4) Ламер я в 8-ке. Вот за 3 дня удалось написать на 8.1 две обработочки, на которые в семерке мне по часу бы хватило вместе с дизайном…
Сегодня с утра пришла в голову идея авто заполнения тч пенсионерами. Т.е. сделать еще 2 отбора по возрасту и полу.
Арчибальд мы верим в тебя. Чтобы дать рецензию на 81 работу твоих знаний достаточно. Некоторые руководители проектов РП вобще не програмисты, однако проекты могут вести вполне успешно. Так что дерзай!
(10) Спасибо за доверие. Мне бы еще парочку доп. часов в сутках… :))
Маг Иван — отвяжи обработку от глобальных модулей, а то: «{Форма.Форма(22)}: Метод объекта не обнаружен (ЗаполнитьШапкуДокумента)
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, глЗначениеПеременной(«глТекущийПользователь»));», твоя обработка не будет работать в следующем релизе…
Спасибо за программу. Она действительно актуальна.
(7) Кому война, кому мать родна…
И где это «в наше кризисное время» открывают-нанимают? От всех работников нашего предприятия большой тебе привет… Попадись только 😉
(16) igor_gk !
В (7) я прозрачно намекал на одну из схем ухода от налогов, когда собственник объявляет ООО банкротом и в конечном итоге закрывает его, спасая тем самым бизнес. При этом сотрудники увольняются формально, продолжая работать и получать ЗП, но уже в другом ООО.
Я не в коем случае не пытался создать инструмент в помощь проклятым империалистам-узурпаторам, которые поголовно направо и налево всех увольняют. Это обработка — инструмент расчетного отдела, как и большинство других моих обработок.
(17)
Да ладно, шутим мы… 😉
Сам же скриншот какой выложил? Вот и у меня юмор 😉
(5) Обработка нужная. И кризис тут ни причём. У меня, например, в паре организаций есть сезонные работники. Так по окончании сезона их и увольняют «пачкой». Так что, посмотрю, думаю, пригодится.
Люди помогите, у меня при нажатии в обработке на «Подбор» выдает ошибку «{Обработка.УправлениеУвольнениями_НИИАС.Форма.Форма(52)}: Метод объекта не обнаружен (ОткрытьФормуВыбораСотрудникаОрганизации)
ПроцедурыУправленияПерсоналом.ОткрытьФормуВыбораСотрудникаОрганизации(ЭлементыФормы.СотрудникиКУвольнению, ЭтаФорма, Ложь, ДатаУвольнения, Организация, 1);». Кто знает в чем причина, помогите, очень прошу.Использую конфигурацию «Зарплата и управление персоналом 2.5»
Итак, наконец, я выложил обновление для релиза 2.5.20. Много нового. Оч устал писать нет сил. Смотрите сами. 😉
Релиз 2.5.20.3. Демо база
При открытии обработки ошибка:
<<?>>Упр.РассчитатьДокументСреднегоЗаработкаУпр(РасчетныйДокумент,Ложь);
Кстати:
Итак, наконец, я выложил обновление для релиза 2.5.20. Много нового.
И при этом в комментарии обработки:
😀
И модуль забыл закрыть под пароль 🙂
Над комментариями в инициализации переменных модуля поржал, спасибо 😀 😀 😀
Такая же проблема, {Обработка.УправлениеУвольнениями_НИИАС.Форма.Форма(799,13)}: Переменная не определена (Упр) <<?>>Упр.РассчитатьДокументСреднегоЗаработкаУпр(РасчетныйДокумент,Ложь);
(22) Эх, ну и непонятливый ты СергейКа ! 😀
Основной заказчик — это не сайт Инфострат, т.к. денег сайт мне никогда не приносил. Для клиента обработка была переписана более месяца назад. А для массового зрителя — выложена только сейчас. Модуль Упр — это тож мое творчество ))) — исправлю.
Что касается пароля — то его я намерено не поставил (для справки: последние релизы платформы 8.1 не позволяют ставить пароль на код, содержащий директивы препроцессора), что бы такие как ты могли полюбопытствовать что в модуле твориться. Кстати так и не понял где смеятся: переменные были названы не для хохмы, а так чтобы через год код открыть и было все понятно.
Не могу выложить новую версию обработки. Сайт тормозит и трещит по швам. Рыыыы
Версия 4.1. Вечер 20 марта 2010г. Тестируем на типовых!
(24)
Понятно. Но всё же… Я называю это «артефакты» т.е. куски кода, комментариев, описания и т.п. оставшиеся от предыдущих версий. Чистка/корректировка всего этого — это первый этап перед публикацией или отдачей заказчику после проверки работоспособности в целом. Естественно косяки бывают, но не в таком же количестве 🙂
Я в курсе давно уже. Но это элементарно обходися если используются типовые конфигурации.
😀
http://infostart.ru/public/19740/ ;
Вот спасибо то, и обо мне позаботились 😀 Ну как же не заглянуть в модуль, если:
а) частично перекрывается функционал моей обработки сделанной на полгода пораньше
б) выдает ошибки сразу при открытии;
в) в комментариях описано что обработка зачем-то лезет в реестр.
Ко всему в совокупности ❓
И кстати, не надо обо мне так беспокоиться 🙂 При необходимости могу посмотреть модуль даже если он закрыт паролем или как-нибудь еще.
Не переменными, комментариями. Хотя и наличие некоторых переменных, которые не несут ни смысловой, ни функциональной нагрузки — «артефакты».
(27) Может у меня параноя, но мне кажется, что очень много программистов зовут <Сергей>. Они повсюду 😮 Да же сейчас 2 шт на расстоянии 2.5 м.
Поправь ссылку свою на работу с «перекрываемым функционалом»