<?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)
Клиент-Банк формирует файл kl_to_1c.txt со структурой (рис.1), а эта обработка загружает файл со структурой (Рис.2). Файл(рис.2) клиенту пришел от сбера по почте. Я сперва этот файл (рис.2) пытался скормить стандартной обработке, но она выдает ошибку.
(2)
Нет, это для типовой УТ 10.3
Ошибка в обработке: — Суммы загружаются без копеек. Что не правильно.
Где и что надо подправить?
(5)
Поправил. Это не ошибка была, а по ТЗ заказчика, там копеек не было, т.к у них нет цен с копейками.
А есть тоже самое только для 1С 8 БГУ ред.1.0 (бухг. гос. учреждения)
??
для управляемых форм есть подобное?
(9) Переписывал под УФ. Как время появится выложу тут.
(10) очень ждём, готовы потестировать.
Добрый день! Я правильно понимаю, что в бухгалтерии предприятия работать не будет?
Напишите ваше сообщение
(12) Добрый день! Она будет работать в бухгалтерии предприятия 2.0
(11) Добавил версию для УФ, тестируйте)
Если у вас Бухгалтерия предприятия 3.0, то качайте версию для БП 3.0
В БП 3.0 не работает.
(16) в БП 3.0 не работает
(17) Какую ошибку выдает? Какая у вас версия БП? Делал в БП 3.0, релиз примерно полгода назад выпущенный.
У нас просто чистый экран. Вкладка без названия.
http://v8.1c.ru/buhv8/)
http://www.1c.ru)
Платформа: 1С:Предприятие 8.3 (8.3.13.1513)
Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.65.72) (
Copyright (С) ООО «1C-Софт», 2009 — 2018. Все права защищены
(
Режим: Файловый (без сжатия)
Приложение: Тонкий клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)
Вариант интерфейса: Такси
(20) Вы точно качаете обработку которая называется «Импорт реестра из Сбербанка для БП 3.0» ?
Проверил сейчас на версии Бухгалтерия предприятия, редакция 3.0 (3.0.64.54), платформа 1С:Предприятие 8.3 (8.3.12.1616). Все открылось и документы создались. Чуть позже еще обновлю конфу до последней версии..Проверю, отпишу.
Прошу прощения. Сначала не ту версию скачал — не заметил. Но правильная все равно не работает. Интерфейс отличается от того что на картинке. Выбрать счет и статью негде. Кроме того по видимому формат самого реестра из сбера немного другой. У нас расширение (.y*) и простое переименование в txt не помогает — ошибка. Сканы и пример реестра прикладываю. Может я опять чего не так сделал — ваще ни разу не программист, извините. Может поможете?
(22) Да, интерфейс там другой немного другой, но принцип тот же. Счета и статьи затрат нет ,т.к документ другой создается (не ПП входящее а поступление на расчетный счет). А не работает у Вас потому, что структура файла другая. В Вашем файле длина строки больше, чем у файла для которого я писал эту обработку. Я не знаю почему Сбербанк отправляет реестры своим клиентам в разных форматах, наверное, делают как им удобно).
(22) У нас точно такая же проблема… формат реестра такой же…
user1085032 и Griga71, для вашего формата файла добавил обработку»
Импорт реестра из Сбербанка для БП 3.0 (2)». Только не пойму где у вас в файле непосредственно сумма платежа. Оставил пока как в моем файле(первая цифра после фио/комментария). Проверяйте.
(22) user1085032 и Griga71, для вашего формата файла выложил обработку
Импорт реестра из Сбербанка для БП 3.0 (2)
1С:Предприятие 8.3 (8.3.13.1513)
Бухгалтерия предприятия, редакция 3.0 (3.0.65.80)
Режим: Серверный (сжатие: усиленное)
Через Файл-Открыть пробовал обе обработки. У второй ошибка: Не удалось прочитать файл. Каталог не обнаружен.
Через интерфейс добавления внешней обработки ошибка:
Метод объекта не обнаружен (СведенияОВнешнейОбработке)
(27) Через файл-открыть должно работать. Возможно у вас стоит запрет на запуск внешних обработок.
Метод, «СведенияОВнешнейОбработке»,я не добавлял, постараюсь добавить в ближайшее время.
И формат файла у Вас, к сожалению, отличается от файла user1085032(строка другой длины).
Вообщем, как понял обработку надо править для каждого конкретного случая. Код обработки открыт.
(28) похоже надо учесть возможность корректной работы в клиент-серверном режиме. при попытке чтения файла с компьютера пользователя показывает ошибку.
Мой формат реестра (в приложении) не открывает (индекс находится за пределами массива). Реестр user1085032 открылся.
1С8.3 Бухгалтерия предприятия, редакция 3.0 (3.0.64.34)
Файл не подгружается. Программа пишет «Невозможно подключить дополнительную обработку из файла.
Возможно, она не подходит для этой версии программы». Я что-то делаю не так? Есть ли выход из ситуации?
(31) У Вас база файловая или клиент-северная? Для файловой писалась обработка. Через файлоткрыть должно открываться, проверено на многих платформах.
(31)
Возможно, она не подходит для этой версии программы
откройте, как сказал автор через Файл/Открыть, потому что
1С:Предприятие 8.3 (8.3.13.1644) на облачной через меню открыть выдает сообщение: Не удалось прочитать файл: {ВнешняяОбработка.импортсосбера.Форма.ФормаУпр.Форма(168)}: Ошибка при вызове метода контекста (Прочитать): Каталог не обнаружен ‘C:UsersUserDocumentsBANKРеестры2018Банк 72019Новая папкаНовая папка5078023147_40702810200000005330_281.txt’
1С:Предприятие 8.3 (8.3.13.1513) файловая выдает сообщение :индекс за границами массива
Пробовали и в формате .txt и в формате.y
В чем проблема еще может быть?Спасибо
(34)
Здравствуйте!
У Вас такая же проблема, что и описана выше. Структура вашего файла отличается от той для которой изначально писана обработка. Отличается несильно, нужно поправить обработку. Налоговая файлы формирует по разному, отличатся может и длина строки и порядок следования данных, поэтому нужно править обработку для каждого конкретного случая.
Добрый день.А Вы не могли бы дописать свою обработку под структуру нашего файла.На определенных услових, конечно (под заказ)
(36) Добрый! Могу, но за платно.
Добрый день! Открываю обработку, просто чистый экран.
Что делать?
(38) Добрый день! Вы скорей всего скачали обработку по верхней ссылке, это обработка для Бухгалтерии 2.0, а открываете в Бухгалтерии 3.0. Качайте нужную.
А какую? вторую или третью?
Импорт реестра из Сбербанка для БП 3.0:
или
Импорт реестра из Сбербанка для БП 3.0 (2):
чем они отличаются?
(40) Это зависит от структуры вашего файла, почитайте комментарии. Обе обработки для БП 3.0, они запустятся. И вполне вероятно, что именно для вашего файла не подойдет не 2ая, ни 3яя обработка. А может и подойдет. Налоговая их по разному формирует.