<?php // Полная загрузка сервисных книжек, создан 2026-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С и АД по телефонам и прочим полям физических лиц)
(2) Тоже идея. Хотя, я лучше не стану так делать 🙂
у меня из 1с загружаються и перемешаются пользователи в HelDesk заполняется E-Mail, добавляються и удаляться пользователи из групп AD, все функции по отдельности постил на мисте (давно уже),
хочу прикрутить скрыпты для управления пользователями 7.7 (что-бы была связь с группой и пользователями AD)
по сабжу плюсану, хотя не смотрел (за пропагандирование интеграции)
Очень нужна такая програмуля. Скачала. Можно для «самых одаренных» подробней как ею пользоваться?
(5) если Вы используете 1С:Предприятие 8.1, то Вам нужно скачать файл «Телефоны.EPF». Для 1С:Предприятие 7.7 нужно качать «Телефоны.ERT». И в той и в другой версии в меню файл в программе выбираете пункт «Открыть» и выбираем файл, который скачали. В открывшемся окне обработки в верхнем поле вводится фамилия, имя или что-то одно из них. А можно ввести только части, которые содержатся в имени и/или фамилии — как показано на скриншоте. Затем нужно нажать кнопочку «Найти/Поиск». Если по Вашему запросу что-то найдётся, то в широком поле отобразятся результаты поиска.
P/S: Если Вы хотите использовать эту программу без 1С:Предприятия, то Вам следует скачать на рабочий компьютер файл «Standalone.HTA» и открыть его в проводнике двойным шелчком левой кнопкой мыши.
Спасибо!!!
Коллеги! Скиньте ссылку на разработку на мисте. Заранее спасибо!
(8) чтобы обратиться к конкретному человеку, нужно в своём комментарии указать в скобках номер его комментария. Я, к сожалению, не совсем понял, о чём вопрос.
(4) Если не трудно скиньте ссылку для скачки разработки на мисте.
(8) Вопрос в том, что нужно в некоторых решениях 1С после заведения справочника пользователей, связанного с AD, нужно прописать телефоны и почтовые адреса из AD.
Прошу совета как поступить у меня выдает вот такую информацию
Возврат Скрипт.Eval(«GetObject(‘»+Путь+»‘)»);
{C:1CV77INFOTELEFONY.ERT(4)}: :
большое спасибо за совет.
(11) скудная информация.. Сам код ошибки какой? А в домене ли компьютер? И какая система? Не 95 ли винда?
(11) больше информации ни какой. Попробывал еще раз повторяет тоже самое.
Сетевое соединение для интернета, больше ни какой передачи файлами нет.
Винда XP SP3. Пробую все сам так как самоучка.Программирование 1С тоже составляю сам. Для учета бз по области всей организации афганцев. Если Я что не понял, или не правильно выразился прошу прощения.
(13) компьютер в домене ли?.. Этот справочник работает на основе Active Directory, которая работает в домене.
Еще раз спасибо автору)) И вопрос: где можно посмотреть идентификаторы всех атрибутов для подстановки в запрос? Хочется контактную информацию по максимуму вырвать.
(15) Если автор делал через WMI, что скорее всего, то можно воспользоваться
(16) ADODB, но мне пох, хоть WMI. Только скажи, какой неймспейс и класс.
(15) полный список полей можно увидеть и при помощи той самой утилиты, ссылку на которую привёл dushelov. Но там, если мне память не изменяет, поля с префиксом используются. А вообще, я пользовался справкой в Windows SDK 6.0.
Для интересующихся структурой Active Directory рекомендую воспользоваться следующими ссылками на Active Directory Schema:
Ссылка на схему в локальном SDK:
ms-help://MS.MSSDK.1033/MS.WinSDK.1033/adschema/adschema/active_directory_schema.htm
Ссылка в инете:
(4) дайте ссылку на Мисте, заранее спасибо!
(21) надоели, на:
(17)
Идея полезная. Спасибо.
Уфф, спасибо большое за творческую идею и великолепную её реализацию.
Теперь буду сопеть в выходные, копаться в коде всего того, что написали вы и посоветовали в комментариях.
А нельзя ли как то обозначить какие из файлов, выложенных тут, что означают ?
потому что название совершенно не адекватные…
(27) b-dm, можно. И я это сделал. Читайте описание, и обратите внимание на синие и красные буквы )
Скачал,сконвертировал в 8.2 заработало, спасибо.
А что за не 1С-ный файлик приложен, он исполняемый ?
(29) b-dm, (29) b-dm, этот файл является автономным гипертекстовым приложением, которое будет работать под ОС Windows. Код этого приложения можно просмотреть в любом текстовом редакторе.