<?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='\
7.7 уже неактуальна
в ларьках ПС может и неактуально менять, а на практике и счета добавляются, и аналитика меняется
(2) vano-ekt,
А кто мешает в пользовательском режиме добавить счета в ПС по крайней мере в бухгалтерии 3
это реализованно
(3) НайтиПоКоду мешает
(4) vano-ekt, Согласитесь лучше искать счет по коду, нежели потом мучаться с обновлением ПС (особенно если речь идет о субконто).
Или же есть другие надежные варианты:
1. Счет в явном виде указывается пользователем в какой-либо форме (например в форме документа, либо в форме карточки элемента справочника).
2. После создания счета в пользовательском режиме — получить его идентификатор и использовать его в алгоритмах.
и получаем конфигурацию, зависимую от данных…
подключаются к работе 5 новых разработчиков, у них доступ только к хранилищу,…
и дико удивляются присутствию каких-то гуидов в коде 🙂
На самом деле не вижу особых проблем в добавлении предопределенных данных. Это ничем не хуже, чем обращения к элементам по кодам или схемы хранения ссылок на элементы в регистрах.
Не вижу ничего суперкриминального в добавлении счетов в план. Вот менять уже существующие нужно очень осторожно, да, можно нарваться на скандал, если они задействованы в функционале.
Изменять функционал существующих документов, тоже да, стараюсь избегать. Добавить новый документ (не ПКО или РКО, конечно), считаю допустимым, особенно в специализированных плагинах.
спасибо за рекомендации
Открыл америку через форточку..
Каша
Бывают еще особо умные бухгалтеры, которые настаивают на такой реализации. Во франчевую бытность встречал таких.
Может быть, автор имеет в виду что возможно появление в будущем таких же стандартных предопределенных элементов (счетов, субконто) и тут точно будут всем известные проблемы.
Советы «как нужно хорошо делать» бесполезны. Всегда приходится разбираться с тем что есть и то как есть.
ну есть у людей деньги им и продадут. А дальше опять юмор: продадут одни, внедряют другие, исправляют третьи.
В 1С Предприятие: 8.3.6 будет возможность использования расширений, ИМХО вот их и нужно использовать в подобных случаях. Подробнее можно прочитать вот здесь —http://v8.1c.ru/o7/201410ext/index.htm [Заметки из зазеркалья]
(14) sky.xn, блин а прикольно если конечно работать механизм будет нормально
И Еще почему я до сих пор считаю что ПС предопределенный менять незя
1. Был случай когда в поставке поменялся предопределенный ПС и после обновления без модификаций проводки на части документов банально слетели, записи есть суммы и количество тоже а вот субконто ни одного.
2. Сравнивать предопределенные планы счетов рабочую и поставку геморойно.
ЗЫ: Если кто то скажет механизм как это сделать, без банального сравнения глазками и ручками буду премного благодарен.
(12) Armando, постараться доказать бухам что так делать не комильфо. Хотя это бывает сложнее чем ….
(15) надеемся на лучшее, в одинэсине такого механизма с самого начала не хватало
(13) kostyaomsk, Фактически вся работа программиста 1с — это изменение и доработка типовых конфигураций. В основном это не глобальные задания, а мелкие и связанные с управленческим учетом. Простые правила которые я усвоил для себя: а) создавать новые объекты и реквизиты с префиксом; б) можно не изменять модуль объекта, а использовать подписку на событие; в) создавать новые общие модули; г) и если приходиться менять формы документов — то лучше ее скопировать и назначить основной и вносить изменения в ней.
(1) PiccaHut001, Пока актуальна. Работают на ней (на 77) и особенно с сильно измененным функционалом.
(2) vano-ekt, а вот и зря. план счетов лучше не менять, если и добавлять, то только забаланс. либо делать нечто на регистрах сведений.
Не соглашусь с автором. Не вижу ничего плохого в добавлении предопределённых данных и своих документов.
с = 0;
Пока с < 1000 Цикл
с = с + 1;
КонецЦикла;
Так кодить можно, чтобы отличать собственный говнокод от кода 1с (для тех, кто не ставит комментарии очень помогает).
Посмотрите типовые, там вы такого кода не найдёте.
Вообще цикл «Пока» используется для какого-то хитрого инкремента (или условия), например, такого:
Для случая указанного в примере, конечно нужно использовать «Для». Например:
Свести к минимуму обмены и не вести вместе бух. и упр. учет — несколько противоречивые требования.
Однозначно не стоит вести отдельно упр. учет если основная база на УПП.
Про «так кодить нельзя» вообще не понял, что написано.
Когда на крупном предприятии план счетов раздут еще на 50-70 счетов и субсчетов, выгоднее их добавить через пользовательский режим, иначе каждый раз при обновлении плана счетов можно нарваться на неприятности
(18) lesv, г) и если приходиться менять формы документов — то лучше ее скопировать и назначить основной и вносить изменения в ней.
ИМХО но в данном случае есть подводный камень, если долго не обновляешь конфу и нужно обновить через нное кол-во релизов ио как правило основная форма может поменяться разительно, вот тогда со скопированной формой приходится мудрить 🙁
(22) iodine, я имел ввиду просто разделители между операторами, переменными и функциями 🙂
что это такое? подписка на события?
пока с
чего это кусок, где даже КонецЦикла не прописан? или это у меня так отображается?
(21) fish249,
ИМХО Предопределенные данные можно в узком случае, например справочники, так как их проверить проще, а вот в ПС потом сравнивать где что изменилось целая эпопея там же еще есть субконто и много др. параметров
добавление документов можно когда они некоим боком не участвуют в стандартном механизме учета
(28) mikhailovaew,
это чет движок сайта глючит 🙁
(27) mikhailovaew,
да подписка на события… с C++ перемешались термины 🙂
(7) ekaruk,
Зря.
1. Меняется конфа.
2. Могут быть конфликты (особенно актуально при подобном изменении Плана счетов — счета-то мы все обзываем одинаково, а 1С возьми и тоже введи этот счет в предопределенные).
Самый надежный и верный вариант — хранение ссылок на объекты в справочнике (своем или подходящем типовом). Вот там — делай предопределенные какие хочешь.
(8) peterxx,
Предопределенных?
(14) sky.xn,
Вот когда сделают, тогджа и посмотрим — насколько это будет работоспособно.
А пока все эти заметки — отражение самих себя.
(18) lesv,
У вас есть подписки на каждое событие? Открытие формы, пожалуйста.
(22) iodine,
В ненормальной реализации 1С «Пока … Цикл» можно безбоязненно использовать только в одном случае:
Пока Истина/Ложь Цикл
…
КонецЦикла
с проверкой внутри от зацикливания (внутри цикла размещаем счетчик итераций и принудительное прерывание, если более 1000…1 млн итераций).
Абсолютно согласна с lesv, практика именно это и подтверждает.
(32) Vo1C,
сделать из проф версии, корп или включить ведение по обособленным можно было , но я устроился в эту контору в конце 13 а они за весь 13 год уже так вели учет, поэтому разбираться в данном случае с нормальной реализацией обособок решил нет смылсла, а вот в переход с 14-15 год хочу обновить ее, обрезать базу и наконец то засунуть все документы в нормальный учет.
и еще очень им нужны Авизо а в проф их нет 🙁
Прочитал статью, а в голове фраза из анегдота: «А шо делать?» Работа наша такая: поправлять код типовых конфигураций, адаптировать их к конкретному пользователю (фирме). Конечно, если есть возможность зделать это при помощи внешних обработок/отчетов, характеристик, свойств, доп. реквизитов то безусловно надо использовать возможности «типовых». (При обновлениях позже не раз скажеш «Какой я молодец!») Но, к сожалению, чаще возможностей «типовых» недостаточно и приходится писать-дописывать-переделывать. И не всё так страшно. К счастью механизм обновления достаточно развит и советую пользоваться им в полную. Про максимальное использование коментариев поддерживаю на все 100 — затраченые лишних 5 мин позже сэкономит уйму времени.
(18) lesv, совершенно согласен с Вами насчет простых правил
Но это если нужно менять типовую конфу которую не трогали. А на деле, как правило, с криками «помогите» или с воплями «мне щас надо» конфигурация-франкенштейн. Ну учились люди. Пока сам пару-тройку не изгадишь в процессе «обучения» на программиста 1С не научишься.
Главный плюс от метода «г» — берем и копируем стандартный документ со всеми формами-макетами (или уже накройняк форму) мы сохраняем весь функционал старого документа со всеми его обработчиками и точно не вредим конфигурации 1С. Ее проще обновлять. Потом только нужно добавить в журналы (можно и журнал скопировать), интерфейсы, если БП то в субконто, планы видов характеристик, отдельно придется в новых общих модулях прописать подписку на события и если нужно сделать вставки (увы) в регламентные процедуры и процедуры общих модулей. Например если это анализ взаиморасчетов. Вот тут и будут каждый раз проблемы и программист должен об этом знать и никому не говорить 🙂 а то без работы останется 🙂
(38) Авизо придется «сдернуть» из Корпа. Со всеми вытекающими ссылками… А насчет регулярного обновления «нетиповых» конфигураций — это в «ИжТиСи»
(40) kostyaomsk, Вот как раз на такого франкенштейна и нарвался 🙂
(41) Vo1C, а мне денег на ИЖ некто не даст, я работаю на конечного работодателя не франч :(.
и все таки мне кажется проще обновить проф на комп и доплатить там 10-15 тр за конфу, для конторы которая в штате имеет программиста не такие и большие денежки
(37) gigagr,
кто это? И с чем вы согласны?
(38)
Надеюсь, вы понимаете, о чем говорите. Именно о термине «обрезать».
(39) DAnry,
Да что вы говорите? Хоть раз пробовали дважды измененные обновить? Или изменения на формах?
(40) kostyaomsk,
Впечатление, что никто тут особо не обновлял ничего.
Давайте любой свой пункт.
Есть масса и плюсов, и минусов, и у каждого момента и способа, но в общем и в целом — с обновлением/внесением изменений в 1С хреново.
(41) Vo1C,
Вы сами-то пользовались? Отличия представляете надстройки ИЖТС от типового обновления?
(32) (38) (42) до вас никак не дойдет еще, что запрет вести обособленные подразделения (да и вообще — все программные запреты в типовых конфах 1С) сделаны не просто так? Что заремарить/подписать вы можете что угодно — но все остальные механизмы конфы ориентированы на определенный учет и конкретные данные?
(32) Vo1C, как думаете, что будет — когда ожидается в переменной один объект, а «приплывет» — десяток? И ошибка с криками alarm случится — это еще в лучшем случае?
тс озвучил банальные истины, которые любой спец соблюдает и чтит.
истины далеко не все.
Главное правило всех этих истин — не позволять открывать конфигуратор профану.
(46) THXO, Не спорю, но натыкаюсь не на одну уже конфу такого плана где-то меньше накосячено(возможно не по незнанию, а из за требований бухов или лени форсмажора и пр.) , где-то больше, но если даже одни начинающий 1С программист прочитает и что-то в мозгах отложится считаю что статься не зря, ее конечно еще бы дополнить хотя бы ссылками по оптимизации запросов, оптимизации кода и пр…
(45) AlexO, не приплывает, люди пользуются. Вопрос топика не теоретический, а чисто прикладной — как сделать учет денег в обособленных подразделениях. Я рассказал. Работает. Проводки, формы, отчеты — все людей устраивает. Сделал так, как описал. Обновляю сравнением — снимаю галку у одной константы, и все. Не надо КОРП, не надо ИТС КОРП.
По поводу ИжТиСи — сам не сталкивался, но их предложение, вебинары и методику изучил. В чем Ваши трудности — я не понял, а понты не интересны.
тема не раскрыта…