<?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='\
Спасибо, очень пригодится обработка!
Мне пригодилась, спасибо.
Эх добавить еще изменение записей в подчиненных РН, цены не было бы!
(3) gull22, Не очень понял. «подчиненных РН» — это что? Регистры накопления? Так они все подчинены регистратору и в обработке их можно менять.
(4)
На вопрос — ответ «Да».
Под заменой я имел ввиду следующую ситуацию. Сейчас переход на ОКТМО, штатная обработка замены ОКПО на ОКТМО, почему то не захватила РН начальных периодов года. На Инфостарте уже 2 обработки по замене ОКТМО. Суть обработок в замене неправильно введенных ОКТМО (т.к. штатная обработка не позволяет отработать такую ситуацию). Надо внести изменения в поля ОКТМО для РН расчетов с бюджетом по НДФЛ.
Судя по Вашему описанию это в Вашей обработке не реализовано?
(5) gull22, Я вообще даже близко не занимаюсь тем, о чем вы говорите. Как можно понять, что ОКТМО неправильный?
Документы по начислению НДФЛ в 2014 году ставят в поле «ОКТМО/КПП» регистра накопления (РН)(условно)
22222000 /222201001 (формируется при выполнении модуля документа)
а в результате обработки записалось за 2013 год
22222000/222201001 (это было сформировано штатной обработкой 1с для замены ОКТМО)
В документах «2-НДФЛ для сотрудников» за 2013 в шапке стоит ОКТМО «22222000 /222201001» (тянет из справочника Организации). Поэтому ОКТМО = «22222000/222201001» из РН не воспринимаются при заполнении данных.
Код ОКТМО должен занимать 11 знаков (для большинства населенных пунктов), но для крупных установлено 8 знаков. Вот и приходится менять «22222000/222201001» на «22222000 /222201001»
(7) gull22, не, моя обработка такого сделать не сможет
Ваша обработка может изменить Контактную информацию? Надо автоматизировать изменение адреса у большой группы сотрудников, неправильно введен населенный пункт, необходимо у каждого сотрудника изменить 3 адреса. Видела много подобных обработок, но ни одна не редактирует Контактную информацию.
(9) ГердаКай, в вашей конфигурации контактная информация где храниться? В регистре сведений или табличной части объекта?
Скачал. Нужно было изменить стоимость в регистре накопления.
Не работает. Полез в отладчик, а там это:
т.е. я правильно понял, что в регистрах накопления она не может ничего менять?
(11) Atow, скорее всего это ошибка.
А что же регистры бухгалтерии обошли вниманием? Это ведь по сути те же регистры накопления! Эх, так надеялась воспользоваться вашей обработкой.
(13) y-ha, я не обошел вниманием регистры бухгалтерии. Все дело в том, что нужды в таких функциях не возникало ни у меня, ни у пользователей. Если вам нужен такой функционал, то готов сделать. Но на это уйдет много времени
(11) Atow, Если еще актуально: доработал , добавил возможность менять реквизиты/измерения Регистров Накопления
Большое спасибо за обработку — сильно выручила
(16) vovanoren, я рад)
Надо по чистить счета 20, 26, 23 за прошлые года — это можно сделать этой обработкой?
т.е. когда делаем закрытие счетов 20, 26, 23 — выдает ошибку «Выполните повторно регламентную операцию «Закрытие счетов 20, 23, 25, 26″ за тот месяц, в котором образовалось отрицательное сальдо»
(18) webresurs, добрый день! Обработка предназначена для корректировки регистров сведений и накопления. Могу доделать и для регистров бухгалтерии, но на это уйдет время
(18) webresurs, добавил возможность корректировать регистры бухгалтерии. Если еще актуально, то можете приобрести обработку
Код открытый? А то запускать ТАКУЮ обработку, не зная, что она реально сделает — ну её на фиг.
(21) alex-ander, код полностью открытый, никаких ограничений нет.
А я по старинке использую Инструменты разработчика… Правда приходится перезапускаться в обычном приложении.
(23) smirnov.a, я так тоже долгое время работал. Потом решил, что надоело) и сделал эту обработку
Купил, понравилась! ОЧЕНЬ удобный инструмент! Спасибо.
(25) BondStreet, спасибо! приятно читать
Добрый день!
При попытке замены счёта учёта выдаётся ошибка «Поле объекта не обнаружено «СубконтоДт 1″».
(27) Vital-tula, попробуйте данную разработку, может у нас подходы и разные но реализация схожаhttp://infostart.ru/public/377684/
(27) Vital-tula, Добрый. Проверю, отпишусь
(27) Vital-tula, напишите в личку вашу почту, пожалуйста. Вышлю правки
Добрый день!
А в ЗУП 3.0 работать будет?
(31) nachprod, да
Добрый день, а на нынешних 8.3.12 — 8.3.13 в ЗУП 3.1.8 будет работать?
(33) будет
В УНФ если обрабатывать регистр ЦеныНоменклатуры, то в списке не заполняется колонка «ед» и из-за этого не проходит условие
СтрокиСовпадают = ТаблицаКопияПоИзмерениям.НайтиСтроки(СтруктураПолногоСовпадения).Количество() > 0;
и реквизиты не перезаполняются
(35) сможете предоставить dt с примером? У меня только унф для Украины есть
Добрый день! Для скачивания прикреплена версия 1.6, но в описании идет речь о 1.7
Как получить 1.7 ?
почему-то из некоторых РС не может получить данные, хотя отбор работает верно, соответственно и не изменяет, с чем это связано?
(38)
(38) нажмите «Подробно». что там написано?
БП 3 (3.0.71.86)
Не появляется Меню Выберите Действиеhttp://joxi.ru/1A5MVpgtDV4x3A?d=1 . Подскажите пож как исправить.