<?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='\
Спасибо, очень вовремя написанная статья!
(2) Первыми столкнулись именно пользователи БП 3.0.
Большое спасибо за статью! Уже голову сломал как вернуть печать, все сделал кроме общего модуля
1. Что касается БП 3.0, то эта статья для тех кто не знает, что это можно прочитать в файле «UpdateSSLhtm» в каталоге, куда устанавливается БСП 2.4. Скачайте БСП 2.4 и получите порядок обновления этой подсистемы и прочих, которые поменялись в 2.4. К тому же 1С поставляет обработку, которая модифицирует код старой версии БСП в объектах, подключенных к БСП при внедрении.
2. Порядок внедрения БСП изложен в документацииhttps://its.1c.ru/db/bsp244doc/ в картинках и кусках кода для вставки, если делать по шагам, то проблем не возникает.
Большое спасибо за помощь!!!!!!!!
У меня ругалось на ВыполнитьКоманду пока не глянул в параметры этой процедуры. Элементы.Список должен содержать поле — Ссылка. Версия БСП — 2.4.2.25
Благодарю за публикацию. Пригодилась! 🙂
Огромное человеческое спасибо !!! особенно за.
Есть косяк именно в бухгалтерии 3.0.52.*.
Для подключенных «Дополнительных отчетов и обработок» в «ФормеСписка» для документов пропала кнопка — «Отчеты…».
Причем в БСП все нормально работает.
Глубоко не копал. Тестовую конфигурацию вылечил:
….»Включить возможность изменения»
Документы.ПлатежныеПоручения.ФормаСписка
ГруппаКоманднаяПанель добавил ПодменюПечать.
Сейчас пытаюсь написать дополнительную обработку которая по кнопке «Печать » восстановит кнопку «Отчеты…». (Опять зубы через задницу лечить…)
Решил расширением конфигурации.
Общий модуль — Подключаемые команды
Показать
ОООООООО спасибо огромное! Методом тыка нашла лишние процедуры, теперь по вашей статье попробую до конца доделать
Присоединяюсь к благодарившим, очень вовремя, просто спасли!!!
Добавлю свои 5 копеек.
Когда добавляете (переписываете) под БСП 2.4 свои объекты, по мимо действий указанных в статье, по крайней мере для ERP 2.4, необходимо проделать еще несколько манипуляций, что бы вся эта магия от 1С версии 2.4 заработала.
А конкретно надо сделать следующее:
Для Добавления команд Отчеты, ввод на основании надо указать БСП, что для этого объекта надо использовать механизм «стандартных подсистем». Делаем следующее:
— для отчетов: Общий модуль «ВариантыОтчетовПереопределяемый» процедура «ОпределитьОбъектыСКомандамиОтчетов» добавляем свой объект в массив.
— для Ввода на основании: Общий модуль «СозданиеНаОснованииПереопределяемый» процедура «ПриОпределенииОбъектовСКомандамиСозданияНаОсновании» добавляем свой объект в массив.
для печати, заполнения и проч. видимо тоже есть процедуры, но я их не искал и не использовал из-за ненадобности (пока еще) =).
надеюсь сэкономил полчаса работы.
Обе статьи актуальны, т.к. есть и самописаные конфы, созданные ещё во времена динозавров.
Статья пригодилась, спасибо, как раз делали переход с КА 2.2 на 2.4
правда я так понял команда печати для формы регистра сведений это не прокатит, там идет сравнение типов, на этом все и рушится, по старой схеме раньше работало все…
т.е. при следующем обновлении эта процедура затрется ПриОпределенииОбъектовСКомандамиПечати
И так отслеживать это постоянно.
(17) Меня тоже это печалит. Уже несколько раз добавлял свои документы после обновления. Не возникло идей, каким образом можно избавиться от редактирования «ПриОпределенииОбъектовСКомандамиПечати» чтобы после обновления не пропадали печатные печатные формы в «своих» документах?
Спасибо! Очень своевременно.
Спасибо! Хорошая статья.
Спасибо. Добавлю еще неочевидный момент:
в форме списка в динамическом списке ОБЯЗАТЕЛЬНО должна быть Ссылка (писали выше). Но если ее видимость отключить в пользовательском режиме (или в конфигураторе — не важно), то печать перестает работать.
Выход: в настройках поля включить флаг «Использовать всегда».
Вот цитата с итс:
Внимание. Поле Ссылка динамического списка формы должно быть доступно в обработчике команды. Для этого необходимо в свойствах поля Ссылка, вложенного в реквизит формы типа ДинамическийСписок, включить флажок Использовать всегда.
Вот это да! Сутки промучилась, прежде чем нашла пилюлю… Слов нет. Спасибо вам!
Спасибо! Я тоже несколько часов убила, пока нашла в чем дело. А надо было сначала статьи от умных людей почитать))
В итоге от добавления команд печати средствами БСП решила отказаться — перспектива при каждом обновлении восстанавливать затертый код не радует(((
Делаю расширение со своим док-ом, из-за этого момента чуть не забросил мысль о расширении.
спасибо за подробное описание
Что то я не понимаю. Разве никто не наткнулся на нескладушки? Статья нихрена не универсальная! В УТ (11.4.1.273), к примеру, нет УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати!
Не будет работать! Более того, в УправлениеПечатьюУТКлиент нет ничего похожего на ВыполнитьКомандуПечати! Т. е. как быть в случае с УТ вообще непонятно! Не работает эта херня в УТ!
У меня все работает, чего там у тебя не работает непонятно. Автору респект.
(27) Да, в УТ это не работает, такого общего модул, конечно же, нет.
А если пользоваться «УправлениеПечатьюКлиент.ВыполнитьКомандуПечати», то выдает уже другую ошибку:
Обращение к процедуре объекта как к функции (ВыполнитьКомандуПечати)
Вообщем, как адаптировать для УТ пока не разобрался. У вас нашлось решение?
ЗУП 3.1. Ни в какую не появляется кнопка «Печать» в справочнике «Справки физических лиц». Делаю через расширение. Добавил в ПриОпределенииОбъектовСКомандамиПечати СписокОбъектов.Добавить(Справочники.СправкиФизическихЛиц). Прописал в ПриСозданииНаСервере ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект). Толку нет. Кнопка не пояляется. Что я делаю не так?
Спасибо большущее! Сутки голову ломаю, найти не могла где собака порылась.
Спасибо большое. Чутье подсказывало, что где-то теперь нужно указывать документы в которых должны подключаться команды, думал в каком-то регистре сведений. Хорошо что есть гугл, который по запросу «команды печати 1с БСП» вывел прямиком на вашу статью. Не пришлось долго искать.
Спасибо. Очень полезно.
Как сделать добавление под кнопку «Печать» внешних печатных форм добавленных в базу?
Спасибо, пригодилось, не получилось пока с журналом документов и формой списка, ругается по всякому, буду разбираться
Отличная статья! Очень помогла!!!
Спасибо! Во время, очень помогло.
Спасибо! Очень помогли. Очень вовремя увидела вашу статью.
Апну немного тему! Граждане! Общего описания этого загадошного механизма нет ни у кого? УТ так и не работает данный вариант. Более того! В самой УТ в разных доках реализовано это по разному! И от релиза к релизу ботва эта меняется со скоростью света! Может кто описать процесс? В общих чертах?
во всех статьях в сети УправлениеПечатьюБПКлиент
В УНФ 1.6.5. БСП 2.3.1.53
в модуле УправлениеПечатьюСлужебныйКлиент
в процедуре ВыполнитьПодключаемуюКомандуПечатиПодготовкаОбъектовПечати
вываливается:
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(125)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода Результат = Вычислить(Обработчик);
по причине:
{(1,1)}: Переменная не определена (УправлениеПечатьюБПКлиент)
<<?>>УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати(ОписаниеКоманды)
Менял в Модуле Менеджера Документа
УправлениеПечатьюБПКлиент на УправлениеПечатьюКлиент и также на
Подключаемый_ВыполнитьКомандуПечати
всёравно ошибки, куда же копать?
БПКлиент только в Бух и работает, кто-нибудь нашел решение для других конфигураций?
Уточню в УНФ 1.6.5. БСП 2.3.2.53
Глянул в отладчике какой параметр у КомандаПечати.Обработчик в стандартной печати, оказывается никакого нет.
Поэтому указал КомандаПечати.Обработчик = «»;
Заработало
Спасибо автору. Сэкономил уйму времени.
Спасибо за статью.
(29) Если убрать обработчик «КомандаПечати.Обработчик = «УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати» »
, то в УТ все будет работать.
Благодарю!!! Тоже намучилась с этой кнопкой печати при обновлении. «3. И то, чего нет в указанной статье:» помогло, поскольку остальное я уже на сто раз проверила.
(18) Класс — это очень емко. У меня только не цензурная лексика.