<?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='\
Юзал в свое время. Удобно!
Хачу такие ползунки и иконки на формочке… 🙂
Отзыв простой: если бы программулина вдобавок после изменения, допустим, реквизитов документа сообщала типа «требуется перепровести документ» (т.е. сигнализировала — влияет ли изменение реквизита на движения документа) — вот это я понимаю…
каким образом сделано редактирование строк неограниченной длины?
В заголовке окна явно ведь видно — «исключительно для админо-программерского использования», так что тот кто пользуется этой обработкой должен сам шурупить проводить или нет… :))
Насчет ползунков и кнопочек — если интересно, то тема называется Panther…
Строки неограниченной длины редактируются нормально, а как сделано можно заглянуть внутрь, если интересно 🙂
Обработка просто чумовая — давно уже пользуюсь, пожалуй самый востребованный инструмент после Новейшего Отчета.
(3) Че, а кто мешает доработать этот отчет: добавить функционал сохранения изменений по движениям регистров. Собственно я так и подшаманил сию обработку. Правда самому не очень нравится — при изменении чего-то в табличной части, движения по регистрам автоматычне не меняются — надо ручками править. Но поскольку, как заметил автор — этим инструментом только я пользуюсь (юзерам только дай — базу в два счета завалят…), то уж как-то терплю свои «художества».
Вот уже собрался делать подобное, а тут… В общем автору плюс. Инфостарту минус. 🙂 Ведь кто-то должен быть виноват, что становлюсь ленивее. 🙂
(7) Побольше бы таких «минусов» инфостарту — приятно, когда хорошие авторы к нам заходят.
(0) Влад, выкладывай еще — классно пишешь.
Небольшие пожелания
1) Запрос при закрытии формы. Особенно если что-то менялось.
2) При печати, если значение реквизита не выбрано, в расшифровку ячейки записыватся {«O»,»0″,»0″,»0″,»0″,»0″,» 0 0 «} и курсор при наведение на такую ячейку становится крестиком, а при клике звуковой сигнал об ошибке.
Может, стоит эту ситуацию как-то отработать?
Конечно ПЛЮС!
единственое пожелание: при открытии добавить проверку админских прав (что-бы простые пользователи не юзали)
(10)+ и еще:
при смене ID необходима «защита от дурака», например окно «Для изменения ID введите ‘OK'»
Очень хороший и продуманный инструмент ! Давно использую. Автору большое спасибо
Я ничего не вижу. Эту чумовую (по комментам) обработку удалили?
Извиняюсь, написал пост, и всё отобразилось.
(13)+(14) — это что, новый прикол на ИС — пока не комметнешь, фиг скачаешь? :-))
(10) Не вижу смысла в проверке админских прав: эта приблуда относится к инструменту повышенной силы воздействия на 1С — так неужели ты ее положишь на «видном» месте? О ее существование простые юзеры не должны даже подозревать. :-))))
PS: Хотя кривлю душой: у себя вызов сделал с проверкой прав (правда не в самой обработке, а как объекта 1С — в данном случае внешней обработки).
Что-то непонятное на новом ИС. Хочу скачать… мне прелагается нечто «3072» …причем в формате HTML…???
Ладно. Идем дальше. Скачиваем. Получаем 3072..htm размером 42,2 кб вместо заявленых 218 кб.
При запуске получаем страницу данной обработки локально без картинок с комментариями — это хорошо, ОЧЕНЬ хорошо, описание нужно.
Но как скачать-то сам файл??? :-))))))
(15) комментнул… и ничего, всё по прежнему, т.е. (17)
…(14) — непонятно…
(18) странно как то это всё…
http://www.infostart.ru/projects/3072/download.php?file=4584
такая ссылка на файл?
Очень полезная обработка… пользуюсь очень давно, много раз выручала
Ребята, что-то вы чудите — нормал все скачивается. Спецом проверил.
Пользовал эту обработку в 2003-2006 годах. Очень помогала. По её мотивам написал в 2004 году обработку для 8-киhttp://infostart.ru/projects/895/
Как-то устанавливал с её помощью дату запрета редактирования в фирме (значения разделителя учёта), промахнулся кнопкой и удалил фирму.
Удаление на всегда и без подтверждения. База SQL. Отчётный период. Покрылся холодным потом. Спасло только что база распределённая. Быстро изменил фирму в другом узле и провёл обмен. Вот такая история.
(17-18) Сегодня зашел… всё нормально скачалось.
(22) давно уже вставил аж 2 вопроса перед удалением…
хорошая вещь
(17) у тебя что-то с настройками браузера
Сейчас проверил, всё нормально — переходит к закачке файла
Спасибо за «вкусную» обработку!
Какая пусечка-красотусечка!)))))
Спасибо!!!
Умничка!
(28)(29) А что я говорил? Вот придет Влад и получите классную обработку. У меня из «чужих» две обработки: эта и НО (новейший отчет) для себя постоянно пользуюсь, а также УПС (универсальная печать справочников) — для юзеров поставил, тоже классная приблуда.
я очень рад, что всем она тоже понравилась или пригодилась…
есть еще «коррекция регистров» под 7.7, на публику еще нигде не выставлял,
тоже существует давно, писано под себя, и интерфейс похожий …
постараюсь показать вам ее до нового года :)))
Мой слабенький голос тоже — автору Спасибо. Уж сколько юзеровских, да и не только их, косяков поправил за почти 4-х летнюю работу с этой обработкой.
(31) могу помочь в тестировании. Я на этом собаку съел, и не одну 🙂
Спасибо автору, обработка не раз помогала
Присоединяюсь ко всем СПАСИБО!!!
Работаю со старой версией уже 4 года и РАДУЮСЬ!!!
(33) Уже съел?! А у меня маковой росиночки с утра во рту не было…. 🙂
(36) ага.. съел. Сегодня еще двумя закусил 🙂
http://infostart.ru/blogs/897
Супер!!! мне нравится!!
спасибо! пригодится!
Рульная вещь!
Класс !!!
Тоже давно пользуюсь. Спасибо за отличную вещь.
Спасибо всем за положительные отзывы, за ваш интерес к обработке!
http://www.infostart.ru/community/groups/group/26/forum/message/7640/53742/#message53742
Поздравляю вас с наступающим Новым годом!
Вещь классная.
Вопрос всем:
а если надо поменять значение элемента диалога на форме справочника, например, флажка, как тут быть?
(44) а смысл? реквизиты на форме справочника все равно меняют какой-нибудь реквизит, так сразу его и правь…
повторюсь, обработка не юзерская, а для тех кто знает механизмы и что к чему приведёт. прочитай заголовок формы на скриншотах 🙂
Наконец-то узнаем, кто написал.. Сколько ж этой штукой переворочено было в свое время..
(45) Спорить не буду, т.к. не считаю себя гением 1С.
Просто возникла необходимость перебросить в пустую базу типовой торговли через текстовик номенклатуру и при этом чтобы были заполнены не только необходимые реквизиты, но и определенные элементы на форме были установлены в определенное значение, например, флажек «ФлагОсновнойЕдиницы». За дача была решена, но не одним махом.
Возможно, я недостаточно знаю 1С …
Просто ужжжасные ошибки…
Итак ситуация: прога внезапно вызвали куда-то (всего, подчеркиваю, на пару минут), он, растяпа, оставил обработку открытой…
Подходит бушка. Жамкает на кнопу «Удалить» (или как-то нечаянно, не важно) и в ужасе убегает…
Или еще проще: прог сам отвлекся…
Прошло две минуты. Проверьте что будет сами.
Все эти идиотские вопросы «точно-точно» не отрабатывают таймаут. И в результате выдается положительный ответ.
А удаление происходит БЕЗ КОНТРОЛЯ ссылок.
За что маленьких ставят в угол, и лишают мороженного.
(48) во-первых, если прог растяпа, тот тут никакая обработка не поможет,
во-вторых, про контроль ссылок я и не писал, потому она и задает «идиотские вопросы», в-третьих, про таймаут не понял вопроса,
в-четвертых, про угол и мороженое — это к прогу растяпе :)))
если так рассуждать, то у нас никогда бы не было топора, ножа и так далее..
«растяпа лесоруб оставил топор без присмотра, тут же это просекла повариха, подбежала и тюкнула себя по ноге. или еще проще: лесоруб сам отвлекся и тюкнул себя по ноге. прошло две минуты. проверьте что будет сами. за это маленьких лесорубов ставят к дереву и лишают топора :)»
короче, мораль такая, инструментом нужно уметь пользоваться и знать как он работает, иначе КонецЦикла.
ps: повторюсь который раз: эта обработка была написана «исключительно для админо-программерского использования», использовалась мной достаточно много времени и другими, никто от использования не пострадал )
+ к (49) От себя добавлю: любые серъезные изменения надо делать сначала на копии или (если уж так чешутся ручки шаловливые) — перед изменениями делать копию базы. И тогда все будет пучком. Под себя обработку заточил, что она и регистры двигает и, естеств
(48) Любой нормальный и продвинутый юзер, а не только программеры-нерастяпы, должны усвоить правило:
«Встаешь из-за компа, тыцай Win+L»
(50) а Василий прав!
(49) «про таймаут не понял вопроса» — а на собственное творение взглянуть не можешь? Проанализировать?
Вот первое условие (функция ВопросУдаления()):
Если Вопрос(«Объект будет удален из базы без возможности восстановления!»+РазделительСтрок+»Вы случайно сюда нажали?»,4,60)=6 Тогда //да
Возврат 0;
КонецЕсли;
Так вернет это условие 0 при таймауте?
А второе условие (с «точно-точно») вернет? Что в результате будет через 2 минуты?
Возврат 1;
Т.е. «Да, удалять к чертовой матери.
Без контроля ссылок.
Что есть смертный грех. (исключение: массовые удаления, например, при свертке, с последующим ТиИ).
Можно было сделать так:
//Об.Удалить(1);
//здесь мой алгоритм VZ
Ссылки = СоздатьОбъект(«ТаблицаЗначений»);
УдалитьОбъекты(ТекОб,1,Ссылки);
Если Ссылки.КоличествоСтрок()>0 Тогда
Если Вопрос(«Объект не может быть удален, т.к. на него есть ссылки.»+РазделительСтрок+»Показать таблицу ссылок?»,»Да+Нет»,10)=»Да» Тогда
Таб=СоздатьОбъект(«Таблица»);
Таб.ИсходнаяТаблица(«ТаблицаСсылок»);
Заголовок=»Ссылки на «+строка(ТекОб);
Таб.ВывестиСекцию(«Шапка»);
Ссылки.ВыбратьСтроки();
Пока Ссылки.ПолучитьСтроку()=1 Цикл
Объект=Ссылки.Объект;
Ссылка=Ссылки.Ссылка;
Описание=Ссылки.Описание;
Таб.ВывестиСекцию(«Строка»);
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Показать(«Ссылки на «+строка(ТекОб));
КонецЕсли;
КонецЕсли;
А вот теперь — жирный минус. За понимание. Уверенность в безгрешности.
Простите за беспокойство.
(53) И тебя с Новым годом! Безгрешный ты наш… :))))
Всегда найдется один из ста, который испортит праздник…
Живи так же, как желаешь другим… И берегись бушек…
ps: А насчет таймаутов теперь понятно что ты имел ввиду,
согласен можно убрать, хотя у всех и так работает.
Вопросы то прямо противоположные, на один нужно ответить «да», на другой «нет», два раза таймаут не прокатит. )
С остальным не согласен…
И смени тон разговора, трудно будет найти взаимопонимание…
«два раза таймаут не прокатит. )» а ты проверь. Если думать не умеешь.
Праздник я ему испортил… Косяк я тебе указал. Вначале — достаточно корректно.
Но после того, как два раза носом ткнул… Нет слов.
(56)
На бракоразводном процессе:
— почему разводитесь с женой?
— она меня не устраивает…
Мужской голос из зала:
— Ну вы посмотрите, блин! Всех устраивает, а его видите ли не устраивает….
Очень сильно мне этот анек что-то напоминает…
А еасли шутки в сторону: код открыт — какие проблемы? Было бы из-за чего сыр-бор раздувать… Я еще понимаю серъезный глюк функционала, а так…
(48) Представьте, прогер наводит курсор на файл БД и случайно жмет SHIFT + DEL. Я думаю,тут надо в суппорт Микрософта пожаловаться, чтобы такого не было 🙂
выложил как и обещал «Коррекцию регистров»
смотрите ссылку в шапке…
Спасибо за поддержку! С новым годом вас всех!
Понадобилось нечто подобное. Первый раз в жизни качнул то, что сразу заработало! 😉 Yes и +
Скачала. Поставила плюс. Думаю завтра пригодится.
Ещё бы проверяло на УРиБД (в ИД объекта данных последние три символа — код ИБ), и если есть, то или спрашивало при записи типа «включить в обмен УРИБД?», или флажок на морду такой.. ну и соответственно перед «.Записать()» при надобе «.РегистрацияИзменений(0)»…
Кнопка «Х» для элемента редактирования
подсказка «обновить форму»…
(62) хорошо в следующей версии это подправлю )
Давно юзаю спасибо!!!! Вещь очень нужная для админа
Опыт и глубокое понимание упали на хорошо удобренную почву INFOSTAR , где пасемся все мы ….здоровья и успехов и почве VET7777
VET7777, Огромное СПАСИБО.
Столько раз уже выручала, раньше была от 2004 года, а теперь новенькая.
Больших Успехов и Огромной Удачи в работе
У дока есть реквизит «ВремяДок»(А), доступен для изменения…..
но не сохраняет…
Если у дока войти по кнопке «проводки» и нажать кн.»запись»…вернуться назад,
то не работает кнопочка «записать изменения»…
+67 хорошо бы показывать текущее состояние объекта (удален,проведен…)
(67) > Это ограничения самой 1С
+ к (69) Имеется в виду время документа
Для времени дока код 1С с ПОПЫТКОЙ не пройдет …
Док.СделатьНеПроведенным();
Док.УстановитьВремя(Ч,М,С);
Док.Записать();
Огромный плюс! спасибо!
а для 8 есть что нибудь подобное?
(73)http://infostart.ru/public/14747/
Спасибо за обработку давно искала такую
Восхищен. Добавлю себе в коллекцию рабочих инструментов.
Пожелание: добавить управление видимостью реквизитов табличной части — при большом их количестве рябит в глазах.
Спасибо…
+5 😀
пользуюсь регулярно.
Немного «заточил» под себя:
добавил возможность читать строки, упакованные командой «ЗначениеВСтрокуВнутр».
А вот редактировать их что-то не очень получилось. Возможно из-за того, что заталкивается все это в строку неограниченной длины.
Спасибо!!! мне теперь меньше работы!
Очень нужный и полезный инструмент
мне нужно для доков из журнала документов (там только один вид документа) поставить счет в кредит другой…подойдет эта обработка? а не каждый открывать и редактировать….
(81)Этой обработкой — только открывать каждый и редактировать. Массовая обработка с отборами и фильтрами не предусмотрена.
Очень хорошая разработка, не раз выручала в работе, огромное спасибо автору этого труда
Добавить бы сюда установку пометки удаления. На случай, когда интерактивно запрещено.
спасибо! пригодится!
спасибо, удобная универсальная обработка!
(48) nickVZ, оно, конечно, дела давно минувших дней.. Но все-таки.. Мож вы и не делали хоть чего-нить этой приладой.. А обработка эта до сих пор достойна самых лучших похвал, а вот баллада о неких прогах забывающих ее на открытом окне и полубезумных, оголтелых и бесноватых бушках, мечтающих жмакнуть пимпочку в отсутствие нерадивого кодера скорее веселит
Спасибо вам за отклики.
PS: Советская 14
(88)
так понимаю — поддержка прекращена? 🙂
7.7 ушал в историю?
Отличная обработка. Есть ли у вас обработка по правке реквизитов для УТ 10.3 1с 8.2
Отличная обработка.
интересно а она,эта обработка настраивается для бюджета
Можно в этой обработке делать сопоставление номенклатуры предприятия с номенклатурой поставщика? Если да. то каким образом. Не могу найти(
Неожиданно потребовалось. Автору огромное спасибо!