<?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='\
Т.е. для «новой» УТ_10.3 есть официальное обновления по НДС (хотя они там и не нужны, существуют еще с доисторических времен), а для УТ_11.0 нет?
Замените в карточках номенклатуры любой стандартной обработкой. Перевыбирать каждый раз — таких дров наворотить можно…
Не думал, что кто-то УТ 11.0 использует.
Уж очень не удачный релиз.
Странно, как-то: недавно добавлял ставку НДС 20% в древнем релизе УТ 11.0. После добавления новых значений перечисления, через глобальный поиск нашлось не менее 30 упоминаний ставки «НДС18». Пришлось все эти фрагменты так или иначе допиливать… Пройдитесь на всякий случай глобальным поиском.
Два дня назад добавлял ставки 20 и 20/120 в УТ 11.3.4.31. Глобальный поиск по «НДС18» выдал 389 вхождений. Наибольшее количество — в документах вида «СФ выданный на аванс» и отчетах «Книга покупок», «Книга продаж».
После создания новых значений перечисления «СтавкиНДС», особенное внимание следует обратить вот на что:
— в ряде случаев в коде нужно просто заменить «Перечисления.СтавкиНДС.НДС18» на «Перечисления.СтавкиНДС.НДС20»
— в ряде случаев создаются массивы ставок и при добавлении туда новых значений, следует внимательно проверить извлечение значений из массива по индексу
Поиск лучше делать по «.СтавкиНДС.НДС18». Таким образом захватим и обращения в запросе, и встроенный язык, и расчетную ставку.
Заменять лучше не надо, надо именно добавить.
Внимательно следить за запросами, где в качестве параметра передаётся ставкамассив ставок. Эти запросы потом через «выбор когда» могут присваивать произвольные псевдонимы полям.
Если интересно, рекомендации от 1С:
В статье задача решена 20%.
Пока по всей конфигурации не пройтись — работать не будет правильно. Это только справочное изменение.
Я поиск делал с помощью «поиск ссылок на объект» выделив перечисление «СтавкиНДС».
Ушло примерно 2 часа проход и правку всех мест где идет расчет ставки НДС. Тут не только модули, но и в тесте запроса много мест надо править. Некоторые тексты запроса проще через «конструктор запроса», а в некоторых местах пришлось текст без конструктора править.
в результате все печатные формы формируются правильно. Расчет ставки в документах идет верно. Осталось проверить формирование отчётностей и т.п.
Все отчеты на СКД «запиленные» будут через «Иначе» работать.
Я древнюю переписанную в давно 11.1 обновлял. Там копипастинга часа на полтора вышло, не считая древних модулей с книгами покупок и продаж. То, что в статье — это первое, что на ум приходит. И «Программа, меняющая в ставку НДС в справочнике Номенклатура с 18% на 20% находиться…» внутри конфы и назвыется Групповое изменение реквизитов. Хотя честно не помню, есть ли в 11.0 она. Еще Нужно 3-ий шаг добавить. Делаем глобальный поиск по «18» и …
Все сделали как описано, появился выбор ставки 20% во всех документах продажи, договорах, ПКО, РКО, безналичные платежи, номенклатуре, а вот в документах закупки нет, подскажите где копать.
1С:Предприятие 8.3 (8.3.13.1513)
Управление торговлей, редакция 11 (11.3.4.228)
Я сделал как у автора + глобальным поиском фразу «СтавкиНДС.НДС18». В 11.0.7.21 нашлось мест 50. Копипастом и заменой пробежался. Пока вроде всё норм. Далее будет видно. Если глобальным поиском по фразе «НДС18», то около 300 мест нужно править — надеюсь этого не нужно будет делать. А то ещё часа на 3. По поводу групповой обработки внутри конфы, как-то она там странно работает. Можно менять ставку, но массово только по категориям или всё сразу. Лучше заменить обработкой автора в 1 клик. Я проверил уже.
Вот такая ситуация.
(8) Та же проблема. Некогда разбираться. Пока добавили еще один реквизит СтавкаНДС на форму, а старый скрыли. Истина где-то рядом)
(8)Управление торговлей, редакция 11 (11.3.4.164)