<?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С: Бухгалтерия 2.0 и 1С: Бухгалтерии КОРП на платформе 8.2.
Перейти к публикации
Обработка очень нужная, но как её поставить в программу? Пожалуйста, подскажите для «чайника»
(1) Сервис->Дополнительные отчеты и обработки->Дополнительные внешние печатные формы->Заменить файл внешней обработки->Принять пораметры авторегистрации->Зайти в документ Счет-фактура->Печать->
А почему на просмотр и печать выходит без даты?
(3)Исправил.
Кстати, графу «К платежно-расчетному документу» то же не заполняет (по ранее полученным авансам). НДС к возмещению — в пролете.
(5) Проверил. Графа «К платежно-расчетному документу» заполняется нормально. НДС к возмещению, честно говоря в Счет-фактуре выданной вообще не нашел. Пожалуйста, опишите при каких условиях возникают ошибки, или как заполняете документ?
Спасибо за обработку, мне она очень нужна. Но, к сожалению, в графе «К платежно-расчетному документу» постоянно забивается «№ 32 от 21.03.2011» для всех контрагентов (((
(7) см. (6)
Опишите, куда входите, что нажимаете?
Сначала зарегистрировала внешнюю печатную форму для своей БП 2.0.23.9. Потом действую стандартно — создаю СФ из ТН, причём в экранной форме СФ вижу правильный номер и дату платёжно-расчётного документа. Нажимаю на печать «СФ с подписями» — и в печатном виде вылезает в графе «К платежно-расчетному документу»: № 32 от 21.03.20011. Это поступление у меня в базе зарегистрировано для одного контрагента. Но почему-то вылезает в счетах-фактурах и для других контаргентов. И даже если отгрузка происходит до оплаты — всё равно вылезает этот неверный номер. Не пойму где это можно обнулить. Подскажите, пожалуйста.
Спасибо за обработку. Для УТ 8.1 есть подобная внешняя форма?
очень бы хотелось для УТ 8.2. спасибо
Действительно есть проблема с номером платежно-расчетного документа.
Возникает она в момент, когда мы формируя первую счет-фактуру с подписями ответственных лиц, делаем сохранение этих настроек.
После этого дата и номер платежки из первой счет-фактуры подставляется во все последующие печатные формы.
«Обнулить» можно только, если удалить сохраненную настройку.
Спасибо, Вячеслав, за совет по «обнулению». Получается, что сохранять настройку нельзя? Всё время заново выбирать ответственных лиц и забивать их приказы?
Будем надеяться, что автор внесет коррективы
Ошибку исправил.
Спасибо! Теперь всё ОК.
Спасибо! Очень пригодилась.
Спасибо! Очень пригодилась. ПРОСТО СПАСЕНИЕ и
экономия времени.
Обработка хорошая, но хотелось бы сохранять настройки без косяков.
(19) — У меня после последних изменений автора настройки работают без косяков.
Спасибо автору. пригодилась как раз
Спасибо, очень помогла)Посмотрел как сделали и сделал на возврат товара от покупателя))
Почти обрадовала, но пришлось разочароваться, у меня платформа 1С 8.2 конфигурация Бухгалтерия предприятия 2.0.28.3. Форма открывается, но не выводит «На основании …», что делать, помогите?
(23) «На основании…» имеется в виду «На основании приказа №… от …»? В окне выбора ФИО руководителя и бухгалтера заполните номера и даты приказов.
(24) сейчас попробовал запустить опять эту форму, и заработало! Первый раз ни в какую не хотело, видимо из-за того что при первом запуске указал только фамилии в реквизитах, потом уже заполнял их (ФИО, № приказа, дату) полностью, но не помогало. Спасибо за форму, очень выручила, но по ходу ее надо еще дорабатывать, например, нашел еще «косяк», когда закрываещь окно с реквизитами через «крестик» открывается печатная форма, чего по идее не должно происходить.
После обновления на Версию Бухгалтерия предприятия, редакция 2.0 (2.0.30.8)
Ошибка
Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (НДСВидСчетаФактуры)
(26) seven77782, Вы правы. В 30.8 релизе 1С изменила название перечисления с «НДСВидСчетаФактуры» на ВидСчетаФактурыВыставленного.
Выход: либо изменить в модуле обработки все «НДСВидСчетаФактуры» на «ВидСчетаФактурыВыставленного», либо скачать печатную форму снова. Исправленный файл перезалил.
Спасибо.
Для переделаных конфигураций, показалось более удобным использовать следующий алгоритм:
В справочник Организаций добавляем реквизит с текстом «Приказа о подписях» и ТЧ со списком пользователей имеющих право подписи.
При печати:
1) Проверяется текущий пользователь на право подписи. Если имеет право, то допечатывается ссылка на приказ и данные пользователя;
2) Проверяется реквизит Ответственный из документа. Если имеет право, то допечатывается ссылка на приказ и данные Ответственного;
3) Оставляем штатный механизм подписей руководителя/ГлавБуха.
(29) Согласен. В измененных конфигурациях, использовать внешние обработки, особого смысла нет. Конечно, решений вопроса «подписей» может быть уйма, тем более в не типовых базах. Но, на мой взгляд, обычному пользователю, даже в измененную конфигурацию будет сложно внести описанные Вами доработки.
(30) создать обновление для типовой конфигурации не сверх сложная задача. Но отследить последующие обновления (что бы не затёрлось…) это много сложнее. К тому же, если конфигурация изменённая, то есть программист. Это его задача внести оптимальный алгоритм через изменения в программе.
Спасибо! Очень пригодилась.
Спасибо за обработку! Форма очень пригодилась.
Спасибо за обработку. Все работает.
Только не всем подойдет…