<?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='\
Протестировал свою внешнюю печатную форму. Выдает ошибку
{ВнешняяОбработка.СписокВбанк(67)}: Преобразование значения к типу Дата не может быть выполнено
Руководители = ОтветственныеЛицаОрганизаций(Шапка.Организация, КонецДня(Шапка.Дата),);
Хотя форма у меня работает.
Развил тему на пустом месте, что мешает сделать внешнюю печатную фому с диалогом?
Тоесть запустить диалог и отлаживай сколько хочешь, из диалога так же вызывать Функцию модуля печать.
> Протестировал свою внешнюю печатную форму. Выдает ошибку
У меня тоже выдало такую же ошибку. Причиной было то, что я вместо документа «Зарплата к выплате организаций» выбрала документ «Зарплата к выплате». С документом «Зарплата к выплате организаций» ошибок не выдает.
Или у тебя при дургих условиях выдает ошибку?
> Развил тему на пустом месте, что мешает сделать внешнюю печатную фому с диалогом?
Ничего не мешает. Но я выбрала другое решение.
В моем случае требуется меньшее нажатие кнопок, что повышает производительность программиста.
Очень понравилась!
Большое спасибо.+1
>У меня тоже выдало такую же ошибку. Причиной было то, что я вместо документа «Зарплата к выплате организаций» выбрала документ «Зарплата к выплате». С документом «Зарплата к выплате организаций» ошибок не выдает.
я обшибся
на заре начала работы с 1с делал подобную вешь … качнул ради интереса
вопросы/предложения к автору
1. почему программа сама не разбирается для какого типа документов служит печатная форма(копаться во всем списке документов не удобно и не корректно)
2. почему не выводит результат работы печатной формы
3. почему бы чуток не доработать что бы тестировала и обычные обработки .
просмотрел исходник вопрос 2 отпал 😉 — задавал не тот тип документа при тестировании (счет фактура полученый/выданый перепутал ;)) … вобшем все упирается в вопрос 1 😉
> 3. почему бы чуток не доработать что бы тестировала и обычные обработки .
Я так понимаю, что речь идет об обработках, которые регистрируются в том же справочнике, что и внешние печатные формы.
В этом случае, эффект от обработки не так очевиден. Ведь ссылка на файл запоминается в меню «Файл».
Другое дело, обработки для изменения табличных частей документов. Это уже повод для расширения функционала. Однако, такие обработки поддерживаются не всеми типовыми конфигурациями.
> 1. почему программа сама не разбирается для какого типа документов служит печатная форма(копаться во всем списке документов не удобно и не корректно)
Спасибо за предложение.
Действительно, назначение печатной формы можно брать из параметров авторегистрации, если оны заполнены. Кстати, этот вопрос я упустила в статье. Обязательно исправлю.
В качестве альтернативы, можно пользоваться списком документов, которые уже использовались при тестировании. Этот список я создавала именно для того, чтобы лишний раз не выбирать тип документа и экземпляр документа.
>Действительно, назначение печатной формы можно брать из параметров авторегистрации, если оны заполнены. Кстати, этот вопрос я упустила в статье. Обязательно исправлю.
Вобше то я имел ввиду обрабатывать тип значения реквизита СсылкаНаОбъект
Обработки с макетами для авторегистрации доп печатных форм я честно говоря никогда не встречал и сам делал только 1 раз — просто что бы посмотреть на работу этого чудо механизма. Вобшем макеты с авторегистрацией это экзотика, но где то наверно водятся 😉
>Я так понимаю, что речь идет об обработках, которые регистрируются в том же справочнике, что и внешние печатные формы.
В этом случае, эффект от обработки не так очевиден. Ведь ссылка на файл запоминается в меню «Файл».
Вобшем я имел ввиду обычные обработки(в ут торговли они кстати изначально, пока чуток не подправить, в справочнике допольнительные печатные формы не регистрируются, в бухе и упп регистрируются) , понятно что эффекта почти никакого, но почему бы не сделать эту обработку более универсальной 😉
А вы тут о чем %) ?
У меня с тестированием внешних печатных форм проблем не возникало. Вернее, возникали, потом я «научился их готовить» ))
Обработка обновлена.
Учтены пожелания и предложения от NewNick. Спасибо!
Часть идей взято из его обработки. NewNick’а можно считать соавтором.
Обработка обновлена.
Исправлена обнаруженная ошибка.
А для тестирования печ.форм к справочникам можно ее доработать?
Добавлена обработка для платформы 8.1.
Проверена на конфигурации Бухгалтерия предприятия 1.6
(16) Для УПП (я юзаю 1.2.14.1) нужно исправить строку
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер,
Документ.Метаданные().Представление() + » № » + ОбщегоНазначения.ПолучитьНомерНаПечать(Документ) + » от » + Формат(Документ.Дата, «ДФ=’дд ММММ гггг'»)+ » г.»);
.
на строку
.
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер,
Документ.Метаданные().Представление() + » № » + ЗаполнениеДокументов.ПолучитьНомерНаПечать(Документ) + » от » + Формат(Документ.Дата, «ДФ=’дд ММММ гггг'»)+ » г.»);
.
т.к. метод ПолучитьНомерНаПечать находится в глоб. модуле ЗаполнениеДокументов, а не в глоб.модуле ОбщегоНазначения
(17) Спасибо, artbear, за сообщение!
Обработка для 8.1 переработана. Она протестирована на типовых конфигурациях БП1.6, УТ10.3, ЗиП2.5, УПП1.2 и на самописанной конфигурации.
Исправлена выявленная ошибка.
Мега полезная обработка!
Если внешний отчет, то там, в процедуре РаботаСДиалогами.НапечататьвнешнююФорму() вызов экспортной функции Обработка.печать() жму F11. И попадаю в модуль временного отчета, где можно посмотреть отладку. Я работаю с Бух. 1.6.
Вот с обработкой табличных частей такого не получается: В обработках РаботаСДиалогами.ОбработатьНажатиеНаДополнительнуюКнопкуЗаполненияТЧ(…) вызов Обработка.Инициализировать(). Жму F11 и никакого входа в модуль временной обработки нет.
Шорошо бы что б эта обработка(«Обработка для тестирования внешних печатных форм в восьмерке..») могла тестировать обработки табличных частей.
(20)
http://infostart.ru/projects/1749/
2Igor2008 для этого есть другая обработка
(20) Сори, это делает:http://infostart.ru/projects/1749/
Вот бы еще отладку ПФ для справочников добавить 🙂
Если СсылкаНаОбъект имеет тип СправочникСсылка, то в возможные варианты отладки нифига не попадает 🙂
делаем тип реквизита «Документ» — составной и добавляем «СправочникСсылка»
(23)
Теперь обработка умеет тестировать и ВПФ справочников.
Спасибо. Замечательная обработка. Разобрался с одной злой печатной формой.
Ошибок в работе небыло. Спасибо. +1
Работает. Удобно. Спасибо! +1
В последнем релизе Бухи(1.6.12.4) на закладке «Настройки» надо «РаботаСДиалогами» заменить на «ОбщегоНазначения», иначе ругается…
(28) Спасибо за сообщение.
Обработка обновлена.
Спасибо за обработку! Несколько дней сидел над одной проблемой и не мог отладить
свою обработку, пока на эту страницу не зашел. В считаные минуты ошибки в коде
были устранены и все заработало.
Большое спасибо за обработку.
Очень помогает.
Успеха !!!
Офигенная вещь! Спасибо!
не работает
Пардон, всё работает, только я сразу не понял принцип, спасибо.
Автор, поправьте код в модуле формы
Показать
Зашибись тут двиг после апдейта работает.
(36) Спасибо! Исправлено.
где файл собственно?
(39) Файл здесьhttp://infostart.ru/forum/forum17/topic28789/messages/
в 8.1.14.72 не окрывается(
(41) dumb851, возможно ты скачал файл для версии 8.0?
Изменила главный файл. Скачай еще раз.
Я не понял вообще как пользоваться этой обработкой.
есть справка?
(43) Для начала необходимо определиться «зачем» пользоваться этой обработкой. После ответа, вопрос «как» отпадет сам собой.
Что конкретно непонятно?
(44) да вроде разобрался. )) не во всем. но пока этого хватило. то, что хотел отладил.
(45) Молодец! Будут вопросы — задавай.
Зашибись. Наконец то нашел ошибку. Большой респект.
Класс. Очень удобно 😀
Добрый день. Пытаюсь открыть данную обработку в ЗУП 2.5. Выходит вот такая ошибка и обработка не открывается:
С помощью встроенной функции Новый (New) не могут создаваться значения примитивных типов (Строка)
(49) Разобрался, в печ. форме переменная СсылкаНаОбъект были типа Строка.
Спасибо, нужная весчъ!!! Помогла очень
такую нужно еще для табличных частей0)))
а так спасибо) крутая штука) очень помогла
Вещь чудесная, не плюсануть не возможно. Заняла прочное место на флешке, как инструмент, который должен быть всегда под рукой!!!
Большое спасибо.+1
Удобный инструмент.
Удобно не надо лезть в общие модули))Спасибо.+1
Спасибо за инструмент! Серьёзно экономит нервы и время… Очень часто приходится делать видовые изменения, и без него было бы сложно просмотреть на результат…
Огромное спасибо за разработку! Хоть и взял не здесь, но очень помогла. Долго не мог понять, почему не работала печатная форма. С помощью обработины исправил за 3 минуты!
Спасибо пригодилась
Спасибо, очень помогает в работе 🙂
Спасибо!очень полезная обработка. сокращает время работы
Спасибо, стала одним из полезных инструментов в работе.
Когда начинал работать с 1с эта обработка очень помогла… Автору большое спасибо.
Очень удобная вещь, особенно для новичка. Раньше тратила гораздо больше времени на отладку. Спасибо автору.
Спасибо большое!!!
очень полезная чещь
Спасибо!!!
Посмотрел, попробовал, понравилось. Без такой обработки не реально отследить все нюансы.
Спасибо!!! Очень помогает в работе!
Отличная вещь!!!! Сколько мучений было без нее!! Отладка как по маслу))))
Благодарю за обработку. Полезная вещь!
Спасибо за инструмент. Шикарная вещь. Без него как без рук при создании внешних печатных форм.
Просто невероятно удобная штука, не приходится постоянно подгружать внешнюю форму, все делается интерактивно и удобно.
Спасибо. Замечательная обработка. Очень помогает в разработке и отладке внешних форм.
интересный вариант, нужно будет скачать. Для работы очень пригодится
Самая качественная на мой взгляд разработка для тестирования внешних печантных форм. Раньше приходилось тратить уйму времени на отладку, спасибо автору!
Спасибо!
Крайне полезная и зачастую необходимая вещь!
Спасибо за обработку, интересно и актуально!
Меня несколько раз выручала ваша обработка. Большое спасибо!
Спасибо,очень интересно!
обработка очень помогла , спасибо разбогатею пришлю деньги, да для тех кто не знает, для отладки нужно поставить брейк на строку ТабДокумент = ВнешняяОбработка.Печать();, а потом нажать F11.
Пригодилось, большое спасибо!
не тестировал, не качал. нужны стартмани))))
Спасибо
Пригодилось, большое спасибо!
Я тоже раньше переносил реквизит на форму и правил отладчиком… Попробую вашу, наверно так быстрее.
спасибо. обработка мне помогла
Помогла при отладке!
Актуальная весчь при подготовке внешних не тривиальных форм
Спасибо!
Какая же классая штука!!!Придумают же люди! Супер
Не думал что есть такие узкоспециализированные вещи
Благодарю за обработку!!!!!! Пользуюсь постоянно!!!!!!!!!!!
Мне очень понравилась, незаменимая вещь при отладке кода! Побольше бы подобных вещей для автоматизации процесса программирования. Автору спасибо!
Самая качественная на мой взгляд разработка для тестирования внешних печантных форм.
Раньше приходилось тратить уйму времени на отладку, респект автору!
(0)
Если под рукой нет этой обработки, для тестирования можно просто выполнить код:
Можно использовать консоль кода.
Спасибо! А для 8.2 на управляемых формах планируете написать?
Спасибо огромное, я сделал внешнюю печатную форму для печати СФ, для отладки добавил форму, где можно выбрать СсылкуНаОбъект, так называемую, сделал все как положено, но если я указываю документ через мою форму для отладки все хорошо работает, а если подключаю как ВПФ для предприятия, не работала хоть ты тресни, с помощью Вашей обработки нашел ошибку, спасибо!
Дааааа, это классная вещь!
Спасибо, полезная вещь, экономит время и не приходится все время подгружать внешнюю форму.
Спасибо огромное!!!
Спасибо большое! Рулезная вещь!!!
Спасибо, надо брать.