<?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) Если группировки по колонкам не использовать, то и кнопки для горизонтальных группировок отображаться не будут. А если использовать группировки по колонкам и включить заголовки, то совсем как-то корявенько получается без кнопок-то.
А текст анонса слово в слово взят вот отсюда)))
http://infostart.ru/public/83915/
(3) мда…. дожились!
уже анонсы плагиатируют
С анонсом как-то не очень вышло. Самому что ли невмоготу написать ?
😳
(1) На счет «редко» скажу что НЕТ. У меня все отчеты используют многоуровневую группировку.
А за дополнительный функционал +, конечно. Остается анонс изменить ;).
(8) Вертикальную многоуровневую. Горизонтальная многоуровневая используется очень редко.
(9) С горизонтальной группировкой — перегруз небольшой.
Наличие обеих группировок смотрится как более универсальное , взрослое решение.
На мой вкус, конечно.
(10) Мое мнение, что надо знать меру когда остановиться.
Рисовать или не рисовать кнопки управления группировками колонок это дело личное. Но если не учитывать наличие группировок колонок, то кнопки управления группировками строк окажутся не на «своих» местах и при включении заголовков из под них вылезут маркеры.
Прорисовка кнопок управления группировками колонок это 50 строк кода в модуле состоящем из ~7300 строк.
При выводе отчета наибольшее время занимает не рисование кнопок, а расчет ширины колонок, и в некоторых случаях расчет занимает 90% времени формирования отчета. Вот где точно останавливаться не нужно.
Он просто не работает
(14)
Если это про файлы во вложении, то они предназначены для замены типовых отчетов УниверсальныйОтчет в конфигурациях. УниверсальныйОтчет это набор универсальных процедур и функций, используемых другими отчетами построенными по шаблону Универсального отчета.
Предлагаемые изменения могут быть внесены в любой отчет, который выводится в ПолеТабличногоДокумента. В том числе и в отчеты сформированные СКД.
Поставил бы еще один плюс за ускорение расчета ширины колонок. Реально долго рассчитывается, а товаров всего-лишь 4000 (так… для начала ;)). Спасибо, alexk-is!
Для какой конфигурации «УниверсальныйОтчет»?
У меня в УТ 10.3.13.2 выскакивает ошибка:
{Отчет.УниверсальныйОтчет(4809)}: Метод объекта не обнаружен (ПолучитьСписокОбработокПодключаемыхКОтчету)
мОбработкиПодключаемыеКОтчету = УниверсальныеМеханизмы.ПолучитьСписокОбработокПодключаемыхКОтчету(ИмяМетаданныхОбъекта);
(17) Перезалил. Попробуйте ещё раз.
Проверено на УТ 10.3.1.17, УТ 10.3.6.8, УТ 10.3.13.2, УПП 1.2.39.1, УПП 1.3.10.1
Спасибо,заработало.
Может сделает кто версию такого универсального отчета без привязки к конкретной конфигурации… А то при написании новой нетиповой тянуть за собой половину «УТ» как-то не особо хочется… Но приходится 🙁
(20) Какая конфигурация?
(21) Конфу пишу «с нуля», для личных целей (V82, Обычное приложение). С отчетами хотелось бы обойтись универсальным и удобным механизмом. Сейчас роюсь в архивах — подобное уже делал на 8.1 вроде (тупо взял и «отцепил» отчет у торговли — естественно, часть функционала отсутствует, в частности по-моему, не сохранял настройки 😀 ).
(22) Тогда проще в универсальном отчете поставить заглушки на отсутствующий функционал конфигурации.
(23) Уже сделал. Кнопки прикрутил, как показано в статье. Результат выложу здесь. А что нужно сделать для ускорения расчета ширины колонок?
(24) Все изменения помечены комментариями // ИС КАВ
(25) Все, нашел. И все исправил.
Во вложении конфигурация 8.1 с универсальным отчетом, который сохраняет настройки. Также дописал его на работу со справочниками, документами и регистрами сведений. Вышло даже круче, чем в УТ)) Кто хочет — можете добавить регистры бухгалтерии и регистры расчета — для еще бОльшей универсальности…
Да, кстати… Делалось все это давно — еще из конфы УТ 10.3.6.8… Так что, если каких-то нововведений нет (встроенная справка, выполнение обработок до и после формирования отчета и т.п.), то извиняйте… )))
(26) Прикольно. 🙂
(26) А для какой конфигурации этот отчет? На УТ 10.3.6.8 не работает.
(28) Это вообще отдельная конфигурация, с одним только универсальным отчетом в составе. Еще оставлен регистр «СохраненныеНастройки», но в нем заменен тип поля «Пользователь» с «СправочникСсылка.Пользователи;СправочникСсылка.ГруппыПользователей» на текстовую строку…
Платформа 8.2.13.205, 219. Конфигурации Бухг. 2.0.17.6, Комплексная автоматизация 1.1.8.1
Ошибка загрузки документа.
Внешний отчет не может быть прочитан текущей версией программы.
(30) Скачал версию для 8.2. Отдельную бы ссылку сделать, для избежания подобных недоразумений.
(31) До чего народу лень ткнуть мышой в список файлов или мозгом подумать. Нет же, отдельную ссылку подавай.
Про универсальность
УниверсальныйОтчет.erf не имеет привязки к конкретной конфигурации…
{ВнешнийОтчет.УниверсальныйОтчет(442)}: Поле объекта не обнаружено (НастройкиКолонтитуловПоУмолчанию)
Настройка = Константы.НастройкиКолонтитуловПоУмолчанию.Получить().Получить();
хотя в целом не плохо
Что-то я не догнал как он работает в Бухгалтерии. У меня ничего не выводится
(33) Исправлено в 2.1.0.2.
Я вот не пойму, это универсальный отчет только по регистрам накопления?
(34)(36) Почти так. Да, в версии 2.х свои настройки у универсального отчета только по регистрам накопления.
Но…
Есть множество отчетов построенных на базе универсального отчета. Если заменить типовой универсальный отчет в конфигурации на этот, то во всех отчетах построенных на базе универсального отчета появятся кнопки управления уровнями группировок и формироваться эти отчеты будут быстрее.
Анонс настроек для версии 3.х
(26) Хороший отчет. Нашел для себя много новых идей.
(34) (36) Добавлена работа со справочниками и документами. Расширена работа с регистрами накопления.
Конфигурация «Управление торговлей», редакция 10.3 (10.3.14.3), демо-версия, заменил полностью стандартный универсальный отчет на Ваш, тыркнул на первый попавшийся регистр и сделал рандомные же настройки — Регистр накопления: Денежные средства в резерве (Остатки и обороты), группировки строк — «Организация», формируем отчет, тыркаем на любую строку, например в поле «приход», выбираем в форме выбора поля «период+регистратор» для формирования нового отчета, результат
{Отчет.УниверсальныйОтчет.МодульОбъекта(5837)}: Ошибка при вызове метода контекста (Добавить)
МассивВыбранныеПоляПоказатели.Добавить(ПостроительОтчета.ВыбранныеПоля.Добавить(Показатель.Имя));
по причине:
по причине:
Поле не найдено. «СуммаНачальныйОстаток»
По полю «Документ движения (регистратор)» если тыркать — та же ошибка.
Сейчас попробовал по регистру «Товары на складах» — та же ошибка.
Попробовал просто открыть этот универсальный отчет, как внешнюю обработку — ошибка повторяется.
У нас в фирме пользователи не делают сами отборы, группировки и прочее в отчетах, пользуются только готовыми настройками. Очень порадовало, что сохраненные настройки отчетов, созданные ДО замены на Ваш универсальный отчет остаются рабочими. Разве что обнаружилось, что отчет «Ведомость по заказам покупателям» барахлит при восстановлении настроек, пишет
{Отчет.УниверсальныйОтчет.МодульОбъекта(5007)}: Ошибка при вызове метода контекста (Сдвинуть)
Приемник.Строки.Сдвинуть(НайденнаяГруппаПоказателей, Источник.Строки.Индекс(ТекущийПоказатель) — Приемник.Строки.Индекс(НайденнаяГруппаПоказателей));
по причине:
Неправильное смещение внутри коллекции
Номер строки не соответствует номеру строки Вашего универсального отчета, там некоторые переделки, НЕ связанные с функциональностью (например, чтобы пользователь не навернул громоздкий отчет за весь период работы в программе, если забыл проставить даты). Ошибка в процедуре «ВосстановитьДеревоПоказателей». Возможно, ошибка связана не с конкретным отчетом (а, например, если некоторые показатели не отмечены и/или перемещены относительно изначального положения), еще толком не разбирался.
Надеюсь, информация поможет Вам в улучшении сего замечательного продукта, спасибо.
(40) Исправлено в 3.0.1.2
Скачал. Поставил. Все работает отлично. Глюков после установки небыло. Рекомендую
уважаемый автор! публикация очень хорошая 🙂 и очень приятно видеть, что она постоянно обновляется, но вот где можно отслеживать цепочку вносимых вами изменений в данный отчет? 🙂
(43)http://infostart.ru/public/84642/blog/post/1479/
Автору спасибо, пользуюсь очень удобно, смотря на него думаешь почему в типовую сразу изменения такие же не вносят)))) Еще раз Спасибо!!!
(45)
почему в типовую сразу изменения такие же не вносят
Потому что я работаю не в фирме 1С 🙂
Вообщем очень удобная, и полезная вещь…
Буду смотреть и тестить, потом отпишусь за результат
Автору большой респект за данный отчёт, радует такой огромный функционал. Что называется на все случаи в жизни бухгалтера. Так же радует постоянные обновления и совершенствование программы
Огромное спасибо. Выручили. Проверено на УПП 1.3.15.2
Пытаюсь пользоваться отчетом как внешним, — вылетает ошибка. Управление производственным предприятием, редакция 1.3 (1.3.15.1), 1С:Предприятие 8.2 (8.2.13.219).
при выборе источника данных ошибка (регистр типовой, например, «Продажи»)
{ВнешнийОтчет.УниверсальныйОтчет.МодульОбъекта(3225)}: Ошибка при установке значения атрибута контекста (Текст)
ПостроительОтчета.Текст = ТекстЗапроса;
по причине:
по причине:
{(24, 17)}: Поле не найдено «ИсточникДанных.ВидДвижения»
ИсточникДанных.<<?>>ВидДвижения КАК ВидДвижения,
Подскажите, пожалуйста, как исправить. Скрин прилагаю.
А каким событием запускается подсчет сумм ячеек?
(51) Исправлено в 4.0.0.2
Событие ПриАктивизацииОбласти
Все работает, спасибо. Обработка события создается программно, здорово.
Просто в восторге от отчета, и как же ты вовремя, пару недель назад хотел универсальный отчет перетащить из УПП в БП,но толком не получилось,т.к. еще очень плохо владею СКД.Думал разберусь, позже сделаю,но этот отчет еще лучше универсального отчета из УПП и главное работает для БП. Огромный тебе плюс.
(54) А ещё естьУниверсальный журнал документов . Он умеет сам рисовать отчеты в СКД.
Сейчас тестирую отчет, в БП 2.0 при выборе настройки «использовать свойства и категории» выдается ошибка:
(56) Исправлено в 4.0.0.3
(57) подскажите пожалуйста по не вашему отчету,но вы в теме даете ссылку на эту разработку.
http://forum.infostart.ru/forum24/topic39318/
Как в итоге пользоваться шаблоном, который предоставил автор той разработки? проблему я описал в его комментариях,но он молчит. Может у вас какой есть готовый шаблон, куда можно вставить отчет или как пользоваться тем.
(58) Этот шаблон не подошел?http://infostart.ru/public/84519/
Вообще-то в качестве шаблона можно использовать любой отчет построенный на основе Универсального отчета.
(59) да я скачал и этот шаблон,но тоже самое, открываю этот отчет через БП 2.0 и сразу выдается ошибка:
Может его как-то по другому нужно использовать, либо он скорее всего не предназначен для конфигурации БП 2.0
(60) В БП нет объекта Универсальный отчет.
Перед использованием шаблона необходимо Универсальный отчет добавить в отчеты в конфигурацию.
(61) я добавил в конфигурацию ваш УниверсальныйОтчет, вот теперь такая ошибка выдается:
(62) Эта ошибка в каком модуле? 🙂
(63) нет сори, запустил не тот отчет. А при открытии шаблона в основном модуле шаблона ШаблонУниверсальногоОтчетаMilkers1_02 выдается ошибка:
Ошибка выдается с первоначальном кодом и с моим кодом, который я получил через генератор.
(64) Хм. Тогда пожалуй нужен другой шаблон, который адаптирован к БП. Сейчас на вскидку ссылку не дам, нужно поискать…
Шикарно было бы , если в отчет можно бы вставлять хотя бы простые функции, например, рассчитать среднюю цену из Документа ПоступлениеТоваровиУслуг в разрезе товаров. Такое в подобном отчете вообще возможно или это очень сложно?
(66) Если добавлять визуальный редактор произвольных формул с проверкой правильности формул, то «да», достаточно сложно. Но и это возможно, было бы время…
Обожаю всякие прибамбасы, они делают жизнь 1С-ника ярче и веселее. Спасибо!
Хорошая обработка но формул не хватает
А в Управлении торговлей ред 11 (управляемое приложение) будет работать?
(71) Нет. В режиме управляемого приложения работать не будет.
Что я делаю не так?
Версия для 8.1
Источник данных — Справочник.Контрагенты
Группировка строк — Ссылка
Дополнительные поля — поле: ИНН, размещение: в отдельных колонках, положение: после группировки
Поле ИНН выводится в той же строке, в следующей колонке, но дважды
за процедуру НачатьПроверкуВерсий() надо бить по пальцам 🙂
Спамовская процедура. Она изначально подключена и вызывается исключение при попытке открыть ИЕ, т.к. на моем сервере это заблокировано. Кстати, а почему ИЕ, а не браузер по умолчанию?
(75) В меню есть пункт «Отключить проверку новых версий на infostart.ru».
(75) Потому, что платформа 1С использует IE. Справка в 1С без IE работать не будет.
(76) Лучше бы там был пункт включить проверку
(74) Это очень интересная особенность построителя отчетов при работе с представлениями данных не ссылочного типа.
Исправлено в 4.1.1.1
(79) Опять скачивать? мани тратить 🙂
(80) Нет. Можно просто использовать другую настройку отчета:
Нужно поставить галочки «Раширенная настройка» и «Выводить детальные записи». На закладке «Группировки» очистить группировки. На закладке «Дополнительные поля» добавить Ссылка и ИНН. Результат будет такой же, но без задваивания полей.
А какие изменения произошли на 30.12.2011 по ставнению с предыдущим? Что-то «История изменений» об этом умалчивает… Или она (история) больше не поддерживается? Что-либо существенное или косметические изменения? Хотелось бы узнать, прежде чем повторно скачивать…
(82) В (74) была обнаружена очень интересная особенность построителя отчетов при работе с представлениями данных не ссылочного типа. В версии 4.1.1.1 этот нюанс учтен и при описанной в (74) настройке результат будет правильным. Хотя при настройке описанной в (81) даже в версии 4.1.0.1 можно получить тот же результат.
Активно пользуюсь вашим отчетом, вот хорошо было бы сделать возможность не выводить итоги по группировкам, например, если я собираю информацию по регистрам сведений,то полученные с них данные чаще всего не нужно суммировать. Например, есть регистр сведений по учету тарифов в разрезе регионов и услуг, нужны значения самих тарифов, а сумма их, не нужная информация,можно, конечно, просто не обращать внимание на нее,но как-то коробит такой отчет.
(85) Можно использовать другую настройку:
Не использовать группировки
На закладке «Общие» установить флажки: «Выводить детальные записи», «Расширенные настройки»
На закладке «Дополнительные поля» добавить необходимые реквизиты
Вставил в УТ 10.3.14.5 (заменил стандартный УниверсальныйОтчет), платформа 1С 8.2.14.540, запускается без прав администратора.
В процессе работы выдает ошибку:
Не удалось получить доступ к Internet Explorer
{Отчет.УниверсальныйОтчет.Форма.Форма.Форма(83)}: Ошибка при вызове конструктора (COMОбъект): Завершение работы системы по расписанию уже запланировано.: Завершение работы системы по расписанию уже запланировано.
При этом завершение работы запланировано не было… Что это?… О_о
(88) Прикольно. Это наверное было установлено какое-то новое программное обеспечение, драйвер или обновление Windows и система запланировала перезагрузку для окончания установки. К 1С это прямого отношения не имеет.
(88) Исправлено сообщение в 4.1.2.1
(86) спасибо за совет. пусть будет так. есть вопрос, а как вызвать ваш отчет из внешнего отчета , чтобы использовать регистр сведений? Для регистра накоплений стандартно используется процедура:
УниверсальныйОтчет.УстановитьНачальныеНастройки(Истина);
А вот для регистраСведений я не стал пока детально разбираться как лучше вызвать, сделал пока так:
В универсальном отчете к процедуре ИсточникДанныхРегистрСведений добавил запускать ее из вне (Экспорт).
А запускаю из внешнего отчета как:
УниверсальныйОтчет.ИсточникДанныхРегистрСведений(УниверсальныйОтчет.ИмяРегистра, «СрезПоследних»);
(91) Вообще-то вызов дополнительного функционала не предусматривался. Т.е. сейчас нет «стандарта» для точки входа. Нужно будет сделать и задокументоровать.
Спасибо автору!
По описанию очень полезная штука.
Ушел осваивать.
Спасибо. Полезный инстумент.
я так понял данным отчетом или стандартным универсальным нельзя составить таблицу фио должность оклад, если оклад нужен из вкладки начисления и удержания?
Альфа-Авто: Автосервис+Автозапчасти. Редакция 4.1 (4.1.01.20)
Вылетает ошибка;
лУстановитьКолонтитулыПоУмолчанию(ТабличныйДокумент, мНазваниеОтчета, Строка(ПараметрыСеанса.ТекущийПользователь));
И вот еще
(90)
тогда что ЭТО?
{Форма.Форма.Форма(83)}: Ошибка при вызове конструктора (COMОбъект): Завершение работы системы по расписанию уже запланировано.: Завершение работы системы по расписанию уже запланировано.
(98)
По первому пункту — это привязка к стандартному в конфигурациях 1С механизму работы с пользователями… Либо надо в конфигурации завести параметр сеанса ТекущийПользователь и позаботиться ПриНачалеРаботыСистемы чтобы этот параметр был заполнен, либо в коде отчета заменить «Строка(ПараметрыСеанса.ТекущийПользователь)» на «ИмяПользователя()». Второй вариант проще.
По второму пункту — было выше (88 ). Это встроенный механизм проверхи обновлений (ИМХО — штука не нужная) пытается запустить на компьютере Internet Exploer через OLE. Вроде так…
(98) Какая версия?
(101)
Скачал заново, п.2 отпал…
Спасибо! Шустрый отчет
(102) Был ещё пункт 1? Видимо я что-то пропустил.
Это?
Такой строки в последней версии нет.
Спасибо. Работает гораздо быстрей стандартного.
Спасибо! Шустрый отчет
Очень качественный отчет. Удобно, быстро… Большое спасибо, пригодился. Автору респект
Большое спасибо, пригодился. Автору респект