<?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='\
Не проверял , но написано хорошо !
Уважаю популяризаторов 🙂
Хорошая статья
http://www.1c-pro.ru/index.php?showtopic=21524&st=0&p=92729&#entry92729
http://v8.1c.ru/overview/Term_000000785.htm
ИМХО плагиат …
пересказ с видео курсов «Профессиональное программирование» ?)
И ни один из популяризаторов не говорит о том, что изменение содержания и форматирования содержания на уровне встроенного языка не реализовано. Хотите управлять программно — разгадывайте формат хранения документа в HTML и собирайте документ тегами вручную…
Да….. а когда этого не было приходилось tinymce крутить. Надо будет попробовать. Спасибо.
Сделали бы они человеческий макет с типа ФорматированныйДокумент…
1C бросает вызов MS WORD
(4) Red_Devil, скажем так, о «форматированном документе» действительно узнал из курса «Профессиональное программирование в 1С 8.2» от двух замечательных авторов Евгения Гилева и Фарита Насипова. Но не вижу ничего страшного в том, чтобы поделиться знаниями с другими людьми.
(5) Программная обработка форматированного документа реализована слабо, согласен…
(8) Ну это врядли! 😉
А нельзя ли ссылки на картинки дать не с ЖЖ, а с самого инфостарта или более-менее благонадёжного сайта? У меня на работе порезан ЖЖ, в частности.
Спасибо. Полезная статья.
Замечена некорректная работа с текстом, вставленным из Word — вот пример если его попробовать залить:
Ошибка преобразования данных XDTO:… НачалоСвойства: fmtd Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema }anyType
http://v8.1c.ru/8.1/data/ui }Color’
по причине: …
Ошибка отображения типов:…
Отображение типа ‘РасширенноеИмяXML’ в тип ‘{
(11) И в web-клиенте использование проблематично… 🙁 а в толстом пока вообще не понял как сделать
(13) В чем проблемы? Управляемые формы в толстом клиенте доступны.
(14) Я понадеялся что и в обычную форму можно запихать. Нельзя — но это и не столь важно.
Важнее то, что скопированный и вставленный текст невозможно корректно править! Это очень плохо, т.к. была цель сохранять некую информацию с документов word и просто с браузера копипастом. Сегодня ещё поэкспериментирую.
Побольше бы таких первых публикаций 🙂
На данный момент обьект работает не стабильно и ОЧЕНЬ медленно. Попробуйте вставить туда 5 фото и проверить время открытия в тонком клиенте. При большом количесте инфы часть ее теряется при сохранении. Форматирование тоже иногда слетает. Сам пользуюсь, но только от того, что не хочу использовать внешние компоненты.
Пользуюсь форматированным документом как шаблоном печатной формы договора
Спасибо за публикацию
Вопрос:
Поддерживает ли форматированный документ многомерные списки?
В процессе редактирования не получилось.
Увеличение уровня отступа выполняется, а дальнейшее уменьшение уровня отступа начинает нумерацию сначала.
Я вот одного не понимаю: а что, в 8.1 с полем HTML документа никто не работал? По описанию — практически ничем не отличается. Разве что картинку можно теперь вставить без геморроя.
Докрутил форматированный документ у себя.http://danila.org.ua/?p=619
Что было замечено при программном переносе данных с сайта в форматированный документ.
Получаю html документ с сайта, выбираю нужный кусок. В html-коде присутствует следующее:
«font-size: 10pt; color: black; line-height: 150%; font-family: Arial» Патент №
«font-size: 10pt; color: black; line-height: 150%; font-family: Arial» Дата регистрации
После выполнения у форматированного документа УстановитьHTML()
«line-height: 150%» заменяется на «line-height: 150» (съедается процент) и следовательно очень большие интервалы у меня между строк
Так что лучше использовать «line-height: 1.5».
А у меня почему то «Командная панель» не активная и не получается форматировать текст? «Источник команд» реквизита формы «ТекстДоговора» с типом ФорматированныйДокумент я указал.
Да и текст введенный в «ТекстДоговора» не сохраняется. Процедуры в модуль формы добавил. Что может быть не так?
Если использовать ПолеформатированногоДокумента в управляемой форме, запущенной в обычном режиме, то картинки не отображаются. Сохраняешь стр на диск как html, а они там есть.
Ок. Ну допустим, сделали в форматированном документе шаблон, например, договора. А как его на печать вывести?
И есть ли возможность подставлять значения в форматированный документ?
Начиная с 15 релиза платформы форматированный документ в тексте HTML теперь еще содержит и определение стилей CSS по умолчанию, причем с ошибками — убирает полосы прокрутки. Пожелание по исправлению 1С приняли, возможно даже сделают содержании таблицы стилей отдельным реквизитом. Пока следует таблицу править программно при открытии.
есть ошибки, пока пользоваться нет смысла
А картинки я как понимаю тоже в том же реквизите с типом «ХранилищеЗначения» хранятся?
Публикации 2 года, а где же обещанные:
«В следующий раз попробую рассказать про использование шаблонов для вставки параметров в текст форматированного документа, например, вместо %Контрагент% вставлять наименование контрагента.»
идея сначала понравилась, но за 2 года так этот объект и не получил развития…
(25) adapter, Как можно вставлять (использовать) таблицы ?
таблицу стилей CSS?
Показать
Вместо «» можете вставить свое определение стилей
При сохранении/восстановлении значения через форматированный документ терялись переносы строк. Абзацы сохранялись, а если в тексте были символы переноса строки, они терялись.
Оказалось, что после вставки из Word символы переноса строк в HTML превращались в тэг </br>. При открытии этот тэг удалялся. Очевидно, как закрывающий тэг без открывающего считался ошибочным.
Вылечивается например ПередЗаписью примерно так:
ТекстОригинал.ПолучитьHTML(ТекущийОбъект.ТекстОригинал, мСтруктураОригинал);
ТекущийОбъект.ТекстОригинал = СтрЗаменить(ТекущийОбъект.ТекстОригинал, «</br>», «
«);
В толстом клиенте не получается такое настроить…
Спасибо
(30) adapter,
Тут даже не нужна своя таблица стилей и достаточно добавить 1 строку, например, при открытии формы с объектом html
(34) axxell, сколько извращений, спасибо 1С
Как ФорматированныйДокумент сохранить, как excel файл или в pdf?
спасибо большое за публикацию. оказалось полезной)
А можно пример получить? Не получается сделать
От души спасибо.
(31) oks-nt,
Большое спасибо! Долго не мог понять в чем дело. Кстати, эту ошибку метода ПолучитьHTML исправили в 8.3.5.1068
В младших релизах вместо вызова
надо использовать функцию:
Спасибо, хороший материал, как раз в тему!
Попробовал на 8.3.6 все работает, жду обещанных продолжений по этой теме 🙂
но вот тутhttp://v8.1c.ru/overview/Term_000000785.htm
написано:
Форматированный документ нельзя сохранить в виде файла, но поддерживается его экспорт в текстовый файл или файл HTML.
это нужно делать дополнительную обработку, т.к. я нигде не нашел такой возможности?
и еще вопрос, а как сделать в печатную форму, данный объект не выводится в нее?
таблицы не вставляются, например в конце договора надо вставить реквизиты
(22) adapter, столкнулся с подобной ситуацией.
Но дело оказалось немного в другом.
Если получать данные на клиенте, то картинки не отображаются, если на сервере — все ок.
Например, вот так не работает:
И даже так не работает:
Показать
Работает только так:
Показать
А цвет фона, текста сохраняет у вас? У меня не сохраняет, все остальные выравнивание, наклонность шрифтов и т.д., сохраняет
Если вставить картинку в тонком клиенте, то в веб клиенте она не отобразится, и наоборот. Проблема возникает не во всех форматированных документах, лишь в некоторых формах. Картинка ссылается на несуществующую url в e1cib. Видимо это как то связано с параметром formUUID. Кто нибудь решал подобную проблему?
Вовремя попалось
Как можно было забыть ФорматированныйДокумент, а тут еще на УФ!
Добрый день!
http://prntscr.com/hmippf
Поделитесь опытом, как в ФорматированныйДокумент вставить таблицу, например реквизиты контрагента.
Когда в макете вручную прописываю теги таблицы, то в просмотре отображается все отлично —
Но как только запускаю из предприятия — ячейка второго столбца переносится на новую строчку.
На формах вычитал, что 1С работает по стандарту html 1.0 который и обрезает теги таблицы. Может можно как-то его изменить?
Коллеги, ФорматированныйДокумент даже в релизе 8.3.11.3034 полная хрень. Если задумали использовать его для масштабных задач, одумайтесь. Придумайте альтернативу. Иначе наживете себе проблему, решать которую будет сложно.
(21) Несколько часов потратил на поиск решения подобной проблемы — поле форматированного документа было доступно только на просмотр. Эта же конфигурация на другом компьютере работала нормально.
Нашел — было отключено выполнение активных сриптов в настройках безопасности Internet Explorer
Но при включении скриптов в другой форме с HTML документом начинают выскакивать ошибки выполнения сценариев
А показывать HTML страницы в форматированном документе не получается по нормальному — вообще корявит всю страницу до жути.
Т.е. 1Ска опять жутко косячит.
И что делать не могу сообразить, в одном случае мне нужен форматированный документ, так как надо дать пользователю возможность создавать форматированный текст, а в другом случае мне нужен нормальный просмотр веб-страниц с возможностью перехода по ссылкам и без всяких ошибок выполнения скрипта
Подскажите пожалуйста, может кто сталкивался: 1С:Предприятие 8.3, учебная версия (8.3.8.1933)
На управляемой форме 3 поля: ФорматированныйДокумент и два ПолеВвода. Если активировать ПервоеПолеВвода (установить на нем курсор), и программно сменить фокус Этаформа.ТекущийЭлемент = Элементы.ВтороеПолеВвода;
то фокус меняется, обратно также со второго поля на первое, а вот если курсор в Документе то смена фокуса не происходит.
Это глюк элемента ФорматированныйДокумент или у меня что-то может блокировать смену фокуса?
Например, есть 2 ситуации:
1. Если фокус в полях, вызываем диалоговое окно, закрываем его, тыкаем мышкой в документ, — вылетает ошибка сценария ИЕ, если отключить сценарии в ИЕ то документ вообще не работает на ввод и чтение (кнопки тусклые). Поэтому настройки ИЕ не трогаю, ошибку как-то умудрился обойти путем переключения фокуса ввода программно после закрытия диалогового окна.
2. Если изначально фокус в документе, вызываем диалог, закрываем его, и также ошибка, но обойти уже не получается, так как не сменить программно фокус.
Фокус не меняется независимо от того есть диалог или нет.
Пока не могу понять как сценарии могут влиять на фокус элемента формы 1С. Сможете протестировать как у вас дела с фокусом?))
В такси нет функции драг-энд-дроп. Можно как обещали на презенации 1с 8? Сделать одно окно список сотрудников, другое карточку текущего сотрудника а третью — сам форматированный документ. И перетаскивать мышкой поля из карточки сотрудника в договор ( и из связанных с ним регистров сведений — адрес, данные паспорта) ? Или надо копипастить? А как скопипастить адрес из нескольких полей 1с в одну строку? Это на каждую ячейку надо нажимать?
И доп.реквизиты-сведения тоже нужны.
А нельзя сделать универсальную печать к каждому справочнику или документу с выводом всех полей и связанных реквизитов в читабельном виде (с галочками что выводить а что нет)?
Или все это уже есть в 1С Документооборот? А мне в БП 3 надо..
И чтоб шаблон моего договора сохранить отдельно куда нибудь, а результат — в справочник или документ (чтобы спросило куда это прицепить или сохранить в файл?)
Колонтитулы с нумерацией строк — нашла, в просмотре печати. А можно в колонтитулы добавить имя пользователя/компьютера/базы данных?
А изменить текст в колонтитуле всего страниц на «Листов: 3» вместо 3 (это не по ГОСТ).
Я понимаю какая радость от возможности вставить сюда картинку, но вот гиперссылка, без возможности использовать никакие объекты базы для вставки это уже печалька.
Почему его нельзя вызвать из меню создать новый?
Почему в PDF оно сохраняет без картинок и в word не сохраняет совсем.
Почему рисунки показываются на предварительном просмотре но не печатаются (потому что галочка в настройках печатать фон и рисунки не установлена). Предварительный просмотр должен соответствовать распечатке.
Куда-то колонтитулы пропадают при изменении режимов страниц и масштаба.
И пока все.
Огромное спасибо автору за статью.
+ как сохранить это во внешний файл и открыть из файла. Тот же pdf, Html или собственный формат.
Что-то мне подсказывает, что в пдф сохранять придётся через COM ворда или какой-нибудь PDFCreator. А насчёт вставки ссылок — да, недоделано явно. Вставка скудная, отлова события клика нет ваще, действительно печалька.
(54) На тему вставки гиперссылки набросал вариант решения:https://infostart.ru/public/1071558/
Спасибо, пригодилось
(4) (9) Подскажите хотя бы в каком разделе курса? Оч. нужны подробности, на вскидку по содержанию не нашел, а видосов там просто вагон. Спасибо!