<?php // Полная загрузка сервисных книжек, создан 2023-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='
Related Posts
- Получение логина и пароля техподдержки 1С из базы
- Класс для вывода отчета в Excel
- Счет-фактура для УПП
- Библиотека классов для создания внешней компоненты 1С на C#
- Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
- Прайс-лист с артикулом в отдельной колонке
29 Comments
-
(0) Так для 8.1 или 8.2. Если для оботх
Reply ↓
-
(0) Так для 8.1 или только 8.2? Если для обоих, добавь второй файл
Reply ↓
-
-
Под 8.2 при отключенном режиме совместимости не работает.
Не надо было её на построителе отчета делать.
Reply ↓
-
обработка очень полезная, но для своих целей пришлось доработать ее и универсализировать.
внедрил возможность обработки РС, подчиненных регистраторам.
покурив немного, решил добавить обработку Регистров накопления, Бухгалтерии, Расчета.
С регистрами накопления и бухгалтерии работа отлажена, с регистрами расчета возможно баги, ибо активно эту тему не использовал.
прилагаю свой вариант на суд общественности:
Reply ↓
-
(5) tiwolf, спасибо, скачал, но пока не пробовал, т.к. обычно для изменения регистров накопления и прочих приходится писать обработки с не прямолинейным алгоритмом
Reply ↓
-
(5) tiwolf, скачала Вашу обработку. Идея хороша, но вот отбор по регистратору слишком жесткий(((
Пример: мне надо найти все записи регистра Плановые начисления сотрудников организаций в ЗУП, сделанные любыми возможными регистраторами, которые сделали неправильные записи по измерению ВидРасчетаИзмерение и заменить эти значения. Попыталась использовать обработку, найти их все сразу я могу, а заменить не получается.
Reply ↓
-
спасибо ludai за ответ.
на самом деле ничего жесткого в отборе по регистратору нет.
а описанный вами момент я проанализировал и устранил некорректность, которая состояла в том, что в одном месте использовал неправильное имя переменной.
почему-то при использовании обработки в своей практике этот момент не обнаружился, видимо моё использование было более узким ))
в любом случае выражаю благодарность за то, что подтолкнули к этому необходимому исправлению.
собственно выкладываю исправленную версию на 8.1 и версию для 8.2, так как с недавних пор перешли на новую платформу, чего и вам желаем.
Reply ↓
-
добавлю, что изменение подчиненных регистратору регистров предполагается производить ИСКЛЮЧИТЕЛЬНО в режиме отбора по регистратору с видом сравнения «РАВНО»… хотя при желании можно достучаться до поля ввода вида сравнения и поменять «РАВНО» на что — нибудь другое, но на это обработка не рассчитывалась и этот момент не настраивался… так что если у кого-то возникнет желание доработать и этот момент, то флаг вам в руки, я не против 🙂
Reply ↓
-
Скачал с
http://gmixdev.ru последнюю версию в УТ10.3 прекрасно работает.
(8) tiwolf, А почему отдельно не опубликовать? Тоже смотрел , не плохое продолжение данной разработки!
Reply ↓
-
(10) отдельно публиковать не вижу необходимости. скорее это допиливание чужой разработки. хотя и очень объёмное
Reply ↓
-
В самописной конфиге 8.2 сругалось на «ЦветаСтиля.ТекстВторостепеннойНадписи». Таковой отсутствует.
(Если это будет полезно для допиливания универсальности.)
Reply ↓
-
(11) tiwolf, если нетрудно , подскажите, как можно отобрать записи в регистре расчета , в которых сотрудник не соответствует физ лицу (так перенеслось из 77 , что в записи сотрудник Иванов , а физ лицо Петров)и если это возможно вашей обработкой, то еще и исправить : взять физ лицо , указанное в сотруднике.
Reply ↓
-
Спасибо! как раз то что искал. часто пользовался групповой обработкой справочников и документов, а обработки для регистров не было и давно искал.
Reply ↓
-
Плюсанул. Вещь нужная. Почему-то не могу изменить Период в периодическом зависимом регистре сведений. Его вообще можно изменить этой обработкой? Если да, то как? Спасибо!
Reply ↓
-
Отлично все гениальное просто!
Reply ↓
-
Ставлю минус.
Идея использовать для фильтрации построитель не верна!
Построитель не выбирает для фильтрации ресурсы и реквизиты регистра, а только измерения.
А кто сказал что отфильтровывать записи нужно только по измерениям?
Reply ↓
-
А кто сказал что отфильтровывать записи нужно только по измерениям?
Энто точно, присоединюсь к сказанному! а так конечной плюс!
Reply ↓
-
Ваша обработка может изменить Контактную информацию? Надо автоматизировать изменение адреса у большой группы сотрудников, неправильно введен населенный пункт, необходимо у каждого сотрудника изменить 3 адреса. Видела много подобных обработок, но ни одна не редактирует Контактную информацию.
Reply ↓
-
спасибо за обработку!
Reply ↓
-
Спасибо, обработка облегчила жизнь
Reply ↓
-
(19) ГердаКай, не полностью понятно что вы собираетесь менять в адресе, но чисто гипотетически (телепатически) предположу, что не подойдёт. Скорее всего необходимо добавить функцию выполнения произвольного кода для обработки ПРЕДСТАВЛЕНИЯ адреса.
Поле хранения города вы заменить полностью сможете без проблем (один текст на другой), но вот заменить представление не получится, надо будет немного доработать.
Reply ↓
-
Спасибо, скачал для 8.1
Reply ↓
-
Хорошая обработка, у меня заработала — я про ту что на 8.2 🙂
Reply ↓
-
так что автору респект и уважуха..
Reply ↓
-
Пытаюсь изменить записи регистра сведений.
Отбор установлен по периоду.
«Показать результат отбора» — показывает правильно.
По «Выполнить» — ошибка:
{Форма.Форма.Форма(323)}: Поле объекта не обнаружено (Пометка_Период)
Если СтрокаТаблицы[«Пометка_» + Эл_отбора.ПутьКДанным] = Истина Тогда//Эл_отбора.ПутьКДанным=КолонкаРегистра Тогда
Значения в регистре не меняются.
Попробовал удаление с тем-же отбором — удаляет нормально.
Использую последнюю версию обработки.для 8.2
Reply ↓
-
(26) Все кто нашел мою обработку, советую воспользоваться реализацией автора
gmix
Когда-то у меня была срочная потребность в большом количестве изменений регистров сведений, на тот момент нашел чуть ли не единственную обработку от Gmix, но она умела изменять только один реквизит, что меня не устраивало. Я её немного модифицировал и выложил с согласия автора, т.к. аналогов тогда практически не встретил. Автор в итоге доработал свою обработку примерно с этим же функционалом, но в более «красивом» исполнении.
Работает только на обычных формах!
Reply ↓
-
Действительно, значения в регистре не меняются…
Reply ↓
-
Для УФ на 8.3 не работает?
Reply ↓
Leave a Comment
Ваш адрес email не будет опубликован. Обязательные поля помечены *
Обработка «Просмотр технологического журнала» (ИТС, 1С 8.3) | оглавление | Обработка «История выполнения фоновых заданий в виде диаграмм» (Сертаков В.С., 1С 8.3) |
2021-02-04T12:27:19+00:00
Источник ИТС
Описание
Внешняя обработка «Групповое изменение реквизитов» позволяет массово изменять реквизиты и табличные части в выбранных справочниках и документах.
Помимо изменения реквизитов, имеется возможность изменения дополнительных реквизитов и сведений, если они есть у объектов.
Для администратора доступна возможность выполнять произвольный алгоритм на встроенном языке для выбранной группы объектов. Это позволяет оперативно выполнять «мелкий ремонт» для исправления некорректных данных в программе вместо трудоемкой разработки внешних обработок и конфигурирования.
Обработка предназначена для разработчиков и администраторов данных.
Используем уже встроенную версию обработки
Если у вас типовая конфигурация (например, «Бухгалтерия предприятия»), то обработка «Групповое изменение реквизитов» уже встроена в неё, ничего скачивать не нужно.
Открываем меню «Функции для технического специалиста…» (у вас нет этого пункта?):
В открывшемся окне раскрываем раздел «Обработки» (либо используем поиск) и выбираем пункт «Групповое изменение реквизитов»:
Готово.
Скачиваем с ИТС
Этот вариант следует использовать только в том случае, если у вас не типовая конфигурация и в ней нет встроенной обработки «Групповое изменение реквизитов».
Скачать обработку «Групповое изменение реквизитов» для 1С 8.3
Я скачал обработку, как мне её открыть в 1C?
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Обработка «Просмотр технологического журнала» (ИТС, 1С 8.3) | оглавление | Обработка «История выполнения фоновых заданий в виде диаграмм» (Сертаков В.С., 1С 8.3) |
Содержание
|
||
Назначение обработки «Групповое изменение реквизитов»Обработка предназначена для изменения значений реквизитов элементов системы, а также дополнительных реквизитов и сведений. Групповое изменение значений реквизитов предусмотрено двумя вариантами:
|
||
Групповое изменение значений реквизитов в списке выбранных элементов с помощью кнопки «Изменить выделенные» |
||
В случае изменения или заполнения незаполненных реквизитов необходимо выделить несколько элементов в списке документов (например, Поступление на расчетный счет) кнопкой [Ctrl – левая кнопка мыши] и выбрать функцию «Изменить выделенные» нажатием правой кнопки мыши. |
||
В открывшемся окне «Изменение выделенных элементов» на соответствующей закладке (например, Расшифровка платежа) необходимо корректируемым реквизитам установить признак «Изменить» (например, Статья движения денежных средств) и в поле «Новое значение» выбрать значение реквизита.
|
||
Для выполнения процедуры изменения реквизитов необходимо нажать кнопку «Изменить реквизиты». При успешном выполнении появляется сообщение:
|
||
Обратите внимание! Дополнительно документы проводить не требуется, аналитика заполнена |
Групповое изменение значений реквизитов с помощью обработки «Групповое изменение реквизитов» |
||
Обработка «Групповое изменение реквизитов» позволяет выбрать элемент для изменения из предлагаемого перечня справочников или вида документов (например, Номенклатура) | ||
По ссылке «Все элементы» можно задать условия отбора. |
||
|
||
В табличной части «Изменяемые реквизиты» обработки отображается весь перечень реквизитов выбранного элемента. Корректируемым реквизитам необходимо установить признак «Изменить» (например, % НДС) и в поле «Новое значение» выбрать значение реквизита.
|
||
Для выполнения процедуры изменения реквизитов необходимо нажать кнопку «Изменить реквизиты». При успешном выполнении появляется сообщение: |
||
Теперь реквизит «% НДС» для элементов номенклатуры с видом номенклатуры «Материалы» заполнен |
||
Если есть вопросы – обращайтесь! | ||
Елена МУРАВЬЕВА, консультант-аналитик 1С компании «Кодерлайн» |