<?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='\
Как подключить обработку к нетиповому документу?
(1) nata_87, Без программирования никак. В форме нетипового документа, необходимо добавить строчку, подключающую механизм дополнительных обработок.
Показать
(2) в том то и дело что строчка эта добавлена, а при подключение внешней обработки в одноименном справочнике в списке документов назначения данный документ не отображается
(3) nata_87, В конфигураторе, в ветке «Общие команды», найдите команду «ЗаполнениеОбъекта» и в её свойстве «ТипПараметраКоманды» добавьте нетиповой документ.
(4) да получилось так, а нельзя как то обходом, что б не трогая типовую команду? Ведь после каждого обновления получается надо устанавливать Тип в этой команде.
(5) nata_87, Нет, пользователю никак нельзя. При регистрации документов, обработка передает все типы документов, а дальше конфигурация добавляет только допустимые типы, которые она берет из той же команды. Получается, что при регистрации в типовой программа не добавит нетиповой документ, в ручном режиме его выбрать тоже невозможно.
Единственный вариант — это написать свою маленькую обработку, которая зарегистрирует необходимые документы программно.
(6) понятно все, спасибо
(7) nata_87, Я написал обработку. Попробуйте с помощью неё назначить обработку нетиповому документ, без добавления типа в общую команду.
(8) Да все работает, спасибо огромное. Еще вот что сначала в типовой команде поставила галочку на свой документ и установила его во внешних обработках в назначение, потом в типовой команде убрала этот документ во внешних обработках он остался назначенный моему документу, получается что можно на момент подключения в типовую команду добавлять документы, а потом убирать их или даже и не страшно будет если они в данной команде затрутся при обновлении. Спасибо большое!
Думал, что это обработка по заполнению ТЧ, а это по изменению значений в ТЧ. Название не соответствует функционалу.
(10) Spektr, Я прошу прощения, за то что название обработки, придуманное мной и достаточно подробное (на мой взгляд) описание функционала, все-таки ввели вас в заблуждение и вы скачали не то что искали. Я могу ошибаться, но в моем понимании заполнение значений реквизитов ТЧ — это и есть заполнение ТЧ 🙂
Если вас это не затруднит, то скажите, а какой функционал вы хотели бы видеть в обработке по заполнению табличной части? Нашли ли вы то что искали? Быть может я мог бы реализовать что-то подобное…
Уважаемый автор. При интеграции и использовании в УТ 11.1 пишет ошибку: {Форма.ФормаУправляемая.Форма(87)}: Поле объекта не обнаружено (НастройкиЗаполненияГруппаКолонокОтбор)
Элементы.НастройкиЗаполнения.ПодчиненныеЭлементы.НастройкиЗаполненияГруппаКолонокОтбор.ПодчиненныеЭлементы.НастройкиЗаполненияГруппаКолонокОсновныеЭле
(12) AKV77, Добрый день. Тестирую обработку на версии УТ ред. 11.1.10.145 — ошибок не возникает. Возможно дело в структуре самого документа.
Я прошу Вас:
— Напишите мне версию платформу, версию УТ и документ в котором у вас возникает ошибка.
— Попробуйте заполнить ещё какой-нибудь типовой документ, например Авансовый отчет. Ошибка воспроизводится или нет?
— Напишите мне вам адрес электронной почты (в личку), чтобы я мог выслать вам исправленную версию обработки, потому что я верю в то, что мы что-нибудь придумаем 🙂
Предлагаю изменить наименование 2Заполнить документ» на «Заполнить табличную часть». А то пользователи или пугаются, что весь документ перепишется, или приходится разъяснять, что это касается табличной части.
УНФ 1.5.4.34 появляется сообщение выполняется команда. Форма заполнения не открывается.
(15) Табличная часть у Вас пустая, поэтому не открывается.
Все зарегистрировалось и работает.
Можно использовать как базовую под свои задачи.
Отличная вещь !
НЕ Проще выбрать необходимое в табличной части ?…..
ERP 2.2.4.154 не пошла
«Невозможно подключить дополнительную обработку из файла.
Возможно, она не подходит для этой версии программы.
Метод объекта не обнаружен (СведенияОВнешнейОбработке)»
Прошу прощения, сам ошибся!!!!!!
Заказ покупателя и РеализацияТоваровиУслуг ERP 2.2.4.154 заполняет ставку НДС на 18%, сумму ндс не пересчитывает, хотя ПТУ нормально все пересчитывает
(20) Михаил, добрый вечер. Вызов событий при заполнении полей реализован только для обычных форм. По идее для ПТиУ сумму НДС обработка тоже не должна пересчитывать.
(21) Добрый вечер. Печалька 🙁 Ставлю цену закупочная в Документах ПТиУ делает, ставлю цену в РТиУ закупочная — меняет как надо ставку НДС и пересчитывает сумму НДС, из 10 строчек Н-ры 2 Закупочные остальные продажные, закуп пересчитывает, продажные нет, прикольно )))))
В «Управление торговлей для Казахстана, редакция 3, локализация для Казахстана: «1С-Рейтинг» (3.4.4.15)» не работает.
Хочу заполнить ТЧ документа «Заказ клиента» из ТЧ документа «Заказ поставщику».
Обработку зарегистрировал, документы в назначении указал, открываю Заказ клиента, заполняю Основное, перехожу во вкладку Товары, нажимаю кнопку «Заполнить документ», вылетает внизу окошко-сообщение «Команда выполняется. Заполнить документ» и больше ничего… Не вылетает ничего, где можно указать нужный Заказ поставщику…
Наверное, зря потраченные стартмани 🙁
(23) Добрый вечер. Насколько я понимаю, вы хотели заполнить табличную часть одного документа, на основании табличной части другого документа.
Если да, то я сожалею, моя обработка этого не умеет. Она заполняет табличную часть документа каким-то выбранным значением.
Если вам всё-таки необходим функционал моей обработки, то я могу поискать конфигурацию «Управление торговлей для Казахстана, редакция 3» и посмотреть, в чем может быть причина того, что не появляется окно для заполнения.
(24)
Понятно. Теперь разобрался.
https://infostart.ru/public/678230/
Взял вот эту —
Заполнил по ней ТЧ, а вашей изменил вид цены по всем строкам сразу.
Работает. Думаю, что пригодится все-таки. Благодарю.
Но. Советую тогда сменить название, хотя бы на что-то типа «Изменение реквизитов табличной части» или добавьте скриншот, где видна форма выбора реквизитов и установки их значений, так как именно это и делает ваша обработка. Кстати, очень даже удобно и не надо работать с такими мощными «комбайнами» какhttps://infostart.ru/public/122215/ , когда надо сделать быстро одну простую операцию.
Был стакан пустой — налили в него воды из кружки или ведра — заполнили его.
Стакан заполнен простой водой — добавили туда ложку сахара — вода стала сладкой — изменили воду в стакане.