<?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='\
+ за идею однозначный!
Работа эта представлена здесь именно как ПОЛЕЗНАЯ ИДЕЯ — на основе такого подхода можно реализовать в принципе любой свой учет.
Особенно удобно когда надо реализовать какой-нибудь оперативный дополнительный учет в программе «Бухгалтерия предприятия» (священная корова), и нужно ….чтобы ничего в ней не менять :). А то потом же самим ее обновлять каждый месяц 🙂
(1) — спасибо… пока подправлял описание мне уже плюс влепили 🙂
а свойства в типовых зачем даны? Прекрасно работает всё с ними. Зачем изобретать велосипед?
(4) здесь сделано просто по другому. Считай что свойства продублированы нужными и гарантированно существующими в БД.
Свойства пользователь может не создать, удалить и т.д.
(4) Кстати, в БП свойств как раз нет.
Автору: есть ли настраиваемая проверка обязательной заполненности реквизитов? Почему реализовано как регистр накопления, а не сведений? Как типизируется доп.реквизит? Есть ли настраиваемое разграничение прав на доп.реквизиты? И т.д.
Спасибо. Интересная идея
(6) уже есть БП КОРП, скоро и в БП будет наверное.
Скоро будет редакция 2.0 Бухгалтерии Предприятия 8 — будут показывать на осеннем семинаре партнеров 1С в конце сентября
Это идея обсуждалась здесьhttp://infostart.ru/blogs/1098/?p=2
http://www.infostart.ru/profile/9211/forum/9884/
А пример ее решения
Укажите ссылки на настоящего автора идеи (Сергей Троицкий). Ваша только реализация с регистром накопления.
Плюс поставлю после появления ссылок.
Формат второго файла .doc или какой? В чём открывать?
Имхо, неудобно потом в отчетах юзать.
http://infostart.ru/projects/4288/
Вот еще посмотрите по этой теме
(10) идея эта у меня, по сути, от умнейших голов департамента разработок 1С-Рарус. Я в свое время как сотрудник этой Великой компании делал задание «дополнительные реквизиты к шапке и табличным частям и работа с ними» — задача стояла такая: насколько убивается производительность с помощью такого подхода. Задача была мне выдана Гавриловым Володей (толковый программист и руководитель проектов, мой непосредстсвенный начальник в то время).
Спасибо за другие ссылки — значит задача может решаться по разному, и над задачей думает много разных и умных людей. И это здорово.
(11) — да ворд 2003 (неужели слетело расширение файла?)
(13) Простите, не поверю, я сравнила обе разработки, отличия очень маленькие, код чуть другой, регистр накопления добавлен. Все остальные объекты от Троицкого. ИДЕЯ его, исполнение в виде примера — его, вы придали более-менее пользовательский вид. Ссылку поместите обязательно, это просто неприлично, автор и так ПОДАРИЛ ИДЕЮ всем, вы же её присвиваете, это просто отвратительно. Жаль, автора нет…
+ 14 на сайте
(14) да успокойся, не надоелу «правду» искать
лично я вполне допускаю, что правильные идеи могут прийти нескольким людям (пусть и не однорвременно)
(1) а чем тебе просто реквизиты документа не нравяться?
Да и правда, зачем оно мне, уже успокоилась 🙂
Подобный функционал реализован в таких ПП как Инталев: Корпоративный менеджмент. Там это называется дополнительные свойства. Которые можно привязать к справочникам и документам. Кстати реализован через ПВХ, пару справочников и регистр сведений, в котором значения и хранятся. На эти доп.свойства обычно много завязывается при настройке бюджетной модели. Посмотрим как автор это реализовал.
идея увести специфические данные для конкретного предприятия «наверх» обсуждается давно
будь то доп.аналитика (как вы это называете), ДопРеквизиты или еще как то
еще 2 года назад я в «production» использовал такую подсистему и не раз
на сегодняшний момент развитие этой подсистемы выглядит так
так что согласен — идея одна и пришла во многие головы
реализация разная
(18) larisab, я ничего не знал ранее о вашем друге и его идеях и его работах на эту тему… да я и о сайте об этом узнал не так давно.
…и вообще я писатель, а не читатель 🙂 Мне проще (и интереснее) придумать, чем перереализовывать чужое.
Если речь идет об ИДЕЕ — оцените ее, если речь идет о РЕАЛИЗАЦИИ идеи — оцените ее….
larisab — от Вас плюс (или минус), однозначно!
(21) Да не друг, просто я читала ту ветку, и когда увидела вашу разработку, показалось знакомо, там идея была в подписке на события, понятно, что в воздухе носилось, но глаз резануло, пошла сравнивать и… сами посмотрите…
Мне как раз-то понравилось и я с удовольствием плюсану, но дайте ссылку на аналог, а то… «новый инфостарт»…
(22) по просьбе (уверен очаровательной) larisab не привожу ссылку (которая уже и так была в обсуждении) 🙂
Мне понравился вопрос, заданный однажды знатокам «Что? Где? Когда?»: с какими геометрическими объектоми можно сравнить мысли умных людей? (как то так звучало, точно не помню)
Ответ был такой: прямые линии (умные люди думают одинаково)
У нас пример паралельных линий :), не пересекающихся
Жду от larisab плюса! 🙂
Мне он будет особенно приятен.
Ставлю. По причине «какое удовольствие от принципов, если их не нарушать» (с) Э-М. Ремарк. Вам того же пожелаю 🙂
все эти штучки дрючки понятны, вот только слишком уж много телодвижений, чтобы добраться для просмотра и редактирования. конечные пользователи не жалуют
(25) сделай свой интерфейс — делов то… а еще можно сделать в объекте кнопочку (и тоже ее программно добавить) — открывается с отбором по GUID. Кнопка «История этого объекта»
26 — это по другой теме я писал 🙂
Спасибо за статью точно также мне пришлось делать года три назад….
регистр сведений и строчка(гиперссылка) в документе… «Детализация», работает на ура,
на регистрах сведений или таки накопления? плюсанул за описание.
Чем отличается от реализованных в Инталеве «КФ» дополнительных свойств ?
Я просто не знаю как реализованы доп свойства в Инталев — чем отличаеются не смогу ответить..
можно вести учет по проектам, категориям и свойствам и платить 3000рублей не нужно.
идея далеко не новая… учет по дополнительным свойствам уже давно реализован в том же КУБиКе:http://infostart.ru/public/56988/
и как раз предусмотрен для возмжности добавлять такие реквизиты типа ЦФО, сценарий.
У такого подхода есть только один минус, если есть табличная часть, то такой подход уже не срабатывает. А жаль…
2(10): этой идее уже 100 лет. Еще у Инталева в их Корпоративных финансах на 7.7 использовалось. 😉
(34) Причем тут 77?
при том, что этой идее уже лет 6 без малого
для support:
Дорджи, можно как то избавить меня от преследований этой «озабоченной» larisab_Ы?
Ниже скриншот типа «я забираю мои игрушки, и ты не писяй в мой горшок» 😀 — в детский сад превращает инфостарт
(37) А в чем проблема? Тебе поставили минус. Не просто минус, а минус на ранее поставленный плюс. Т.е. нуль.
Что в этом такого?
(38) Именно так 🙂
Подсистема снова в свободном скачивании.
Надеюсь эта конфигурация более полезна, чем тупые комментарии, забивающие мою ветку (и Инфостарт в целом) мусором из амбиций и самодовольной глупости…