<?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='\
Странно, а почему бы не использовать для полного наименования «Фирма.ЮрЛицо.ОфициальноеНаименование»? Для таких случаев этот реквизит и существует…
что делать?
сдается мне что это для другой конфигурации 1с.с.
Добавила, появляется ошибка:
БратьСуммыИзУчета = глБратьСуммыИзУчета<<?>>(Докум.ДатаДок, Докум.ДокОснование.КодОперации);
Хелп!
(1) — вопрос не ко мне а к 1С, почему они так сделали, «от греха дальше» не стал менять 🙂
(3) — а какой релиз ТиС установлен?
(5) — а какой релиз ТиС установлен? скорее всего очень древний в котором еще нет в глобальном модуле процедуры глБратьСуммыИзУчета и переменной глДатаПоПриказу147, к
// Дата вступления в силу (01.01.2008) Приказу Минфина РФ №147н от 25.12.07, определяющего новый порядок переоценки активов и обязательств в части авансов
(5) проверил на старой конфе, есть такая ошибка. Если обновлять ТиС не хочеться (невозможно), то надо закоментарить в данном отчете строки:
//Если глЕстьРеквизитШапки(«КодОперации», ВидОсн) = 1 Тогда
// БратьСуммыИзУчета = глБратьСуммыИзУчета(Докум.ДатаДок, Докум.ДокОснование.КодОперации);
//Иначе
// БратьСуммыИзУчета = глБратьСуммыИзУчета(Докум.ДатаДок);
//КонецЕсли;
//
//Если БратьСуммыИзУчета = 1 Тогда
// СкорректироватьТаблицуОснования(Докум, ТаблицаОснования, ВидОсн);
//КонецЕсли;
И будет людям счастье
Закоментил строки усё заработало,респект!
(7,8)А как закоментарить?Может подскажете?
Респект
(9) Открываешь конфигуратор, в нем открываешь файл с внешним отчетом. Переходишь в окно с ТиС, кликаешь на ругательство (ошибку), тебя переносит в конфигуратор на то менсто где ошибка. Смотришь где начинается и заканчивается код программы (7), и ставишь перед ним // (два слэша — это и есть закоментировать). В (7) код уже закоментирован.
Помогите плиз, не могу сообразить даже где косяк искать.
Выдает:
Если Докум.Фирма.ЮрЛицо.ИндивидуальныйПредприниматель = 1 Тогда
{D:BDEXTFORMSPRNFORMSSF451.ERT(819)}: Поле агрегатного объекта не обнаружено (ИндивидуальныйПредприниматель)
у меня стоит Тогровля и склад, редакция 9.2 , 1С 7.70.025
МнЧ.Номенклатура = ТаблицаОснования.Номенклатура.ПолноеНаименование + ?(Константа.ПоказыватьАртикул = 1, » » + ТаблицаОснования.Номенклатура.Артикул, «»);
{EXTFORMSPRNFORMSSF451.ERT(448)}: Поле агрегатного объекта не обнаружено (ПолноеНаименование)
Помогите плиз….И такую же ошибку как у FYL
(13) Скажите релиз ТиС. Странно на полное наименование ругается. У вас номенклатура в СФ выбрана или что?
(12) Надо указывать релиз ТиС, а не самой платформы. Для тех у кого дресний релиз ТиС (экспериментировал на 7.70.938) будет выложен отдельная внешняя печатная форма.
(12) Пробуй файл SF451_Old.zip для древних релизов ТиС
(11)Спасибо
(14) Релиз ТиС 7.70.937 .
(15) Поставил файл SF541_Old.Zip всё заработало без проблем. Огромное спасибо. Но и тут есть неровности: В случае когда продавцом выступает Индивидуальный предприниматель, расшивровка подписи все также ставиться в графу «руководитель организации». А в остальном все нормально.
(14) в ТиСе все время полное наименование определяется как
Номенклатура.ПолнНаименование
а Номенклатура.ПолноеНаименование совпадает с методом Номенклатура.ПолноеНаименование() — так делать не рекомендуется
(13) — а откуда у тебя взялось:
МнЧ.Номенклатура = ТаблицаОснования.Номенклатура.ПолноеНаименование
В моем коде МнЧ.Номенклатура = ТаблицаОснования.Номенклатура.ПолнНаименование
ты может не то подцепил? 🙂
(18) — вот прикол, еслиб не ты, я бы и не заметил, что у (13) не так Полное наименование написано 🙂
(19) это не прикол, а опыт… его, так сказать, не пропьешь! 😉
(17) я делал для версии где еще небыло у своего юрлица переменной ИндивидуальныйПредприниматель. Вот так и происходит 🙂
Всем огромное спасибо…проблема решилась….Файл SF451_Old.zip для древних релизов ТиС
Постановление Правительства № 451 от 26.05.09:
«…в строке 2 — ПОЛНОЕ И СОКРАЩЕННОЕ наименование продавца в соответствии с учредительными документами…» Скорее всего это опечатка, но постановление — есть постановление и до получения особых разъяснений Правительства РФ его необходимо соблюдать;
«…в строке 3 — полное или сокращенное наименование грузоотправителя в соответствии с учредительными документами. Если продавец и грузоотправитель одно и то же лицо, то в этой строке пишется «он же»…» В этой обработке «он же» не предусмотрено;
Сорри. Первый пункт исключить:) Только что заметил:)
(23) Даже не стал менять в стандартном отчете. Т.к. большинство бухов просит всегда писать полностью (как говорят от греха подальше). Можно конечно по просьбам трудящихся заменить, но уже вышел новый релиз ТиС с новой СФ.
Выйти то он вышел, но в нем стоит «тот же», потому Ваша обработка все равно удобнее, единственный минус — при печати сч/ф на аванс не берет номенклатуру из счета (заявки), а ставит «предварительный платеж»
Может поправите?)
Да.. и все остальное в авансовой сч/ф тож бы поправить… (кол-во, цена и т.п.) везде прочерки, кроме ставки 118/18% самого НДС и суммы
SF451_Old.zip — установил, работает на все 100%! Никаких ошибок. Все супер. Спасибо огромное!!!
(27) Поправим на днях, буду клиенту делать и сюда залью.
(26, 27) agulnara, забирай и проверяй изменил, обновил
Спасибо. Все заработало. Ура.
скачала и старое и новое обновление для с/ф ТиС-ничего не изменилось, кроме того как вместо Он же исправилось на ———((((
релиз ТиС 7.70.950
Подскажите, пожалуйста, как сделать чтобы в СФ отображалось ГТД из справочника номенклатура!!??? Ставил SF451_Old.zip — потому как старый релиз! Все работает но в графе ГТД и Страна прочерки!
(33) Страна и ГТД должны быть в СФ, если в ней стоят, то и в форме печатаются.
(32) А в верхнем правом углу надпись Приложения заканчивается на «N 283 от 26 мая 2009 г. N 451″» ?
в ГТД и Страна прочерки!!!!
А реально забиты в номенклатуре!!!!
Автор помоги!
(35-37) а в Счет фактуре есть ГТД и Страна, не в печатной форме, а в самом документе? Если в документе нет, то и в печатной форме не будет
(34) все получилось) я не знала что надо регистрировать внешн печатные формы
Огромнейшее спасибо за файл файл SF541_Old.Zip
шапку вроде менять не надо так как форма не азменилась, а лишь изменился порядок заполнения
Спасибо за информацию, подумаю. Подсоединил Ваши файлы к ТиС 958 к док Реализация (купля-продажа) При выборе СФ451 выдает ошибку:
НомерДокПечатнойФормы=глПреобразоватьНомерДок<<?>>(Докум.НомерДок, 0, 0);
{C:BASETorg2009EXTFORMSSF_451.ERT(6)}: Функция не обнаружена (глПреобразоватьНомерДок)
Если (Константа.ФормироватьСчетФактуруПоУЕвРублях.Получить(Докум.ДатаДок)=Да<<?>>)
{C:BASETorg2009EXTFORMSSF_451.ERT(81)}: Переменная не определена(Да)
По моемому 1С не доработало эти отчеты. ждем обновленную версию отчетов…
Доработало, просто читайть надо об изменении в обновлении…
Документы — Налоги -Журнал расчеета страховых взносов…
Делаем два документа:
1. ИЮНЬ — сумма уплаты за полугодие дата 30.06.10
2. Декабрь — сумма уплаты за второе полугодие дата 31.12.10
Переформировываем пачки — и «О чудо» — уплачено заполнилосЬ!!!
релиз 305.
Если уплату в первом квартале поставили не равную начисленному, то уж извольте поправлять разницу ручками. Все должно в конечном итоге идти с РСВ-1
Добавлено через 1 минуту 17 секунд
По моемому 1С не доработало эти отчеты. ждем обновленную версию отчетов…
Доработало, просто читайть надо об изменении в обновлении…
Документы — Налоги -Журнал расчеета страховых взносов — расчет страховых взносов…
Делаем два документа:
1. ИЮНЬ — сумма уплаты за полугодие дата 30.06.10
2. Декабрь — сумма уплаты за второе полугодие дата 31.12.10
Переформировываем пачки — и «О чудо» — уплачено заполнилосЬ!!!
релиз 305.
Если уплату в первом квартале поставили не равную начисленному, то уж извольте поправлять разницу ручками. Все должно в конечном итоге идти с РСВ-1
Принцип один для каждой конфы — что В ЗиК что в УСН и БУх и Комплексной есть этот документ!