<?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='\
Хорошее дело. Теперь есть костяк для задуманного давненько уже проекта. Нужно только добавить к этому некоторый функционал и будет то, что дохтур прописал)))
Да, хорошая простая штучка которая может пригодиться много где. Хотя дотачивать все равно придется… 🙂
Было бы прикольно, если бы работало хотя бы в минимуме…
Добавляет файлы только после добавления нового объекта привязки. И еще непонятно зачем в меню выведены спавочники контрагентов и договоров, хотя объектов таких в конфигуации нет
(4) контрагенты и договоры для интеграции в типовую конфигурацию.
(3) у меня работает. что у вас не так?
(5)ок понял
у (3) неработает видимо потому что как я написа в (4) добавление идет только после добавления нового объекта привязки, а первоначально без выбранного «объекта привязки » кнопка «Добавить файл» не работает
(4) ну да. для добавления файла должна быть выбрана «Коллекция», к которой будет принадлежать документ. выбирается она в соответствующем справочнике. вовсе не обязательно сразу добавлять новый объект привязки, в примере есть два готовых.
было бы хорошо сделать возможность этого выбора прямо в форме «Работа с файлами». нужно всего-то добавить СправочникСписок на эту форму.
(5) «контрагенты и договоры для интеграции в типовую конфигурацию.» Иначе не работает.
Простите, а где это в описании?
Если приложен файл *.dt то это подразумевает что загрузил и база будет работать. А что здесь? Сложно было добавить пару строчек об этом?
Почему выбран раздел «Конфигурация для 1С: Предприятие 8.1» — типа для любой конфигурации?
А если в моей конфигурации нет таких справочников?
(6) ну да. для добавления файла должна быть выбрана «Коллекция», к которой будет принадлежать документ. выбирается она в соответствующем справочнике. вовсе не обязательно сразу добавлять новый объект привязки, в примере есть два готовых.
было бы хорошо сделать возможность этого выбора прямо в форме «Работа с файлами». нужно всего-то добавить СправочникСписок на эту форму.
(4) ну да. для добавления файла должна быть выбрана «Коллекция», к которой будет принадлежать документ. выбирается она в соответствующем справочнике. вовсе не обязательно сразу добавлять новый объект привязки, в примере есть два готовых.
было бы хорошо сделать возможность этого выбора прямо в форме «Работа с файлами». нужно всего-то добавить СправочникСписок на эту форму.
З.Ы. и соответствующие обработчики событий перенести.
(4) ну да. для добавления файла должна быть выбрана «Коллекция», к которой будет принадлежать документ. выбирается она в соответствующем справочнике. вовсе не обязательно сразу добавлять новый объект привязки, в примере есть два готовых.
было бы хорошо сделать возможность этого выбора прямо в форме «Работа с файлами». нужно всего-то добавить СправочникСписок на эту форму.
З.Ы. и соответствующие обработчики событий перенести.))
надеюсь автор учтет пожелания и выложит новую версию.
нехорошо как-то получилось. рефрэш подвёл. потрите лишние каменты.
(8) ну чего ты завелся. везде бывают ошибки и недоделки. всё это не смертельно и легко решается.
(13) И где это интересно я завелся? 🙂
Даже минуса не ставил, хотя по уму — нужно было.
И мне не понятно за что столько плюсов и сразу.
Такое ощущение что ставили плюсы не попробовав ни разу. Просто за «красивые глазки»? Ни красивой реализации, ни внятного описания…
Типа сразу все во всём разобрались, даже ничего не откомментировав при этом?
И вообще, интересное совпадение, например:http://infostart.ru/profile/107640/
За полтора месяца скачан 1 файл. И сразу плюс за него…
Если это реальный человек, то я не верю что при такой активности на портале можно сразу разобраться что это за файл (в данной разработке) и что с ним делать.
Хотелось бы еще видеть ограничение прав доступа к файлам
(15) Кстати, статистика скачанных файлов может показывать неправильное значение. У меня на странице вообще 0 скачанных, а на самом деле это не так.
(15) стаж на данном ресурсе никак не связан с опытом человека по отношению к продуктам 1С.
обычный пользователь может и не разберется с этим сразу, но тот, кто имеет опыт работы с конфигуратором вполне может легко с этим разобраться.
Скажу про себя. Скачал файл. Посмотрел. Вижу dt. Создаю новую конфигурацию. Загружаю ИБ из полученного файла. Запускаю в режиме предприятия, тестю. Контрагенты не работают, договора не работают. Делаю вывод что это заглушки для интеграции в «типовую» конфигурацию. Меню «работа с файлами». Открываю всё подряд. (так как справочник коллекции уже открыт, в форме для работы с файлами уже выбран объект привязки и я вижу файлики, засунутые автором для примера) Пробую добавить свой файл и немного с ним поиграться. Всё работает, только с авторами косяк.
Иду смотреть инструкцию.
Пожелания к следующей версии:
* сделать в форме работы с файлами возможность выбора коллекции;
* в справке на скринах видно несколько отображаемых объектов привязки в форме, я такого не наблюдаю, отображается только один объект со своими файлами. + может быть стоит сделать иерархическим справочник коллекций?
* при даблклике на файле из списка мной заблокированных открывать его для редактирования;
* полазив в конфигураторе так и не нашел момента установки автора документа. З.Ы. полазив еще решил, что это из-за «демонстрационного режима» конфигурации. Если это дело правильно впилить в большую конфигурацию, можно будет добиться желаемого (ну или, если интеграция не требуется, немного допилить эту). В связи с этим хочется видеть мануал по «правильному» впиливанию этого дела в основную рабочую конфу;
* форма, показывающая версии файлов, не даёт написать комментарий для конкретной версии. (автор тут меняться не должен, ИМХО, поэтому ничего с ним делать как бы и не надо).
Извините, но «-»
Идея хорошая, но из того что выложено — заставить работать как в описании и скриншотах, не удалось
Где «линки» на договор, контрагента… подчиненная сруктура?
Тема интересная. Обещаю свести свое «фе» к нулю, в дальнейшем, при доработках
Коллеги,
в меню остались Контагенты и Договора — это просто косяк. В начале там они были, но для того чтобы упростить объединение с нужной конфой я их убрал.
Пример того как можно подключить новые объекты — справочник коллекции.
Скрины в описании сделаны на рабочей базе, поэтому есть некоторые несовпадения.
Критику принимаю, постараюсь в ближайшем будущем написать руководство по интеграции.
Может кто либо поделиться практическим опытом, как влияет «затягивание» документов в 1С на производительность в файловом и серверном вариантах? Может стоит создавать механизм внешнего хранения файлов с контролем их версий по контрольным суммам?
Ставлю плюс. Штука хорошая, если посидеть можно уже внедрять. Тем более уже давно есть желающие.
разработка хорошая, нужная. если бы я сидел на 8-ке — себе бы поставил. как раз то что надо…
.
вопрос: при открытии файла на редактирование: открывается «внутри» 1С..??
(23) конечно нет. файлы открываются в своих «родных» приложения.
doc и xls в MS Word, pdf в Adobe Acrobat (или в других ассоциированных с файлами приложений) и т.д.
(0) Я уже начинаю забывать, что обещал поставить ПЛЮС.
Я понимаю, что люди бывают заняты — но автору стоило бы откликнуться
Обновление:
— добавил руководство по интеграции (на примере УТ 10.3)
— исправил ошибку: не фиксировался автор
— увеличил длину наименования файла до 255
— убрал в демобазе в полном интерфейсе неработающие пункты
«Хотелось бы еще видеть ограничение прав доступа к файлам»
возможно в будущем и нам понадобиться, в планах, но не обещаю что скоро
«* сделать в форме работы с файлами возможность выбора коллекции;»
Справочник «Коллекции» — это пример, в нашей реальной базе такого нет, зато есть масса других объектов к которым привязываются файлы
«* в справке на скринах видно несколько отображаемых объектов привязки в форме, я такого не наблюдаю, отображается только один объект со своими файлами. + может быть стоит сделать иерархическим справочник коллекций?»
В руководстве по интеграции (которое теперь есть 🙂 ) приведен пример, как можно прикрепить клиента, его договора + что бы они отображались одновременно
«* при даблклике на файле из списка мной заблокированных открывать его для редактирования;»
сделаю в следующей версии
«* полазив в конфигураторе так и не нашел момента установки автора документа. З.Ы. полазив еще решил, что это из-за «демонстрационного режима» конфигурации. Если это дело правильно впилить в большую конфигурацию, можно будет добиться желаемого (ну или, если интеграция не требуется, немного допилить эту). В связи с этим хочется видеть мануал по «правильному» впиливанию этого дела в основную рабочую конфу;»
С автором была ошибка, строка назначения автора была закомментирована, почему-то…
Как правильно впилить — теперь можно посмотреть в руководстве по интеграции
«* форма, показывающая версии файлов, не даёт написать комментарий для конкретной версии. (автор тут меняться не должен, ИМХО, поэтому ничего с ним делать как бы и не надо). »
сделаю в следующей версии
«Может кто либо поделиться практическим опытом, как влияет «затягивание» документов в 1С на производительность в файловом и серверном вариантах? Может стоит создавать механизм внешнего хранения файлов с контролем их версий по контрольным суммам?»
SQL, 120 пользователей, ~100k файлов, в базе занимают ~ 4-5Гб. В день добавляется ~500 версий, читается несколько тысяч. С производительностью проблем нет.
«Я уже начинаю забывать, что обещал поставить ПЛЮС.»
Пора бы 🙂
эту разработку можно свободно использовать? ограничения есть какие-нибудь?
все стандартно:
Авторы запрещают использование алгоритмов и методик опубликованных в данной обработке, без указания на данную разработку и авторов. И любое коммерческое использование без согласования с разработчиками.
Обработка нужная. Силно упрощает работу с дополнительными файлами.
Автор не может запретить использование алгоритмов и методик — это не объекты авторского права.
вот если автор нарисует АЛГОРИТМ и выложит его скриншотом, то да — такой скриншот нельяз будет выдавать за свой или без указания авторства, а алгоритм использовать — запросто!