<?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
Гы!
«Вы не можете голосовать. Необходим рейтинг больше RATING_TO_RATE_PLUS»
Это мне оно так написало.
Караул!!! А куда смотрит суппорт? Что за дела? Рейтингов лишают средь бела дня…
Ну вы, блин, любители изобретать лисапеды.. Возьми штатную универсальную обработку «Универсальный журнал документов» и хоть обостройся всяких рееестров=журналов и прочее… сделанные свои журналы — сохраняются в виде настроек…
«Универсальный журнал документов» -это что за зверь и где лежит. Если опять на диске ИТС, повторюсь — диска в глаза не видел и с типовыми ситуация аналогичная.
>Ну вы, блин, любители изобретать лисапеды..
А тут пришел Чебурашка и все опошлил 😉
Ну что, что велосипед, но САМ же изобрел
Абадонна прав — нет у меня универсальных и типовых тоже — абсолютно все отчеты своими ручками. Возможно есть (даже наверняка) и получше. Не стреляйте в пианиста — он играет, как умеет… Нужен отчет — сажусь и пишу. А уж вам заценить — велосипед или самокат получился.
В 2006 году был комент: «Foxy, если не хочешь навеки остатся начинающим программистом — мой тебе дружеский совет: пиши сам. Чужие используй только как источник идей и методов «хитрого» программирования.
Пиши на мыло — скину образец для 7-ки. Но предупреждаю — писалась под себя: унификация и рядом не лежала. Подробности по мылу или ася — не хочется засорять чужие разработки не нужными комметами.» ….
Хотелось бы посмотреть на данную обработку — подойдет для нас или нет. Если не трудно — сбросить на мыло: sveta.argument@mail.ru
+1
Ура! я могу голосовать! Спасибо всем!
Так это ты была Foxy? Вспомнила… Надо же… Я начинаю медленно краснеть.
Нет это была не я. Но это, может быть, к сожелению. От чего краснеешь, VasilyKushnir?! Сегодня просматривала сайт и натолкнулась на данный коментарий (в связи с обработкой Пакетная Печать документов), ну и решила написать — может быть откликнешься…
Кушнир, научи, как на своих разработках девочек клеить 😉
ЭТО ШУТКА!!!!!!!!!!!!!!!!!!!!!!!!!!!
Угу…ему скажи…,да еще и список девочек с огромным рейтингом!!!
>список девочек с огромным рейтингом
……………………………………………………..
надеюсь, догадались, что я хотел сказать у кого должен быть огромный, у кого — наоборот
хотел поругать, типа в ТиС есть такой, но маленькие прибамбасы!!! Я растаял. Идею мне понравилась. +1
Очень много замечаний и предложений.
Выкладывать?
(18) Можешь не сомневаться, от тебя он с удовольствием все замечания примет
(на этот раз не шучу)
(13) Конечно — откликнусь. Только я пока отложил в сторону пакетную печать — другие идеи отвлекают (а текучка просто за горло берет).
(14) Это кого учить? Тебя?! Да где я учился, ты уже преподавал… (тоже шутка, а может и нет…)
(15) Огромный рейтиг ерунда, для для девочек главное — глубокие знания…
(18) Конечно выкладывай! Для того и выложил — можно оказывается и на своих программах учится благодаря вашим замечаниям. Была кстати задумка написать печать справочников, но когда увидел здесь УПС — понял, что тема закрыта. Правда осталась идейка написать приблуду работы со справочниками — чтобы все было в одном стакане: и печать, и корекция вплоть до периодики, а также копирование(в другую группу)/удаление — в общем все мыслимое и немыслимое, что можно проделать над справочником. Нечто типа обработки Влада Цылева, только с добавленным функционалом (скажу по секрету — рабочий вариант уже есть, но без разрешения Влада, сама понимаешь, выкладывать не этично).
Ну вот, в описании к благодарностям надо бы добавить пункт
4. Всем обратившим внимания на эту приблуду и особено высказавшим деловые замечания и предложения.
Спасиба за отчетик.
Правда если б еще была кнопка как в стандартных «Сохранить и автоматически запоминать настройку.» . А то бухи они ж ленивые даже 2 раза набрать одно и тоже нехотят..
(21) Думал об этом, но пока:
http://infostart.ru/forum/read.php?25,4076,page=9,ref=440
там как раз о сохранении на 9 странице.
Расковыряю сделаю.
Главное замечение.
В (4) все сказано. Очередной велик.
«диска в глаза не видел и с типовыми ситуация аналогичная.»
Зря. Много полезного пропустил мимо.
Вот если-б взять обработку UniJourn.ert и доработать. Там есть куда стремиться.
Допустим, нет обработки UniJourn.ert или она не доступна.
Как говорится, встречают по одежке… Смотрим на форму обработки и что видим? Элементы формы «уходят» за верхнюю границу формы. Нижняя граница — «напирает» на кнопки, правая — на таблицу.
В коде явно не хватает следующего:
Показать полностью
Обычно, число выравнивают вправо, остальное — влево.
В обработке все = вправо. Что не есть гуд.
Показать полностью
ИМХО это грубо.
За основу проверки дат можно взять функцию глПроверкаДаты(ДатаНачала,ДатаКонца) из типовой ТиС.
Показать полностью
Кто виноват, что не выполнился запрос? Пользователь или разработчик?
Где инструкция?
В процедурe тбРеквизитыСформировать() не плохо бы добавить следующие строки кода:
Показать полностью
С фильтрами какая-то беда.
1. Если выбрал условие и значение, то отказаться уже нельзя.
2. Условие «в» не работает. Сообщает:
Если Запрос.Выполнить(ТекстЗапроса()) = 0 Тогда
{E:MY DOWNLOADSINFOSTART.RUPROJECTS1147РЕЕСТРУНИВЕРСАЛЬНЫЙ.ERT(438)}: Условие(ТекДок.Контрагент.Наименованиев»МАГАЗИНЫ» <<?>> );
Запрос[5] : Неправильное использование операции сравнения
Запрос не выполнен — кури инструкцию.
3. Почему нельзя устанавливать условие для общих реквизитов?
4. Условие для перечислений не работает, выдает ошибки.
5. Условие для документов не работает, выдает ошибки.
6. Условие для счетов работает не правильно.
6. Нельзя выбрать фильтр для реквизитов неопределенного типа.
7. ИМХО список условий с избытком. Если условие можно накладывать только на справочники, зачем их сравнивать на больше/меньше?
8.
(30) п.1
Не заметила кнопку «Удалить условие», извини.
Соседняя кнопка «Удалить все условия» не работает.
Вместо строк:
Показать полностью
можно написать:
Показать полностью
Вместо кода:
Показать полностью
можно написать:
Показать полностью
Вместо:
Показать полностью
можно:
Показать полностью
Всё! Кладу то только экзешные файлы. А то poppy как раскритикует…. 😉
Но свою долю критики всё же внесу.
17 (!!!) функций/процедур со словом «Далее». И не лень тебе эти строки писать!?
(35) Отмазку, что привычка осталась с Си, не принимаю, я же не перетаскиваю привычки Дельфи на 1С 😉
И вдогонку:
Процедура ПритбИтоги () Далее
Процедура ПритбРеквизиты() Далее
На фига столько табов? И ведь все равно не отровнял.
А я эстет 😉
Кушнир! Из-за твоих «далее» пришлось лишний час провозиться в новом плагине, чтобы при выборе процедуры прыгало на «нормальную», без «далее». С тебя 10 литров пива
(34)
Я ж не со зла. Скорее, для пользы дела. Надеюсь, Василий не обидится. 😉
(35, 36, 37)
Тоже хотела написать про Далее, но руки не дошли. С одной стороны, предварительное объявление процедур, как говорят горнопляжники, «на скорость не влияет». С другой — код читать немного сложнее.
(38)
И мне пива… 😉
(39) >как говорят горнопляжники, «на скорость не влияет»
Чушь собачья! Даже если это и правда (очень сомневаюсь), то выигрыш будет в доли секунды.
Зашибись экономия: отчет будет работать не 59.1 секунды, а 59.0
(40) беру слова обратно, не заметил «не» перед влияет.
Предварительное определение лично я делаю очччччччень редко, если лень перетащить процедуру
выше вызывающей. Т.е. времени на выделение блока уйдет больше, чем на перелистывание вначало и вставки
строки со словом «далее»
(42) (37)(39) Ребята, ну в крови оно уже сидит…
Сделай переливание крови!
И ваще — неиб@т
(43) Срочно не обещаю, но подумаю…
(42,30)
Народ не то что-бы требует. Просто получается, что на уровне интерфейса ты позволяешь пользователю выбрать такие исходные данные, которые не может «переварить» твой алгоритм.
Если твой алгоритм не поддерживает условие «в», так и убери его из списка доступных.
Другое дело, сейчас отбор работает по наименованию. В этом случае, условие «в» нереализуемо. Есть и другие недостатки такого способа.
(42,29)
Идентификатор — для программы, синоним — для пользователя.
Я предлагаю заполнять колонку «Наименование» синонимами. Пользователь может их изменить или оставить как есть.
ИМХО это повысит юзабилити отчета.
(45) Пожалуй временно уберу, но на будущее все-таки множественный фильтр хочу добавить.
(46) Принято — обязательно доработаю.
А кстати UniJourn.ert в меня не кинешь?
А заодно «глПроверкаДаты(ДатаНачала,ДатаКонца) из типовой ТиС. » — интересно посмотреть на типовые. Может действительно стучусь ап стенку, а дверь рядом, да еще и открыта…
А вообще сооздается впечатление, что прохожу публичную порку…
Теперь я представляю, каково ребятам в этой шкуре. Но все равно здорово!. Иногда даже маленького намека достаточно, чтобы заметить свой ляп или недосмотр — после (31) сразу добавил комметарий к кнопкам удаления условий.
Маненько причесал (спасибо Поппи — много очень замечаний по делу) — остальное чуток погодя.
(25) фиксация верхних строк тоже позжее (не всегда их будет 6 — см. Колонка «ВСтроке»). Пожалуй добавлю счетчик дополнительных строк шапки.
(47)>А заодно «глПроверкаДаты(ДатаНачала,ДатаКонца) из типовой ТиС. »
Валий Батькович! Я тоже не юзаю стандартные, но в наличии-то они у меня есть.
Кинуть тебе Конфу что ли?
(50) Получил — СПАСИБО.
Может тебе сккинуть месячный набо дисков ИТС каких-нить стареньких — много интересного назыришь….
Дошли руки попробовать поюзать, так что держись Василий 😉
1. По моему как-то даже само собой должно подразумеваться, что клик на ячейке с документом долж открывать соответствующий документ. Настолько очевидно, что я даже не подозревал, что ты не сделал
2. Картинки мерзкие 😉
3. А почему фильтр не предусмотрен по Общим реквизитам документа?
4. |ОбрабатыватьДокументы Проведенные; А если мне и не проведенные нужны?
5. Слабо было сделать запрос не по одному виду документов, а по нескольким? 😉
В отличие от всехВышевысказавшихся товарищей позвольте выразить вам своё «5» мнение о вашей/ваших работе/ах… АХ… есть чему поучиться… и дизай… «ну такой интересный»…!
Удачи…
Замечания:
1. В печатной форме замени отображение вида документа на представление вида. Намного симпатичнее будет.
2. В скачанном только что отчете вся форма съехавшая, даже название.
3. В выборе даты форма явно лишняя, оставь стандарную — ВвестиПериод.
Хотя все замечания как бы из разряда придирок 🙂
А так чего ж, неплохо :))
Ребятыыыы… Дайте выйти из запоя — все доделаю.
(56)>Дайте выйти из запоя
Со следующего понедельника бухать не прекратишь — некому будет доделывать 😉
Демон обещает :)))))))))))))))
+1
идея хороша, вот если бы еще и табличня часть документа разворачивалось
(59) В самое ближайшее время постараюсь учесть все замечания.
❗ Здорово ❗
плин, ну че так трудно выложить скрин с «выходной формой»…