<?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) загружает чё-нить и распаковывает 🙂
Да. Для порядконаводительства в справочнике, наверное, будет полезной, так что плюс за идею!..
Старый добрый командер.
Для возможных идей.
Может быть, стоит сюда добавить функции работы с документасми и прочими объектами конфигурации?
Еще, может быть, сделать возможность «подключения» внешних обработок и прочего.
Поле для развития гигантское — вся конфигурация и весь функционал файловых менеджеров 🙂
Поддерживаю про проверку целостности, но и безусловное удаление тоже нужно — в принципе как это и есть в том же фаре — лично я его больше люблю :):)
Клевая идея, можно развивать ))) плюс однозначно
Где-то я уже подобное видел? А вот где:
http://infostart.ru/public/65473/
Интересные идеи, надо будет обязательно внедрить, особенно понравилось с выгрузкой-загрузкой, даже отельных ветвей, как в реестре.
Прикольная штука!
И удаление дублей туда же. На ИТС есть, только встроить, чтобы под рукой было.
Слушай отличная идея! точно ПЛЮС
Прекрасная идея. Просто и красиво. Плюс.
Свежо и оригинально. Идея мне понравилась. Ставлю плюс. На управляемых формах осилите?
Замечания, я бы изменил:
1. Названия — создать группу вместо создать каталог. Я так понимаю планируется отдать пользователям и им незачем еще новые синонимы терминов вводить.
2. Как вариант, вместо выбора справочника выпадающим списком добавил (по типу списка метаданных из консоли запросов), а далее по выбору типа справочников — раскрывались бы данные внутри этого справочника.
Как раз занимался наведением порядка в справочнике «Номенклатура», а тут эта обработка подвернулась. Удобства ощутил по полной. Практически 90% манипуляций произвел без мыши — ОЧЕНЬ удобно. Неплохо было бы добавить выделение строк пробелом, как в ТК.
Автору заслуженный +.
Идея супер. Для сортировки просто незаменима. Можно добавить просмотр ссылок на объект.
Любопытно. Плюс автору
Управляемые формы, это обязательный пункт. Ну названия кнопок, уж я думаю каждый может сам под себя подправить. Вообщем все интересные пожелания будут учтены, развивать проект буду.
Проверку на целостность — однозначно нужно!
Можно просто не отображать помеченные на удаление (или отображать опционально).
ок, проверка на целостность будет по умолчанию.
Интересно 🙂 вот бы 1с сделало это в типовых.
И еще небольшое замечание — не хватает кнопки синхронизации левой и правой части.
1. Поведение кнопки «удалить» — полное или пометка лучше сделать настройкой с предупреждением при установке. В настройки — прятать/отображать помеченные на удаление
2. Путь — толькоПросмотр, чтобы копировать и редактировать для перехода
+ запоминать любимую папку в выпадающий список
3. Панель любимых справочников с выбором иконки
А в прочем… Это же не ежедневная работа))
Нравится ТоталСомандер — удобный. Теперь вот что-то похожее для 1С. Что ж попробуем. Очень интересно…
Идея оригинальная, красава! 🙂
Интересные «пассатижы». Можно рядом с кнопкой Удалить поставить кнопку Ссылка, чтоб лишнего не «крякнуть».
Предложения
1. Сделать кнопку «Настройки»
2. В настройках выбор варианта удаления:
— Пометка удаления
— Непосредственное удаление с проверкой (в этом случае происходит поиск ссылок на элемент)
— Непосредственное удаление без проверки
Да, доп.форма «Настройки» будет обязательно.
плюсую за оригинальность идеи!
(6)(13)(25)(29) Это — оригинально? Кхм. Эта идея существует столько же, сколько файл-менеджеры двухпанельного вида и 1С как таковая. Я делал это ещё на 7.7, правда, не для справочников, а для смысловой принадлежности документов в журнале, но не суть.
И обработки похожего вида на ИС уже точно бывали. Если вы такого не помните, это не значит, что до вас его не бывало.
А судя по тому, что «добавлен лишь два основных справочника» — это ещё и не универсал, хотя такой универсал сделать элементарно.
Кнопка «Создать каталог» вгонит юзера в ступор, лучше напишите «Создать папку» или «группу».
Драгэндропа, подозреваю, нет, а его многие юзверя любят.
В общем, новое — это хорошо забытое старое. )))
специально не сделал выбор из всех справочников, здесь это лишнее
Оставлю заметочку, на досуге посмотрю
Спс автору
Спасибо автору!
Идея отличная, поле для дальнейшего развития безгранично 🙂
Огромное Sorry, щелкал на «+» -влепился почему-то минус. Достойная обработка
Спасибо! Оригинальная идея
Спасибо.
Идея — отличная!
Удаление без всяких предупреждений чрезвычайно опасно…
Солидарен с:
Класс. Осталось сделать цветовую схему и панельку в стиле нортона ))))
плюс за интересную мысль) как вариант можно добавить верхним уровнем перечень справочников из метаданных (как в тотале перечень дисков, правда там опционально)
(30) Yashazz, а еще говорят что новое — это хорошо восстановленное старое)
еще можно добавить переименование по F2 и переход в корень по ctrl+
Немного позаморачивался — вот что вышло (см. вложение). Баловство всё это 🙂
поле для дальнейшего развития безгранично :), ех было бы время побольше.
Прикольно.
Спасибо! Оригинальная идея
что-то потерялся: кто-то тут писал, что нужно добавить «как корень диска выбор справочника». тут или смену справочника на обе панельки одновременно (чего пользователь не всегда ожидает), или перемещение номенклатуры в контрагентов. =) а этого не ожидает ни номенклатура, ни контрагент. 🙂
(45) ShantinTD, не понял смысла данного поста.
(46) все очень просто. Тут кто-то что-то писал о том, что по аналогии с переходом в корень диска (и выходом на список дисков) в тотал коммандере можно сделать смену вида справочника.
На мой взгляд этот вариант — неудачный. Вполне достаточно предложенного Вами (выбор из списка) и в (41) DrAku1a (кнопка «F12 Сменить справочник»).
Не совсем в тему: мне бухгалтер доказывает, что если контрагента завели от имени одной организации (и сделали ему всего одну продажу!, а потом он стал поставщиком для других организаций в этой же базе), то и хранить его нужно в группе «покупатели первой организации» (пофиг, что он за все два года своего существования в базе купил всего один раз, два года назад. зато поставляет товар другим организациям в этой же базе — постоянно). До сих пор не склонен был считать его (бухгалтера этого) юзверем, но после услышанного — я не обзываю, я не стесняюсь называть как оно есть. Вот и тут представил: дать ему такой «коммандер» с возможностью сменить справочник из «корня диска» — я не готов поручиться, что он не попытается переместить контрагента в номенклатуру, например.
Глядя на такой ТС — осень меняется на весну! И на душе стает тепло.
тяжеловато для восприятия, пользователям такое лучше не показывать 🙂
плюс за идею
Идея хорошая
Красиво и эргономично, однозначно плюс)
У меня одного не работает переключение между панелями по TAB
(47) ShantinTD,
Пример лишний раз подтверждает мою давнюю нелюбовь вообще к папкам внутри справочника «Контрагенты».
Еще в 7.7 безжалостно истреблял папки «Покупатели» и «Продавцы», делая «плоский» справочник.
А если Контрагент вообще «фифти-фифти»? Куда его отнести?
P.S. ShantinTD, а у вас, как я понял, внутри еще и подпапки по организациям? — вообще офигеть!
(53) Abadonna, у нас было несколько отдельных бухгалтерских баз. Потом их решили объединить.
В результате у нас папки вида «Покупатели первой организации», «покупатели второй организации» и так далее (всего организаций ~10), и с поставщиками такая же фигня. А еще сотрудники, налоговые, «Прочие» (куда же без них?!), прочие и не рассортированные по папкам. Налоговые, кстати, тоже хитро разложены: часть в специальную группу «налоги и фонды», а часть — по разным другим группам.
И для вновь созданных контрагентов зачем-то сохраняется эта ахинея.
В приведенном мной примере контрагент действительно сначала стал однократным покупателем первой организации, а потом — постоянным поставщиком для оставшихся девяти.
Переубедить бухгалтера не удается до сих пор.
P.S. О том, чтобы придерживаться какого-то минимального шаблона наименований (например: НазваниеФирмы, ИП/ООО/ЗАО/…) — и речи не идет — названы они в абсолютном беспорядке: Общество с ограниченной ответственностью Поставщик1, ООО Поставщик2, «Поставщик3» ИП, И.О. Поставщика4 ИП, ИП Поставщик5 И.О.
Ну-ка найди нужного… «без поллитры не разберешься».
(54) ShantinTD, а чем они мотивируют отказ от наименования по шаблону??? Им же и работать то легче будет.
(55) если бы они чем-то мотивировали!!! «Нам так удобно!» — вот у них аргумент.
Я им предложил воспользоваться Вашей обработкой — «ха, ха, прикольно, но нам не нужно, нам и так нормально!»
Непробиваемо!
Тут еще следует сказать о том, что очень немногие пользователи 1С из виденного мной множества таковых умеют пользоваться клавиатурой в 1С. В 98% случаев все(!), кроме ввода текста, они делают мышкой. И начинают кричать «а-а-а-а-а! что ты сделал?», когда показываешь им что-то с клавиатуры.
Благо, что я залезаю в бухгалтерию изредка (счет выставить), и «своих» контрагентов завожу так, что найти их не составит труда.
Еще не смотрел. Но за подход +.
Интересно, надо будет попробовать. В Винде работаю только через файловые менеджеры, может и в 1с стоит.
Огромный плюч за идею!
Очень удобно для корректировки в Номенклатуре (особенно когда нет ответственного за порядок)
Классно! Остался только один штришок — заменить стандартную иконку обработки в заголовке на ту желтую дискетку в топике 😉 Удачи!
Идея интересна. Почему кнопка просмотр не работает ( даже не предусмотрено, что она будет работать)?
Тысячелетний баян:
На данный момент есть версия Data Commander 2.4 под 8.2, на недельке выложу и её.
Выбранные прикладные объекты (не только справочники) можно быстро слить в одну ссылку, удалить непосредственно и т.д. Можно обрабатывать ссылки, полученные запросом. Также можно вытащить данные из внешних БД через ADO, запросом к другой базе (7.7, 8.2), MXL, и обработать их, например, произвольным алгоритмом.
(62) WalterMort, выкладывай, посмотрим. Кстати, после того, как я выложил свою, появилось еще 3 аналога. :))))
(63) Публикацию подготовлю попозже, плюс дошлифую до состояния «можно выложить». Текущая 2.3 вот,http://www.fayloobmennik.net/3342014 если любопытно.
Отличная обработка. Только сразу к ней прикрутил множественный выбор, и удаление все же заменил на пометку удаления. А то уж очень круто 🙂
Однозначно плюс за работу!
F4 можно вставить — для просмотра, а F3 — переименовать (переделать) для поиска.
Уважаемый автор, предлагаю следующую идею!
Используя механизмы моейпубликации можно к Обработке прикрутить обмен между базами. Например, в левой части окна будут справочники (документы) из ИБ1 , а в правой — справочники (документы) из ИБ2. Далее будет кнопка «Копировать», которая запускает механизм обмена через xml.
Обсудим?
При копировании справочника поддерживается копирование подчиненных справочников?
(68) Нет. Такой задачи не стояло.