<?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) Выложил описание регистра
Блин пишет ошибку
{ВнешнийОтчет.КассоваяКнига(553)}: Значение не является значением объектного типа (Метаданные)
Если ВыборкаДокументов.Документ.ДокументОснование.Метаданные().Имя = «ОтчетОРозничныхПродажах» Тогда
Что делать??
(3) Исправлено
Как тока зальешь новую версию, отпишись пожалуйста!
Добавлен раздельный учет по кассам. Исправлены ошибки, недоработки…
Ошибка в валютных кассах!!!!!!!!!!
(7) какая ошибка?
Обороты по документам и проводкам совпадают!
Обороты по документам и проводкам не совпадают!
спс
а слабо было адаптировать какой нибудь типовой универсальный регистр сведений, типа ЗначенияСвойсвОбъектов? А так — плюс.
а это не нарушение вытаскивать из бухии?
(13) Чтобы 1С патенотовали исходные модули типовых конфигураций, я не слышал… Думаю, что если у Вас лицензионная УТ, то проблем не будет… Но я не франчайзи и утверждать не могу… Может кто знающий подскажет…
Бывает настроение — ну совсем не стоит делать именно это, и тут срочно нужно что-то типа этой книги — хлоп — спасибо огромное!
Обновляй процедуру, пока на первой стадии тестирования — работает зачётно!! Спасибо!
почему в кассовой книге не выводится обложка 😥
При формировании выдает ошибку:
{ВнешнийОтчет.КассоваяКнига(1152)}: Поле объекта не обнаружено (НомераЛистовКассовойКниги)
ТекНомера = РегистрыСведений.НомераЛистовКассовойКниги.СрезПоследних(ДатаЛиста,Новый Структура(«Организация»,Организация));
пардон, не добавил регистр номеров страниц из БП.
Спасибо пригодилась, не доступен переключатель: «последний в месяце» если дата отчёта не приходится на последний день месяца.
(14) Тоже об этом не слышал. По моему это правило хорошего тона — использовать то, что уже протестировано в типовой. Это же не плагиат — это
. Обработочка, конечно, же полезна бухам, когда-то такую же делал. Так, что плюсуйте, если понравится.
+ (20) Правда я делал с возможностью настройки номеровлистов…
тоже проблема, вообщем в описании неплохо бы указать как сделать чтоб работа)
{ВнешнийОтчет.КассоваяКнига.МодульОбъекта(100)}: Поле объекта не обнаружено (НомераЛистовКассовойКниги)
Номера=РегистрыСведений.НомераЛистовКассовойКниги.СрезПоследних(ДатаНач-86400,Новый Структура(«Организация»,Организация));
Спасибо. ОЧЕНЬ помогло
тоже проблема, вообщем в описании неплохо бы указать как сделать чтоб работа)
Да! Автор добавь кнопку «Сделать чтобы всё работало!» )
(22, 24) Не понимаю, что у Вас вызвало затруднения. Описание к публикации:
Для работы отчета необходимо скопировать в конфигурацию регистр сведений «НомераЛистовКассовойКниги» из конф. БП.«
По буквам: Нужно открыть конфигурацию Бухгалтерия Предприятия, найти в дереве метаданных Регистр сведений «НомераЛистовКассовойКниги». Скопировать его в буфер (Ctrl+C). Открыть конфигурацию Управление торговлей, открыть ветку метаданных «Регистры сведений», вставить из буфера (Ctrl+V). Обновить конфигурацию БД. Отчет заработает…
у меня все работает, спасибо за отчет!
Спасибо за отчетик,
Переходим с 77 на 8.2 и возникло много разных доработок. Ведь 77 юзают уже лет 5.
Регистр добавил и заработало все сходу.
Сейчас воткну в рабочую базу, добавлю вызов из интерфейса и бух в понедельник будет доволен.
Используем больше года, полет нормальный.
Отличная штука
у меня все работает, спасибо за отчет!
Спасибо автору, использовал этот отчет слегка изменив его под собственные нужды. Бухгалтеры остались довольны!
Взял этот отчет для УПП 1.3.20. Исправил только одну букву в вызове общего модуля.
Было:
Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизации(Организация, КонецДня(ДатаЛиста),);
Стало:
Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Организация, КонецДня(ДатаЛиста),);
И все работает! Спасибо.
Была необходимость по некоторым операциям исправить бухгалтерские счета учета. Добавил в справочник статьи движения ДС.
Доброго дня Всем !!!
Подскажите под 8.2 работет ?(проверить не могу, маней не хватает)
При добавление регистра сведений «НомераЛистовКассовойКниги» в конфигурацию, конфигурация слетает с поддержики или нет ?
(34)
Да, работает…
Для добавления рег. сведений, в конфигурации нужно включить возможность изменения. С поддержки конфигурацию снимать не нужно…
(35)
Спасибо за науку
to begemot
а нельзя начинающему пользователю объяснить поподробнее где находится сей регистр.
направление движения хотя бы укажите.
из всего обсуждения понял только что вещь очень нужная, так как ИПшникам вменили кассовую дисциплину.
Кассовая книга есть в УТ 11, но её нету базовой:-(((
Заранее спасибо.
В любом случае +
(37) Читайте пост 25
Народ !!
Помогите победить проблему с этим отчётом.
Отчёт не работает с пользователями у которых нет полных прав. вываливается такая ошибка {ВнешнийОтчет.КассоваяКнига(100)}: Ошибка при вызове метода контекста (СрезПоследних): Нарушение прав доступа!
Номера=РегистрыСведений.НомераЛистовКассовойКниги.СрезПоследних(ДатаНач-86400,Новый Структура(«Организация»,Организация));
по причине:
Нарушение прав доступа!,
В конфигураторе регистр сведений -> Дополнительно — > права, галочки для пользователя выставил, результат тот же
Конфигурация УТ 10.3
(39)
РЕШЕНО !
Добавил права на изменение, просмотр , редактирование, на скопированный с БП регистр в роли пользователя «Кассир»,после копирования были права только на чтение.
Получается что без изменений к типовой конфе не обойтись
спасибо. Жаль счета надо допилывать. А так все отлично.
Странно, но у меня падает 1С при формировании ((
Такое же бывает при формировании некоторых отчетов…
Понятно давнишняя обработка, но вот фотки никогда не помешают