<?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.6.10.6 (организация на УСН), Ваша обработка даже не открывается :-/
(4) Вы её подключили как внешнюю обработку ТЧ? Что говорит?
(5) … я разобрался, спасибо 🙂 (ошибочно подключил в доп.внешние обработки)
Протестировал на документе требование-накладная:
-обработка, не заполняет колонку «Расходы (НУ)»
-обработка, не заполняет данные по забалансовым счетам — закладка «материалы заказчика», например счету 003.02 при «давальческой переработке»
В остальном, Ваша обработка понравилась 🙂
Если не указан источник копирования — и не заполнит.
Для заполнения колонки значением воспользуйтесь обработкой, выложенной чуть выше (заполнение колонки ТЧ значением).
(7) Извините, я все перепутал :-/
http://infostart.ru/profile/41675/projects/2588/
Написанное мною в (4) и (6) относится к «Заполнение табчасти по остаткам на складе для Бухи 8.1»
Мне нравится
А у меня не подключается…((((..в чем проблема?Бухгалтерия 1.6.13.3
(10) Не знаю, я не телепат. Опишите подробнее.
(10) После подключения через Сервис — Доп.отчеты и обработки — Доп.внешние обработки табличных частей, надо заполнить по максимальности табличную часть «Принадлежность обработки по заполнению табличных частей». Хотя бы пару строк для накладной и счета
Я знаю,что обработка подключается через сервис,только строки,к какому документу надо отнести серые….и не дают указать принадлежность
Ой,я разобралась..извините….а теперь не подскажите,как пользоваться…Заранее спасибо))))
(14) над табличной частью документа есть кнопка(и), нажимаете ее(их) вызывя нужную обработку…. Ну вобщем поэкспереметируйте 🙂
Разобралась…отличная обработка)))))То,что я искала…только можно вопросик:а как можно сделать так,чтобы данные при переносе в другой документ из предыдущего удалялись?
Не работает в 1с УТ 8.1 Не переносит ТЧ из док-та переоценка товаров в рознице в док-т установка цен номенклатуры. Соответствие — по Номенклатура
(17) Извините, тестировать не на чем, у нас УТ нет. ТЧ приёмника изначально пуста?
Да, пуста
(19) ТЧ источника заполнена? В ТЧ обработки указано поле-источник и поле-приёмник, флаг «Поиск по» снят? Нажимаете «Выполнить» и не появляется ни одной строки? Тогда не знаю.
😀 Просто удовольствие работать!!!
Не правильно сопоставляет реквизиты, например: ЕдиницаИзмерения и ЕдиницаИзмеренияМест. Она сопоставляет первое найденное по типу.
Нужно немного подправить:
Если рЦелевойТип=рТип Тогда
рПодходящаяСтрока=стро;
Если СокрЛП(метарек.Имя) = СокрЛП(стро.ЦелевойИмя) Тогда
рПодходящаяСтрока=стро;
Прервать;
КонецЕсли
//Прервать // незанятая строка с подходящим типом
КонецЕсли;
и закоментировать:
//Если рПодходящаяСтрока<>Неопределено Тогда Прервать КонецЕсли;
У меня почему то дает выбрать исходным объектом, только аналогичный принимающему…(8.1.15.14 БП -2)не пойму что не так делаю….
что то не пойму. Хочу перенести ТЧ товары из Авансового отчета в Поступление товаров и услуг. И источник и приемник одного типа, то есть или из Авансового отчета в авансовый или из ПТиУ в ПТиУ…
ЗЫ. 1С 8.2 Комплексная автоматизация 1.1.6.1
Полезная вещь! Для себя докрутил только автовыбор типа документа источника, а то как-то ни с руки выбирать каждый раз тот тип документа из которого нужно скопировать ТЧ. Ну это чисто мой случай. В целом ЗАЧЕТ!
(25) asg1975, а можно получить ваш вариант с автовыбором?
Вот такая вот беда.
(27) Стоп, а в чём проблема-то? С левой стороны можно спокойно переуказать поле-источник.
(28) 1 раз — да. регулярно — не комильфо.
УТ 10.3.8.9
Пытаюсь подключить как внешнюю обработку, предварительно открыв в конфигураторе и сохранив параметры авторегистрации (скопировал с первого обычного запуска).
В диалоге подключения пишет, «Настроить авторегистрацию», отвечаю Да, заполняется список документов,
сохраняю, открываю вновь диалог создания-редактирования внешней обработки — но там список документов (список Принадлежность) — пуст.
Соответственно, никак обработку не запустить, если запускается — то выдает окно со значениями параметров авторегистрации (список документов).
(30) ничего не поняла. вызываете из документа, по кнопке «заполнить» над табчастью?
Доброе утро спасибо за обработку, очень пригодилась, для создания большого количества счетов , необходимо заполнять табличные части исходя из существующих актов на протяжении длительного периода.
(32) А ввод на основании уже не катит?
Спасибо автору!
Пригодилось
спасибо , пригодилось
Благодарю за обработку!
Хорошая обработка!
Спасибо автору… и предлагаю свою идею обработкуhttp://infostart.ru/public/22454/
Универсальная обработка заполняет выбранные реквизиты и табличные части по любому документу-основанию, в любых конфигурациях.
Новшества (18-07-2013):
1) Добавление версии обработки для платформы 1С 8.2
2) Доработка самой обработки: появилась новая функция автоматического соответствия реквизитов и табличных частей при выборе вида документа-приемника
(38) Alex1Cnic, я в таких случаях используюhttp://infostart.ru/public/70480/ — она гибче.
Отлично!!!!!!!!! Огромное Спасибо