<?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) В условии основная фишка: его можно безболезненно забыть… 😀
Да и во время отладки он не мешается…
(0) Я обычно добавляю комментарий // УБРАТЬ!!!!!!
Потом ищу по восклицательным знакам.
(1) Странное слово «кодинг». Созвучно словам модинг, гопинг и маркетинг.
(2) И потом искать свой код тутhttp://govnokod.ru/1c
Его туда выложат настоящие говнокодеры 🙂
Да и я обычно пишу «ПустаяСсылка()»… 😉
(5) Честно сказать, здесь написал, что в голову первое пришло… На самом деле, что именно будет там — не важно… Главное — чтобы это что-то было нужного типа… 😉
Сторно понравилось 🙂
(8) с бухгалтерами 6 лет пообщаешься — и кошелёк свой в разрезе статей ДДС начнёшь видеть… 😀
(9) Вот потому и понравилось. Имею 1С Бухгалтерию 17-й год 😀
А с составным типом ктонить победил также красиво?
Да. Вот его безобидность, если забыли убрать, это безусловно прекрасно. Спасибо за идею!
(11) можно и с составным… кто мешает? 🙂
Динамически формируемый тип, как правило не требуется, а используется на базе типа элемента метаданных, а для этого присвойте переменной в этом блоке значение этого элемента…
На пример на базе конф. «Бухгалтерия предприятия 8 ред. 1.6» будет так:
Если Ложь Тогда
Основание = Документы.СчетФактураВыданный.СоздатьДокумент().ДокументОснование;
КонецЕсли;
все реквизиты документов составного типа реквизита ДокументОснование будут доступны в контекстной подсказке… минус, что одинаковые будут дублироваться… но это уже издержки производства…
(0) Тож так делаю, только без Если Ложь Тогда… Потом просто убиваю явное определение.
ПС, Что-то подсказывает, что прочитавшие это пользователи Опенконфа и Телепата вытерли грустную слезу о потугах восьмерочников…
(0) Бывшие пользователи и соучастники Опенконфа и его скриптов/плагинов постоянно матюгаются при написании кода в 1С 8 🙂
(14) честно скажу, не пользовался ни тем, ни другим… знакомство с миром 1С начал с V8 с самых её первых релизов… и наслушался критики в её сторону — вагон и две телеги… так что привычно… 😉
тем не менее не совсем понимаю, чем могут помочь надстройки конфигуратора при обращении к нетипизированному параметру? ведь такое обращение может быть как в событии (где ещё можно выйти на тип передаваемого параметра), так и в процедуре общего модуля… а «парсить» все обращения к этой процедуре — по меньшей мере неблагодарное занятие…
(15) на вкус и цвет… все фломастеры одинаковые… 😀
может и 8.х станет расширяемой когда-нибудь…
«Если Ложь Тогда» — Красота 😀
(19) Уважаемый Александр, если Вы недостаточно внимательно прочитали комментарии, специально для Вас повторю: 8-й платформой я занимаюсь более 6-ти лет. Программированием — более 15-ти лет. Перед тем, как размещать эту статью, поиском прошелся по Инфостарту и нечего на тему работы с контекстной подсказкой не нашёл, поэтому вашу фразу «из-за таких баянистов» откровенно не понял.
Статья была написана как раз-таки для начинающих и чуть более того программистов 1С. И навеяна очередным объяснением своим подопечным таких вот «азов», потому что они либо продолжают терять время, набирая километровые наименования реквизитов, либо зовут помочь разобраться, почему у них код не работает, т.к. забыли убрать принудительное назначение типа в «безблочной» конструкции.
В этой своих статьях я не претендую на лавры изобретателя чего-то сверхэкстраординарного. Поэтому и написал статью в такой шутливой форме.
Просто есть вещи, которые очень просты, но не всегда очевидны. Вы же тоже пузырьковую сортировку не с яслей знаете, хотя, согласитесь, что что-либо элементарнее придумать просто трудно…
Уважайте, пожалуйста, своих коллег по профессии, а то Вы тут всех второгодок в «тормоза» записали своей фразой про «нетормозящую голову».
Если Вы сомневаетесь в моей компетенции почитайте мои статьи на более серьёзные темы… Напримерhttp://infostart.ru/public/65456/ [Пардон, не заметил Ваш плюсик, на этой статье]
И, если Вас, конечно, это не затруднит, объясните что именно «отрезвляющее» Вы внесли своим постом в эту тему? Раз десять перечитал Ваше сообщение и так и не понял, Вы призываете не пользоваться такими уловками?
(20) Боян — в том смысле, что данная вещь давно известна…А не то, что упоминалась на инфостарте… Если ограничиваться инфостартом, то можно большую часть мисты опубликовать.
Во-вторых, я не сомневался в Вашей компетенции. Мой минус не за саму статью, а частично за её наличие, и частично за удивительно большое число плюсов от опытных программистов. По поводу наличия… Тут уже давно был разговор о том, что «программисты 1с» не знают элементарных основ написания кода. Причем не отдельных приемов, а систематическое незнание. Поэтому было бы лучше, на мой взгляд, отсылать пользователей «в сад», т.е. к книгам по основам, сайтам для изучающих (вроде того же delphikingdom), где не зацикливаются на синтаксисе, а рассматривают в том числе приемы и алгоритмы. Меня очень сильно раздражает мнение многих программистов в других средах, которые считают, что те, кто занимается 1с ну ни как не программисты. Часто это обосновано — доля носильщиков ИТС гордо именующих себя программистами 1с очень велика. Сам был свидетелем, когда человек, окончивший институт по соответствующей специальности не смог открыть 7.7 в режиме конфигуратора — он просто не знал где и что это…
Так вот, такие вот статьи вредны тем, что способствуют такой ситуации, когда новичок не чувствует потребности не то, чтобы прочитать книжку по основам программирования, но даже пройти курсы 1с и сдать на сертификат… Сажают человека за руль автомобиля, когда он ещё ходить не умеет… Научится ездить, а когда машина сломается не сможет сдвинуться с места, или покалечится…
Именно поэтому, я приветствую дискуссию по этому поводу, но отрицательно отношусь к активному плюсованию статьи.
Вот… Щас нараздаю плюсы за комменты.
Ну anig99 ты и выдaл)))))Дело в том что другие программисты и правильно что не считают тех кто занимается 1с программистами.Нуралиев правильно ответил для PC Magazine вот кусок статьи
«Теперь попробуем ответить на второй вопрос — о профессии разработчика приложений на базе платформы «1С:Предприятие». Все-таки, по нашему мнению, специалиста любой профессии характеризует не только инструмент, которым он пользуется, но и круг задач, которые он умеет решать. Нам кажется, лучше использовать не термин «программист», а именно термин «разработчик». Создание приложений на «1С:Предприятии» не является написанием программы. Написание кода — только часть работы. Это именно разработка приложения, строящаяся, как мы говорили выше, начиная от структуры прикладных объектов, описания их взаимосвязи, продумывания бизнес-процессов. То есть разработчиков на «1С:Предприятии» характеризует не знание синтаксиса встроенного языка. Профессиональные разработчики на «1С:Предприятии» — специалисты по разработке бизнес-приложений. Само по себе описание структуры данных в «1С:Предприятии», написание программы на встроенном языке, рисование форм не является сложным и осваивается на некотором уровне, достаточном для решения несложных задач, обычно за 2-3 недели. Но разработка бизнес-приложений — это весьма сложная задача, не менее сложная, чем создание, например, средств разработки, САПР и т. д.»
(4) Хм вот всегда удивлялся пусть хоть весь мой код будет там . НО именно таким кодом большенство делает БЫСТРО И ДЕШЕВО и это работатет.
А если я сижу и пишу для себя для души. то я каждую строчку откоомментирую
Главное правило (потраченное время (еффективно*) = вознаграждение* оставшееся свободное время). тоесть если я портатил 1 час то останется 15 часов (примерно 24 -1 — 9(сон)). Так вот в идеале потраченное время стремимся свести к минимуму а вознаграждение к максимуму и достигается это именно забиванием на эргономичнось красоту и простоту и справку и камменты.
Да и извиняюсь Потом или вы или иной программист заработатет на ОПТИМИЗАЦИИ!!!
*еффективно это то время что оплачивается лично Вам. Тут уже поднималась статья на тему времени и его использования.
(21) Ну многие всетаки верно не считают 1С — ПРОГРАММИСТАМИ! Потому как все таки нет возможности работы с базами данных напрямую (записи) штатными средствами (да понятно что так меньше сломают но все же).
Потому как нет возможности штатными средствами чистить память за собой . Да много чено нету. Но зато 1С предоставила возможность зарабатывать больше большинства сишников дельфистов и иных. Да прогеры SAP ов больше получают но их меньше и им сложнее. А по поводу статьи… Ну вот чесно она же привлекла внимание? Вы потратили время написав комментарий. Но количество плюсов указывает на то что как минимум 22 человека получили ПОЛЕЗНУЮ информацию. Так что минус наверно стоило адресовать тем кто не хочет изучать азы, а автор статьи все таки донес крупицу истины.
лично я называя себя программистом 1С (8 лет стажа) в дуже понимаю что умение писать код и умение ПИСАТЬ КРАСИВЫЙ код — это две большие разницы.
А в большинстве когда ищут программиста ищут не того кто красиво пишет а того кто сделает меньше ошибок принесет, больше пользы, и не будет требовать доплатить за откамментированный код. И что не маловажно программист должен не только оптимизировать и «кирпичизировать»* программу а так же снизить расходы на её эксплуатацию.
* кирпичизировать — сделать максимально простую и непотопляемую систему с максимально простым в понимании и изучении интерфейсом.
P.S. Просьба авторов постов не кипятится отвечаю не ВАМ лично а не темы вами затронутые. Просто добавив немного буковок в базу сайта.
(23) Блин надо почаще спать все таки… 😮 АпШибок море.
вобщем вспоминаем статью английских учены про то что если перепутать буквы то прочесть можно. 😀
(22) Вот точно я то вспоминал кто же это сказал….
Да и вообще учитывая что мы то хотьчто-то создаем. А посмотрите на бухгалтеров они то бедные кроме кучи отчетов и пачек архивной бумаги ничего не создают… Спросите их что они создали? А многие директора кроме создания перемещения кадров по компаниям и акустических колебаний на собраниях вообще нихрена не создали но ОНИ получают больше и руководят ВАМИ. Так что радость создания ЛЮБОГО кода это уже путь к большому и светлому чувству Я _ АРРЕНИТЕЛЬНЫЙ ПРОГРАММИСТ СОЗДАВШИЙ ДОХРЕНА ПРОГРАММ 😀 .
P.S. но кроме этого дерево- дом, дерево-сын, дерево-дуб все таки надобы выполнить 😀
(0) Отрицать полезные вещи трудно, поэтому поддержу anig99. Писать красочные статьи с картинками для студентов наверное надо, но вот данная тема… хм… есть что-то тошнотворное в этом… вспоминаются прописи в первом классе школы…
Спасибо. Знал, но почитать было весело 🙂
(19) Я поставил плюс не за то, что написано или открыто что-то супер.
Мне лично это было известно и использование этой фичи для меня естественно, я даже не думал, что другим будет полезно.
Но после прочтения сабжа лично я считаю, что подобные публикации как раз и помогают программистам/разработчикам совершенствовать свой профессионализм.
За это и плюсанул.
(23) В «красивом» коде как раз и ошибок меньше хотя бы за счет того, что его читать/изучать легче, а значит, и ошибки лучше видны 🙂
И как раз человек, умеющий писать «красивый» код, сложные вещи напишет реально быстрее и точнее, чем чел, не умеющий такого писать.
А по поводу противопоставления разработчиков и программистов — ИМХО Нуралиев просто применил психологический прием для повышения самооценки работников нашей отрасли и все.
Лично я не отделяю разработку от программирования.
Программирование включает в себя и разработку, и чистое кодирование, и многое другое.
А сравнивать/разделять программистов и разработчиков ИМХО равносильно поведению простых юзеров, которых всех ИТ-ников «обзывают» программистами, независимо от роли, знаний, умений и т.д. 🙂 — т.е. это такой крайне низкий уровень знаний и умений.
И вообще мало в среде 1С публикаций, направленных на повышение уровня разработки как в кодировании, так и в разработке архитектуры бизнес-решений.
Например, досталась мне тут одна база 77 — это пример некачественной разработки архитектуры решенияhttp://www.1cpp.ru/forum/YaBB.pl?num=1265121403/15
В одном регистре куча измерений, более 8, из них часть числовых — ВУ_Метраж, ВУ_Площадь, ВУ_Ширина и т.д.
В результате этого решения на реальной базе ОЧЕНЬ медленно открывается период ТА, хотя сама база очень маленькая.
(0) Насчет » //ПОТОМ УДАЛИТЬ!!!»
ИМХО проще и привычнее написать что-то типа
//TODO_УДАЛИТЬ код после разработки
и выполнять поиск по TODO
В более удобных средах разработки давным-давно есть TODO-списки, формируемые средой автоматом
ЗЫ лично я давно, еще со времен 77, юзаю следущие варианты дополнительно к простому TODO :
TODO_МЕТАДАННОЕ — в комменте описываю изменения, который я вносил в метаданные типовой конфы, например, движения по доп.регистрам
TODO_ФОРМА
TODO_ИНТЕРФЕЙС
TODO_ПРАВА
и т.д.
очень удобно при анализе изменений в типовых конфах
лично как по мне, мне в голову даже мысль об этом не приходила… а зачем? лучше немного потренировать мозги на развитие памяти… а вот забывать удалять такие кусочки кода всеж не следует, все же интерпритатор их отрабатывает 🙂
Завел новую публикациюПовышение удобства разработки в 1С 8
Сослался в своей публикации на сабж, т.к. считаю очень полезным.
(22) В данном высказывании Нуралиев ставить 1совцев ВЫШЕ программистов. А я говорю о тех, кто не может поставить рядом словосочетания «1с Предприятие» и «программирование».
(23) Душелов, Гилев, Абадонна… Они находят возможность программировать вполную для 1с… Еще можно вспомнить 1с++, ei…1с — высокоуровневый язык программирования, поэтому много ему напрямую недоступно. В том же самом Delphi работа с базами данных происходит через BDE и т.д — в 1с можно работать с SQL посредством драйвера совершенно спокойно… А в С++ нельзя нормально работать с массивами…
(29) Лучше бы потратили время на другое — например на подробную статью о тонкостях работы запросов…
(35) Я еще раз повторюсь. Я сказал что ПУСТЬ ХОТЬ ВЕСЬ КОД ТАМ бУДЕТ … И так же написал про то что я стремлюсь меньше работать и больше зарабатывать. Просто показатель эффективности работы не красота кода или его мега качество а желание клиента за него платить.
И если я пишу что-то то каменты описания и максимум универсальности стараюсь выжать. Уговорить меня (если оплата не по часам) добавить лишний реквизит может только ПОЛНОЕ отсутсвие других вариантов (при этом я делаю копию «до» «после» и описываю изменения). Но всегда стараюсь изучить что-то новое даже напрямую не связанную с 1С. И если кто-то что-то выкладывает чего не было раньше на ресурсе — Я ЗА. И Я ЗА КРАСИВЫЙ КОД если конечно средства не превышают задач цели.
Да и по поводу Нуралиева он ОБЯЗАН продвигать свой продукт. Так что пусть хоть религию 1С проповедует и пострижение в разработчики проводит ето дело каждого. Но в 1С действительно своя специфика… Как пример текущая хотелка клиента привязывать возврат от покупателя к одной накладной (а товар в возврате из накладных за месяц) И что делать основание — неправильно.
Но учитывая особенности учета в компании необходимо. Как програмисту мне это сделать 5 минут. Как разработчику мне это надо изучить возможные проблемы и методы их решения. И как обьяснить заказчику что это займет мое время и увеличит его затраты ? Директора считают деньги и готовы платить не за проблемы через год а за решение проблемы СЕЙЧАС. Так что я не готов тратить СВОЕ ВРЕМЯ и внедрять универсальные процедуры — оптимизировать —
и так далее. Это я на основной работе облизываю программу и внедряю и оптимизирую и модернизирую — потому что мне платят не за строчки кода и не за время а за безпроблемность, маштабируемость и гибкость.
Душелов, Гилев, Абадонна… ОНИ ПРОДАЮТ СВОИ РЕШЕНИЯ. Тоесть количество продаж зависит от качества кода и возможности его применения и развития. Так что …. Да кстати и они учились и развивались на статьях других…
(34) Приятно это слышать! 🙂
(21)
Позвольте с Вами не согласиться… В данной статье рассматривается способ оптимизации написания кода без ущерба функциональности (сокращение времени на разработку и отладку и избежание ошибок), а не готовый шаблон «как нужно писать программы».
Вы вот, например, готовы сказать, что знаете абсолютно ВСЕ такие уловки? Можно заниматься программированием 20 лет, а на 21-й год узнать какую-то вещь, про которую кто-то другой скажет «фу, боян, ему 20 лет уже!»
И готовы ли Вы назвать хоть один курс или книжку или аттестационный тест, в котором бы было описание или вопрос про вещи, подобные этой?
(36)
Знакомая проблема… Вменяемым директорам полезно бывает озвучить в цифрах стоимость «решения проблемы через год» (50% гарантировано передумают ибо «считают деньги»). Для невменяемых составлять ТЗ, в котором указаны возможные проблемы при конкретной реализации, и заставлять подписаться в нём и в акте сдачи-приемке.
(39) НЕкоторых это не особо пугает… это же потом будет… Конечно акт подписывают и в коде пишу тем кто будет исправлять почему так сделал. И в документации. Но некоторые перцы все равно потом пытаются свое фи высказать.
Кто б еще написал шаблон, быстро генерирующий нужный код ?
(38) Тут где-то была ссылка на целую книгу по оптимизацию написания кода…
Нет… все уловки я не знаю.
А про курсы… Эти курсы называются «школа, 9-11 классы»… Именно там была заложена основа, о которой я говорю.
(16)
Показываю принцип:
или
intellisence в 7ке распознает такие комментарии и активно их использует для построения списка.
Самодокументирование кода практически.
(43) хм… забавно… в первом пример только по-моему такое описание убъёт закрывающую скобку процедуры…
тем не менее и принцип и сама реализация практически та же самая, что и у примера в статье…
(43), (44) Схема, аналогичная реализованной нами в Интеллисенс для 77, сделана в подсистеме «Контекстная подсказка» (и соответственно в Инструменты разработчика») для 8.1
(44) Схема все-таки отличается, т.к. в нашем варианте только комментарии, никакого лишнего кода 🙂
(43), (44) а если так? 😉
(46) Да, ИМХО намного красивее, чем просто Если Ложь 🙂
Но сразу не работает 🙂
: Ошибка в операторе препроцессора
#<<?>>КонецЕсли;
: Ожидается завершение оператора препроцессора Если (If)
Точка с запятой после КонецЕсли лишние, без этого все путем.
Правда, я совсем не уверен в качестве реализации препроцессора — возможно, нет никакой разницы между 2-мя этими способами.
ЗЫ в тестировании — наше все 🙂
(47) да, спасибо за исправление… скопировал — не заметил «;»
если бы не было разницы, код бы исполнялся везде…
(48) Я говорю о разнице в быстродействии.
Т.к. мы не знаем деталей реализации препроцессора.
(49) и я о них же…
какой смысл в инструкциях препроцессора, если не будет производится анализ включаемых блоков?
(50) По опыту разработки над ВК 1С++ и ФормЕкс знаю, что 1С очень слабо занимается оптимизацией кода работы.
Кстати, можно попробовать проверить 🙂
1000 раз или еще побольше с замером времени запустить код Выполнить(Строка), передавая обе строки в Выполнить.
#Если Клиент И Сервер Тогда // типизирование переменных без вреда для исполняемого кода
НужнаяПеременная = <Создание или назначение объекта нужного типа>;
#КонецЕсли
В файловой версии условие #Если Клиент И Сервер ВСЕГДА будет ИСТИНА (так называемое «слияние контекста») поэтому этот блок будет ВСЕГДА скомпилирован и выполнен.
Правильно использовать следующую конструкцию
#Если НЕ (Клиент Или Сервер Или ВнешнееСоединение) Тогда
Объект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
#КонецЕсли
(52) да, согласен, благодарю за поправку… сказывается апгрейд конфигурации «1С:Мозг программиста» с версии 8.1 на версию 8.2… 😀
Я в конфигураторе сделал, чтобы циклы и Если раскрывались плюсами, как процедуры и функции, теперь для выделения определенных блоков использую конструкцию
Если Истина Тогда
// Блок кода, делающий то-то
……
КонецЕсли;
Теперь для того, чтобы скрыть ненужный блок я просто сворачиваю ненужное Если
(55) 💡 хм… тоже интересное решение… а главное — этот блок можно быстро отключить, поменяв флаг на Ложь…
Ivon, Вы не против упоминания такого трюка в одной из частей «Маленьких хитростей»? естественно с упоминанием о первоисточнике…
(56). Только за.
(57) Договорились! 😉
(55) Кстати, натолкнули на одну интересную идею… Постараюсь в ближ. время оформить её во вторую часть «маленьких хитростей»… пришлю ссылку… 😉
(52) #Если НЕ Клиент И Клиент Тогда
помоему короче 😉
плюс сразу позволяет вменяемому человеку на париться — ясно вписан бред
по поводу статьи —
правда если в шаблон конструкцию #если #конецесли не воткну пользоваться не буду — привык втыкать пустуюссылку и потом комментировать (если не забыл). собсно плюс за возможность «не забыть».
а на тему спора что мол 1с это не программисты и эта статья пример. я в 1с пришел после watcom c с ассемблером. про контекстную подсказку узнал ток через 2 года(халтурил чуток там и сям и выпадающее меню после точки меня в шок не повергло). а вывод стало быть простой — те же дельфисты то же как то на суровых полноценных программистов не тянут.
хотя если в дельфях человек аж целую сортировку методом пузырька написал, а в 1с ему только макеты править приходилось, то с его точки зрения определенное недовольство понятно.
зы. по комментам видно что автор статьи работает с отделом и ему проще заставить подчиненных вставлять как он выразился «не работающие блоки». большинство типизирует переменные без блоков и комментит опосля. немного разный подход в немного разных условиях.
(60) логика здравая, но… в предложенном варианте присутствует неоднозначность для препроцессора… трудно сходу сказать, что именно получится в процессе компиляции… это, наверное, больше вопрос для artbear, он в этом лучше разбирается…
по поводу отдела — угадали… в принципе, данная статья и родилась после очередного консультирования на тему «как сделать быстрее» и последующего выискивания, где же забыли что-то закомментировать…
хм…как ни странно, я эту методу сам выработал и использовал иногда…дежавю…
(62) 😀 этот велосипед каждый для себя изобретает сам… вопрос в том, когда именно «осенит»…
прописные истины всегда лежат на поверхности, проблема как раз в том и состоит, что со временем «ныряешь» всё глубже, и часть неувиденного в начале так и остается где-то там за спиной…
смысл в таких публикациях двойной: с одной стороны «осенить» новичков как можно раньше, с другой — дать возможность профи «оглянуться назад» (ведь там тоже могло остаться что-то маленькое, но полезное)…
Блок Если … Тогда… КонецЕсли лишний.
Просто пустую ссылку нужного типа запихиваю
(30)
Простые юзеры зовут еще круче — «компьютерщики» 😉
(64) Ошибаетесь… Этот блок сохраняет массу времени при отладке, у вас не было случая, когда вы свою пустую ссылку забывали закомментировать, а потом никак не могли понять, почему же простейший кусок кода неправильно отрабатывает?
(67) прочитайте ту часть статьи, которая выделена красным цветом, там как раз подробно объясняется, зачем тут приведены «всякие варианты извращений с инструкциями препроцессора»…
(68) Да я уж свой пост и закрыл, когда ВНИМАТЕЛЬНО прочитал 😉
Блин, с самого начала изучения 8.х стал так делать, но как-то даже в голову и не пришло, что это ноу-хау 😉 Это мне просто от Дельфи в наследство досталось
(70) «ноу хау» (просто для справки) переводится с английского (know how) как «знаю как»… так что соглашусь! это действительно «ноу хау», т.к. я ЗНАЮ КАК и сообщаю об этом тем, кто ещё может быть не знает…
Как правило, под ноу-хау подразумевают инновации, имеющие коммерческую ценность в силу неизвестности иным лицам в отношении которой введен режим коммерческой тайны. В высокотехнологичной экономике ноу-хау составляет ключевую часть активов компании.
Не стоит в лобовую переводить.
(72) Зануда
(73) А то! 😉
Я просто помню как из-за одного недописанного слова «например» СССР профукал патент на подводные крылья.
(74) вроде наоборот, лишней фразы. Дай бог памяти был указан конкретный угол постановки крыльев, а подлые пиндосы его потом немного изменили и наших, типа, послали.
(66) строка определения переменной, прием чисто технический, нужна только на момент написания кода, зачем же потом ее оставлять. Ежели забываем, что в начало блока кода энту строку ставим, то нужно выключать комп и идти спать 😉
Кстати, почему то нигде не увидел про конфигурирование в режиме отладчика.
Запускаем отладку, в начале модуля/блока кода ставим точку останова, ну и начинаем весело кодировать.
Если нажать «вычислить выражение», то получим рассчитанное значение требуемой переменной. Соответственно, видим ее текущее значение, можем поползать по всем реквизитам и т.п.
в поле Выражение можем попробовать написать некое выражение и сразу проверить какой результат получится. Ну и конечно перетащить из выражения требуемую срооку кода в текст модуля.
Если скрестить оба метода, то вообще гуд получается.
у нас и контекстная подстановка реквизитов есть, и можно сразу проверить каков будет результат.
Только строку определния переменной нужно вставлять после начала отладки или ставить точку останова до ее выполнения.
(75)
В формуле изобретения написали:
А надо было:
…установлены под углом, например, 38 градусов
(76) вообще градусы указывать не нужно было.
Градус заранее на бутылках с алкоголем видить хорошо 😀
(56) (55) Ivon, А не проще данный кусок кода вынести в отдельную процедуру и уж если что, то просто комментировать вызов данной процедуры? Хотя решение классное, я его даже в свой шаблон кода включил.
(78). Можно, но в определенных случаях это не всегда будет удобно. Тем более, что в процедуры лучше выводить куски кода, которые могут повторяться в нескольких местах кода. Если фрагмент единичен, то выносить его в процедуру не имеет смысла. Это мое ИМХО.
(79) Ivon, Конечно ответ не по сабжу, в этом случае одна процедура может получиться очень большой, а где гарантия того что через пару недель не потребуется этот кусок кода, а так процедуру отладил и забыл о ней и в коде особо не мешается, но это лично мое мнение.
Красиво. Люблю такие, якобы очевидные, плюшки: улыбает и повышает настроение.
Очень познавательно. Хотелось бы увидеть вторую и дальнейшие части. +
Я постaвил плюс не за то, что написано или открыто что-то супер
Мне лично это было известно и использование этой фичи для меня естественно, я даже не думaл, что другим будeт полезно
Но после прочтeния сабжа лично я считаю, что подобные публикaции как раз и помогают прогрaммистaм/разработчикaм совершенствовaть свой профессионализм
За это и плюсaнул
Спасибо. Я также как г-н в 64м пихал вручную пустую ссылку. Потом удалял. Иногда маялся, но редко, у меня нет длинных модулей пока. Работаю на малых и крохотных базах, однако, ваш метод возьму себе под крыло. немного под себя перенастроил — создал отдельный шаблон для спр и документа с автозаменой с «контдок» на:
Заодно вопрос, а как вы потом переносите с машину на машину свои шаблоны? Я вот взял шаблоны GROOVY за основу, как наиболее близкие мне, добавил что необходимым считал, да, только вот смотрю сейчас не на всех моих серверах одна и та же версия этих самых шаблонов в итоге. Как вы синхронизируете их?
Теперь буду осторожнее и надеюсь быстрее )
Еще раз сердечно благодарю за разборку такого деликатного метода.
Спасибо.
А где же мой супер способ?
Подробнее читайте здесьhttp://partners.v8.1c.ru/forum/thread.jsp?id=1001471#1001471
Способ несколько более рискованный чем с компилируемым Если, но я пользуюсь им.
Кстати способ с Если Ложь Тогда я описал тутhttp://www.forum.mista.ru/topic.php?id=256586 еще в далеком 2007 году.
(86) tormozit,
Очень интересует
отрабатывает нормально и на 8.1, и на 8.2? при всех типах соединения?
А то скобочку
для 8.2 писать надо другую… а так можно будет одну юзать.
(88) Будет работать и в 8.1 и в 8.2 во всех режимах компиляции
Тоже постоянно так обманывал конфигуратор, но за
#Если НЕ (Клиент Или Сервер Или ВнешнееСоединение) Тогда…
большое спасибо 🙂
Раньше так делал, правда без условия. И периодически забывал убрать, потом удивлялся почему не работает 🙂
С условием можно и забыть про этот кусок и не убирать его
(35) anig99,
я только за
(35) anig99,
Только «забываете» упомянуть, что Дельфи и «прочие» работают с «собственными» БД, на которые и написано приложение на «Дельфи и прочих» ЯП.
А 1С работает «напрямую» посредством драйвера — с люббой SQL-базой, кроме собственно базой 1С.
С++ уже давно (лет так 15) заменен на Visual C, Borland C, и прочие «С».
И все там с массивами прекрасно, разве что они значительно отличаются (в лучшую сторону причем) от «массивов» 1С.
(93) да… сейчас уже не язык программирования важен, а среда разработки. Вот, например, недавно вышел RAD Studio XE4… Там куча языков.
(94) anig99,
ну, может, кто-то и назовет это кучей: Delphi XE4 и C++ Builder XE4.
А все остальное под смартфоны и прочие мобилы — эту пену я за языки не считаю, через 20 лет никто и не вспомнит про смартфоны и языки «допрограммирования» для них… 🙂
У, какая старая тема.
Из свежих новостей.
Снегопат-Reborn позволяет такие типизирующие выражения прописывать сразу как комментарий:
Фишка в том, что когда контекстная подсказка 1С получает текст модуля для анализа, снегопат заменяет «//:» на пробелы.
Я вначале был в некотором шоке, но, почитав комменты, понял что народ это практикует и считает нормальным. Ладно, вам виднее. Я свой код засорять не буду, чтобы потом те, кто после меня читать его будут под стол не упали.