<?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='\
спасибо за подробный рассказ формирования внешней печатной формы
За труды «5», за оЧепятки «4».
«…Распика о получении товаров»
Подкорректируйте.
Подредактировал.
Было же уже вроде
http://infostart.ru/public/286059/
Я вижу по ссылке копирование счета.
Статье плюс.
Можете воспринять мое сообщение как спам, но тут написал про все варианты внешних обработок под УФ (заполнения таб части, печати, печать с предварительным открытием формы, печать с выводом в ворд, опен офис….)
(6) monkbest, я не против пусть народ обчитается, мне в свое время не хватало таких материалов.
(7) мне тоже:) с помощью документации к стандартным подсистемам на ИТС писал свои обработки, затрахался и решил выложить на всеобщее обозрение
Полезно.
Весело. Если честно, то статья бесполезная.
Если для новичков, то не хватает подробного разбора для чего нужны чудо строки:
ПараметрыРегистрации.Вставить(«БезопасныйРежим», ЛОЖЬ);
ПараметрыРегистрации.Вставить(«Версия», «1.0»);
и где же «ВызовСерверногоМетода», «ОткрытиеФормы» и т.д.
А такой пример давно есть на ИТС.
Да,да,да…»все уже было на ИТС», но если бы вы подробно раскрутили механизм разработки хотя бы более мене сложной внешней обработки, то этого точно на ИТС не было.
(10) tindir, а можете ссылку на its дать?
(4) Их уже куча с 2011 года.
Просто автор (0) в первый раз столкнулся с конфой на БСП и радостно побежал гордиться в интернеты.
(12) Целиком согласен. И, что характерно, толковых именно «статей» среди них нет. Есть огрызки с ИТС вкупе с мешаниной на основе собственных поделок. Сплошь доработка чужих шаблонов и копипаст, никакой нормальной теории даже хотя бы в объёме ИТС. А уж чтоб разжевали специфику работы с, например, «ВызовКлиентскогоМетода» для обработки заполнения — мечты, мечты… Самому, что ли написать, ибо осточертело наблюдать это однообразное дилетантство…
(13) Yashazz, уровень ИТС никому не нужен, его можно на ИТС прочитать, нужна «новизна», хотя что-то никто ссылку на ИТС так и не скинул. Видимо, её никто в глаза сам не видел:)
Нужна «быстрая» инструкция, чтобы при разработке печ.формы тратить время не на познания тонкостей БСП, а на рисование красивого макета и правильного кода.
Никому не надо понимать «ВызовКлиентскогоМетода», надо простое правило: цель 1 — код 1, цель 2 — код 2… а почему, зачем — не интересно многим.
Нужно проще: открываем свою форму до формирования макета — клиентский вызов, не открываем — серверный и два образца/шаблона, чтобы забыть это БСП как страшный сон и заниматься творчеством.
Я в своих статьях старался придерживаться принципа «быстрой подсказки», жалко IS не разрешает публиковать то, что уже где-то опубликовал.
(12) Поручик, а Вы в курсе, что печатные формы образца 2011 не работают в БП 3.0 и ЗУП 3.0 образца конца 2013ого? БСП не стоит на месте
(14) monkbest, вам что, настолько лень или вы искать совсем не умеете?http://its.1c.ru/db/bspdoc#content:22:1:issogl2_созданиеновогоотчетаилиобработки
Совершенно никто не призывает копаться в глубинах, это для энтузиастов. Но в энцатый раз наблюдать некие огрызки вместо статей, за которые навешано сотни плюсов, притом что даже воспользоваться этими горе-публикациями иной раз трудно (начато за здравие, кончено за упокой, или понадёргано отовсюду и хаотично перемешано). Лучше, чем подано на ИТС, я просто не видел.
А если кому-то надо не только разжевать, но и в рот положить — то неясно, что этот кто-то делает на форуме профессиональных разработчиков.
— ну, вы за всех-то не говорите. Тупым быдлокодерам, может, и не нужно, а грамотному специалисту очень даже понадобится.
(17) Я не вижу тут статьи. Я вижу незаконченный ошмёток некоего частного примера.
Я тут погонял давеча один блок, строго согласно статье по ссылке, и уж не знаю, которая там БСП по версии, но в последних релизах БП навроде 3.0.34.14 преспокойно заработало.
Вам того куска кода мало? Чего ещё не хватает-то? Есть пример и более чем достаточный.
По остальным вопросам спорить не намерен, т.к. это концептуальный вопрос, многократно разжёванный в других темах. Только это не нюансы, это азы. Нюансы — это если я спрошу, можно ли в таблицу команд ещё свои колонки для своих нужд добавлять, или по какому принципу сортируются пункты в меню ввода на основании.
Боже, даже и не думал что тут будут писать столь профессиональные и крупные тролли. Даже рейтинг вырос в 3 раза) спасибо.
Если уже столько плюсов, то наверно в топике шото есть, за что можно поставить плюс 😉
(20)Мне иногда кажется, что надо просто, взять цикл статей, (работа с переключателями, скд, запросы, еще что нить, из топа за год) немного изменить их(сделав из одной штук 10), добавляя одни детали и убирая другие и собственно публиковать их раз в месяц, так что бы статья про внешние обработки выходила к примеру раз в год-полгода. Гарантированно все будут в плюсе, гарантированно, ее будут читать те кто дальше главной страницы смотреть не умеет. И гарантированно, будут отзывы «нууу не знаю как вам, а мне статья пригодилась.» Просто потому что на главной. Ну или я не знаю, к чему такой восторг, к вещам которые гуглится за 10минут.
+ автору, чем больше подобной информации тем легче кому то найти эту информацию. Иногда бывает так прочитав хоть и одно и тоже по сути, но в памяти уже отложится гораздо больше. Так что я думаю кому то это по любому поможет
Будем надеяться я хоть немного сократил эти 10 минут. хотя бы до 2-3.
(20) shmellevich, уверяю вас, кроме кривого перепоста статьи с ИТС и вырванных из контекста огрызков, тут нет ничего.
(22) Ага, именно. И плюсов будет немерено. Потому что тупых и ленивых кодеров завсегда больше, чем профи, и постепенно ИС превращается даже не в «лягушатник» для начинающих, а в ухудшенную копию жёлтых книжек и ИТС. Лень людям напрягаться, лень, вот и того, кто их лень поощряет, как автор этой простигосподи «статьи», плюсят… Детский сад.
Эй, «умники», а кто мне навскидку скажет, можно ли использовать псевдомодальные вызовы вроде ПоказатьПредупреждение, в клиентском вызове, например, заполнения на основании? Или вы все дальше печати не заглядывали?
Статья для начинающих ) не понимаю почему у вас с поручиком так полыхнуло в заду.
Когда мне мой работодатель(который платит мне деньги за знания) скажет изучи
вот эту ху..можно ли использовать псевдомодальные вызовы вроде ПоказатьПредупреждение, в клиентском вызове, например, заполнения на основании? Или вы все дальше печати не заглядывали?— я пожалуй займусь этим, пока же не вижу смысла в знаниях которые я не могу применить на практике и получить за это доход.
(11) monkbest, воттут . причем не с комментариями в коде, а с разбором что куда и когда=) имхо когда кинули в меня конфой с новым бсп я пользовался этим. Да как говрили чуть позже, что «потерял» время. Но программирование без таких «потерь» времени перестает быть программированием=) если человек начинает думать, что он все знает в языке, то он просто изучил только одну плоскость и дальше не хочет выходить. ИМХО кнеш=)
Гораздо больший экстаз получаешь при корректировке существующих печатных форм. Когда осознаешь, что почти все данные, что в 8.2. лежали в одном месте сейчас размазаны по общим модулям и менеджерам документа.
Да, недавно только сама столкнулась с той же проблемой — создания ВПФ на УФ. Была неприятно удивлена множеством необходимых и непонятных модулей, которые нужно написать, чтобы просто добавить форму в список внешних печатных форм.
Для меня «новый подход к созданию внешних печантых форм на 8.3» — это памятник дебильной юзабилити (да простят меня разработчики 8.3).
Скажите — разве это так трудно спрятать код для подключения непосредственно в штатную обработку по подключению внешних обработок и печатных форм?
Мне кажется — это явный признак того, что проектирование уже идет само по себе безо всякого проекта и напоминает просто латание огромных гнилых дыр.
(24)Конкуренция она делает свое черное дело 🙂 если вы специалист и понимаете «можно ли использовать псевдомодальные вызовы вроде ПоказатьПредупреждение, в клиентском вызове», то вы работаете быстрее и качественнее, спите дольше и зарабатываете больше, бонусом поднимаете себе самооценку при выходе таких статей. А чайник который не умеет гуглить глядишь и заработает на 2тр больше. Профит очевиден и для всех 🙂 А то, что для кого то открытием стала технология подключения внешних печатных форм, так это его временные трудности, он перешагнет через это как и вы когда то.
(24) Yashazz,
время идет, поколения меняются. Кто-то тут из старичков и диплодоков брызжет слюной, мол «тупые», мол «почитать лень». А Вы себя помните, когда только пришли на работу, в первый раз открыли 1С и Вам поручили создать Вашу ПЕРВУЮ печатную форму?
Не знаю как Вы, а я начинал с 7.7, там было все проще, минимум заморочек, простые структуры данных, проще начинать было. А нынешнее поколение стартует с «этой» БСП и они ищут помощи в инете. Для них покорение БСП, как откровение, как победа над самим собой. И они не следят за лентой инфостарта уже 10 лет, они не в курсе, что где-то там, 100500 постов глубже лежит их подсказка, они её 10 лет назад не добавили в избранное.
Я думаю это проблема ИС, что здесь много зазнавшихся стариков, которым только «псевдомодальные вызовы» подавай, которые считают ниже своего достоинства отвечать на простые вопросы, а людей пишущих статьи про простые вещи считать бездельниками.
В заголовке четко написано: «для начинающих», зачем пришли, если считаете себя выше этого?
Про простые вещи тоже надо писать.
Любопытно, но не более
Спасибо, я всегда ЗА такие публикации, ведь профи кажется, что все это должны уже знать но профи тоже когда то были «детьми» поэтому пускай просто пропускают такие публикации если не нравится и да, профи, вы тоже когда то делали что то первый раз и я уверен, что вам так же хотелось с кем то поделиться этим, хотя всякие бывают ). Спасибо.
(32) monkbest, абсолютно верно, просто в точку, я отношу себя не к новичку даже, а просто к начинающему и мне очень нужны такие публикации и я бы тоже гордился если бы что то получилось и хочу сказать, что это и делаю, просто не хочу злить себя, выкладывать для меня сложные, а для кого то элементарные вещи на такие ресурсы, что бы потом в комментариях не писать одно и тоже, я просто с семьей своей порадовался об этом, обсудили и доволен ), а такие публикации НУЖНЫ и ваш комментарий очень в тему.и авторов такие публикаций я более уважаю чем того кто напишет мол «это элементарно или человек просто первый раз открыл для себя что то» и не задумываясь, что он тоже начинал с азов и т.д.
ПриступСтарперстваМодеОн
если я правильно понял посыл то как то так.=)(32)
В свое время «вошел» в 1с по собственной глупости. «Зря ты, Вадим, пожарку на складу отключил на ночь для обновление сервера. зрярязря….» В общем остался без работы по причине отсутствия самой работы. =) А кушать хочеться + практику для вуза надо закрыть. Пришел на другое пердприятие со словами «Да,да,да я знаю что такое 1с8.2». На самом деле не сталкивался ни разу. За 2 недели были прочитаны полностью пособие разработчику и пару трудов Радченко. И был как раз написан «первый отчет». Да не просто отчет=) по незнанке был сделан свой механизм отборов. А отчет представлял из себя кросс-таблицу с расшифровками по клику=) И как бы веселье было в том, что спросить не у кого. Как то так.
ПриступСтраперстваМодеОфф
Так о чем я. Да, не спорю, что живем мы в постмодерновом информационном пространстве, что создало явление «клиповости» сознания. Когда надо «вот сейчас и быстро (без смс)». НО это не знание. =) Я не считаю себя гуру или батей программирования, да и 1С тоже (вон с грамматикой и пунктуацией тоже не все ок), но зачем плодить сущность? Есть миста, в которой ветки новых сообщений замыкаю ссылками на посты 2010 года. =) «Исчите, да обрясчите». А вот о «псевдомодальные вызовы» я даже не слышал. было бы круто если показали где почитать и что это…хотя нет…не нужно…
Я ошиблась. Все-таки помогло
Для начинающих самое то. +
(24) Yashazz,
Оччень хорошо сидеть на одном проекте, и заниматься бантиками по оптимизации кода, его красоты и прочей имитацией трудовой деятельности,
каждому свое, с таким мнением я столкулся лет 15 назад, теперь — время деньги
спасибо за статью, все просто и доходчиво
еще чуток и будет 100 подписок) неплохо для 1ой статьи)