<?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(1) — в данном случае будет Пар1 = 1, Пар2 = 2 и т.д.
А то что ты делаешь — ПередачаПараметров1( , ) -ты передаёшь пустое значение (в 8ке там было бы Неопределено)…
Весело. Щас попробовал ПередачаПараметров1(,,). Получил:
Пар1=»Пустой»
Пар2=2
Пар3=»Пустой»
Чудеса…
Да, есть такое, именно с последним опущенным параметром. Наткнулся на эту фичу в глубокой отладке…
(3)>опущенным параметром
Опущенный параметр — жесть :)))))
(4) да еще в сочетании с глубокой отладкой… Молодец, Шаман, — поднял (в смысле улучшил 🙂 ) настроение.
)))))) Еще раз перечитал свой пост…. долго думал…. ))) Ну, тогда «фича» и «наткнулся» тож рулят. ))))
На 7.70.27 (SQL) релизе тоже самое.
Похоже, все-таки, дело в запятой перед параметром
Если запятая есть, то параметр передан.
А т.к. его фактически нет :-), то передается ПустоеЗначение. (сравните 4 и 5)
Но тогда не понятно, почему во втором и третьем запуске написало «2»?
——————————
1) ПередачаПараметров1(,)
Пар1=»Пустой»
Пар2=»Пустой»
Пар3=3
——————————
2) ПередачаПараметров1(,,)
Пар1=»Пустой»
Пар2=2
Пар3=»Пустой»
——————————
3) ПередачаПараметров1(1,,)
Пар1=1
Пар2=2
Пар3=»Пустой»
——————————
4) ПередачаПараметров1(1,2,)
Пар1=1
Пар2=2
Пар3=»Пустой»
——————————
5) ПередачаПараметров1(1,2)
Пар1=1
Пар2=2
Пар3=3
——————————
(7) Даже если передается пустое значение, то в любом случае, если задано значение по умолчанию для формального параметра, формальный параметр должен инициализироваться значением по умолчанию. А этого не происходит, но только в одном случае (что радует), если пропущен фактический параметр после последней запятой при вызове функции, в остальных случаях, все работает, так как должно быть, т.е. если задано значение по умолчанию, то при пропущенно фактическом параметре, формальный параметр инициализируется значением по умолчанию. Т.е. налицо явно баг, хотя если красиво описать, то будет фича:-)))
(8)>Даже если передается пустое значение
Не передается НИКАКОЕ значение, не передается параметр ВООБЩЕ — а это, как говорят в Одессе, две большие разницы. Не баг и не фича, а стандартная вещь
(8) А ведь стопудово прав. Все больше убеждаюсь, что для того, чтобы называть себя программистом, надо пройти курс молодого бойца на ассемблере… И все больше склоняюсь к мысли: чистый 1с-ник — не программист (в том смысле, что за плечами нет других языков программирования).
Сорри, пост (10) относится к (9). И еще. Есть золотое правило: прежде чем кричать о глюках, лучше сначала выключить устройство krivie_ruchki.sys…
Для справки — подобные баги при работе с параметрами по умолчанию были обнаружены еще пару лет назад при работе над ВК 1С++ 🙂
У меня даже тесты соответствующие с тех пор остались.
.
ЗЫ это мы разбирались, как правильно передавать параметры по умолчанию в классы 1С++.
Например, есть функция в глобальнике
Показать полностью
и тест
Показать полностью
(12) Нет худа без добра — подумал зять, кидая камнем в собаку и попадая в тещу… 🙂
(12+) Даже где-то на форуме 1cpp.ru есть соответствующая ветка.
А для 3 и более параметров, как у автора, вообще полные чудеса творятся 🙂
(12+) Соответственно, работа с методами по умолчанию в классах 1С++ лишена этого недочета 1С — в 1С++ все просто и прозрачно, как в других языках 🙂 Но только в том случае, если обращаться к объекту класса через контекст — типа ОБъект.Метод()
В ином случае, если, например, внутри класса вызвать просто Метод(), 1С «сильнее» и работает именно ее синтаксис и ее баги 🙂
(9) Abadonna, а про инициализацию формального параметра значением по умолчанию (которое прописано при определении функции), при отсутсвии фактического, что ты можешь сказать, млин? Где тут норма?
В варианте таком, тоже во второй параметр передается ПУСТОЕ значение:
ПередачаПараметров1(1,,);
Но на выходе получим, т.е. Пар2=2, а не «Пустой»:
Пар1=1
Пар2=2
Пар3=»Пустой»
>фактического, что ты можешь сказать, млин?
А вот, млин, и говорю: первый та передал как 1, второй (раз он между запятыми) — ПустоеЗначение (вот и присвоилось значение =2), третий ты ваще не передал (т.е. не передавал ты туда пустое значение на основании которого он должен был стать=3)
(19) Ты не прав — явный же изврат получился 🙂
Пока реализовывал мысль из (8)
> Т.е. налицо явно баг, хотя если красиво описать, то будет фича:-)))
вы уже много чего написать успели 😀
===================================
Ага 🙂
Например….
Показать полностью
Результаты
0
0
1
1
2
2
————————-
Кажется, работает правильно 🙂
Какие-то у вас примеры некачественные 🙁
Выкладываю свои юнит-тесты.
Проще всего решать проблему на числах, при сложении, например, пустое значение преобразуется к нулю и видны все баги.
Тесты для 2-х параметров я приводил в (13)
Тесты для 3-х параметров:
.
В глобальнике есть функция
Показать полностью
.
Вот юнит-тест
Показать полностью
.
Проверьте результаты и порадуйтесь/погорюйте за 1С 🙂
(22+) Результаты выполнения кода
Показать полностью
равны
Показать полностью
Разве это верные/ожидаемые результаты ? 🙂
Кстати, не обратил внимания сначала — автор написал абсолютно верно
Т.е. получается, что при передаче фактических параметров при вызове процедуры, если после последней запятой фактический параметр опущен, то соответствующему формальному параметру в любом случае будет присвоено пустое значение, а не значение по умолчанию, которое ему задано
.
Т.е. разработчик 1С не проверил граничное последнее значение и сделал ошибку, а отсутствие соответствующих юнит-тестов не позволило найти эту ошибку, в результате чего ошибка так и живет до сих пор 🙁
.
Именно эти факты и доказывают наши тесты и примеры 🙁
Артур, вот это:
Показать полностью
вполне ожидаемые результаты дают (дальше не смотрел).
Единственное о чём надо помнить, ИМХО, так это про последний параметр.
Например вот это:
Показать полностью
я читаю как: Первый — по умолчанию (2), во второй — единица (1), последний — по умолчанию (5) = 8
вот это
Показать полностью
так: Первый — по умолчанию (2), второй — единица (1), в третий — ПУСТОЕ (0) = 3
(24) ну вот, сам же жирным и ответил на все вопросы. Т.е. никакого бага. Всё ожидаемо, КМК.
(26) > Т.е. никакого бага.
Баг есть… у фирмы 1С
вот и ветка с форума 1с++ :http://www.1cpp.ru/forum/YaBB.pl?num=1190633545/14
Им (JohnyDeath, Abadonna) просто 1С деньги пошляет, вот они и на защиту встали:-)))
И я хатю… Дайте два! 🙂
(26) Жень, ну сам посуди, где же ожидаемое поведение —
Значение = глШтатныеПараметрыПоУмолчанию_Сложение_3Параметра(4,);
9 разве ожидаемо? Т.е. второй пустой, а 3 параметр берется по умолчанию ??
Изврат полный 🙂
Кстати, могу в ВК 1С++ или в ФормЕкс исправить данное корявое поведение 1С 🙂
Т.е. вместо пустых значений при использовании запятой будут выдаваться значения по умолчанию.
.
Но представляете, сколько давно работающего кода может оказаться неверным 🙂
(32) Будут баги при использовании исправленного бага? 🙂
(10) Я, кстати, не 1С’ник, и за плечами у меня не ассемблер, конечно, но есть много чего, правда многое было давно, в студенческие годы…
Но раз мы такие опытные, приведите еще один язык (среду), с подобным поведением в передаче параметров.
(10) И много таких примеров Вы наберете? А как в Си, Паскале с этим? И сколько сред отрабатывают действительно ожидаемо?
Соотношение будет в лучшем для Вас случае: как в 1С — 5%, как НЕ в 1С — 95%. И что ожидаемей по вашему?
(10) А по-поводу кривых рук, я б сказал, да не буду, деятель великий нашелся…
Сорри, пост 36 относится к 11-му посту:-)))
(11) Кстати, чтоб убедиться, что я НЕ чистый 1С’ник, как минимум, я вообще НЕ 1С’ник, глянь в мой профайл, найдешь пару примитивных ВК, с исходниками. Т.е. с другими языками, я точно знаком. Я просто, даже программистом назвать себя не могу, а ты вот не стесняешься и программистом себя считаешь, хотя ни одной операционки не создал или СУБД, или на худой случай среды разработки с языком гениальным, покрасивее, чем С++, например…
(38) Злой я сегодня:-)))
А вы тут все — молодцы!
Пошел, покушал, стал добрее. Кушайте люди, помогает от злости:-))
Я итак на работе не могу заниматься программированием, а когда видишь (я счас не про сайт и не про тех, кто с сайта), что есть куча людей, в том числе и 1С’ников, особенно у франчей. Сидят целыми днями и могут заниматься программированием, а толку, только место занимают. А ты, через силу, после работы или по выходным, усталый и с кучей других проблем, нормально, а даже и получше, тратя гораздо меньше времени и вопреки обстоятельствам успеваешь и изучить, и делать получше, чем они. И с кучей отвлекающих обстоятельств. И ты после этого, так себе, а они супер-пупер прогеры, а зачастую только усидчивостью и берут. ОбЫдно, елы-палы…
(41) Учись, студент. И работать, и программить 🙂 И жениться тоже 🙂
(42) Прорвемся, где наша не пропадала:-)
Я правда только в душе студент, а так давно уже нет, закончил, но это дела не меняет:-))
Меня просто жизнь все время как то мешала увязнуть в программировании. Первый раз — это было классе в пятом, подарили мне советский еще комп БК, подключался к телеку, винт — магнитофон с кассетами. Так у меня магнитофона не было, приходилось набирать каждый раз все по новой:-)) И вот, я уже дошел до того, чтобы писать игрухи простенькие, чужих то не было, ни кассет, ни магнитофона. И я, математику то, толком еще не начали нам еще читать, приставал к взрослым, как мне посчитать отскок мяча от стенки:-))) В общем, перегорел он, компьютер. На полгода или год, не было возможности. Потом опять начал, появился комп, потом опять что-то случилось. И вот так все время. Не хочет судьба, чтобы я с компами долго общался:-)))
(43) Ну если по воспоминаниям… Я свою первую прогу написал в 11 лет, на спектруме, на бейсике… И понеслась 🙂
Я тоже на бейсике:-))) Правда потом понеслось в другую сторону, спорт, горы, скалолазанье, горными лыжами, потом легкая атлетика, баскетбол, потом старшие классы, это уже не совсем спорт, но впечатления новые, из серии вспомнить есть что, а детям рассказать нечего:-) И все время пытался вернуться к программированию, и все время через какое-то время, что-то выбивало:-)))
По теме: поведение 1С может быть и не совсем грамотное, но вполне предсказуемо. и даже документировано.
(46) Насчет предсказуемо — это да, в смысле, первый раз не ожидаешь, все следующие разы знаешь, что будет. А документировано где? Ветки на форумах — их еще найти надо…
Необязательная установка значения параметра по умолчанию. Параметры с установленными значениями по умолчанию можно располагать в любом месте списка формальных параметров.
Если параметр при вызове процедуры опущен, то он принимает либо установленное по умолчанию значение (если оно есть) либо принимает «пустое» значение (значение неопределенного типа).
Если параметру не задано значение по умолчанию и он является последним в списке передаваемых параметров, то при вызове процедуры его нельзя опускать.
Если параметру задано значение по умолчанию и он является последним в списке, то при вызове процедуры его можно опускать в списке передаваемых фактических параметров и не ставить запятую перед опущенным параметром.
Если параметру не задано значения по умолчанию, то при вызове процедуры его можно опускать в списке передаваемых фактических параметров, но разделительную запятую надо ставить.
Я просто решил перелистать описание языка, чтоб систематизировать и закрепить знания, и начал с первой главы…
И когда читал 3-й, 4-й и 5-й абзацы, то понял, что с последним параметром и последней запятой, что-то непонятно мне. И решил проверить, что там когда происходит. Проверил, подофигел и расписал ситуацию, чтоб и самому до конца систематизировать ситуацию и разобраться в ней, а заодно думаю, че добру пропадать, выложу, заодно посмотрю, что другие скажут, может материала для размышлений еще подкинут. Т.е. я эту ситуацию чисто из описания прочувствовал, что как то непонятно. Т.е. без всяких отладчиков, без всяких встречаний в реальной деятельности или написании ВК. Т.е. в этом смысле, что думающий человек полезет уточнять и докопается, то да документировано:-)
БК, спектрумы и прочее.. — счастливцы.. у вас хоть это было.. а в мое время — не было! и «если бы я не был мальчиком, то у меня даже не было бы в дестве игрушки»…
единственное, что оттачивает мозг — это ассемблер… все остальное — это хорошо, гуд, итд. но однозначного поведения и ясности — только в ассемблере есть…
Все непонятки у вас, мужики, из-за того, что вы хотите быть святее папы римского
Есть определенные правила, как передать ПУСТОЙ параметр.
Показать полностью
Возвращает как и положено 5, 7, 11
И только так!!! И никаких извратов типа Сумма(,) и Сумма(8,)
+(51) А вот единственно правильный способ вызова в тремя параметрами
(51,52) В других языках написание запятой без следующего параметра будет считаться ошибкой 🙁
А у 1С все не как у людей 🙂 Поэтому очень даже запросто можно сделать подобную незаметную ошибку и поведение кода изменится 🙁
Т.е. в данном случае 1С очень недружелюбно относится к синтаксису 🙁
.
С моей точки зрения Сумма(,5) и Сумма(5,) не должны отличаться! В обоих случаях должны передаваться значения по умолчанию, если есть.
.
А вообще Сумма(,5) также изврат — как-то более надежно, что параметры по умолчанию могут быть только в конце списка параметров.
(53) Проверю ради интереса на Дельфе. Чё-то как-то не озадачивался до этого…
Вагнер, мне даже спорить с тобой лень — не игривое настроение что-то сегодня. А по сути вопросса… Хотя нет — сначала загадка:
Мальчику дали три яблока. Он два съел. Сколько яблок осталось у мальчика?
НЕ программист ответит — одно. И будет не прав. Задача не имеет решения — мы не знаем, сколько яблок было у мальчика до того.
Отсюда вывод: ВСЕГДА НАДО ИНИЦИАЛИЗИРОВАТЬ ПЕРЕМЕННЫЕ ДО ИХ ИСПОЛЬЗОВАНИЯ. Тогда не будет возникать никаких глюков и подобных тем.
+ к (55) Вагнер = Вангер (опечатка — честное слово не нарочно).
(53)+(54)>В других языках написание запятой без следующего параметра будет считаться ошибкой
function Summa(A:integer=1;B:integer=2):integer;
begin
Result:=A+B;
end;
Дельфи при компиляции одинаково ругается и на Summa(5,), и на Summa(,5)
(57) И правильно ругнется — ибо неча… Всегда надо четко осознавать, что передаешь в функцию — следовательно вправе ожидать адекватной реакции функции. Передашь ерунду — ерунду на выходе и получишь.
Всем большое спасибо за указание на ошибку.. В последующих текстах буду учитывать подобное поведение.. Но чувствую что голова еще долго будет болеть за ранее написанные программы =))
А плюсик пожалуй автору поставлю (хоть он и обидчивый сверх меры — ничего личного, тем более в его конкретно адрес, не имел в виду) — за любознательность и старательность. Самому бы в лом было возится со столькими вариантами передачи параметров.
Тема еще раз подтвердила верность выбранной мной технологии — всегда четко представлять с чем работаешь, что передаешь и что ожидаешь получить.
Кстати, значениями по умолчанию в списках формальных параметров стараюсь пользоватся при крайней необходимости — комфортнее себя чувствую, проведя анализ в теле функции на пустое значение параметра и потом уже присвоение значения по умолчанию.
(51) А кто в данном случае Папа Римский? 🙂
Налицо с недокументированный 🙂 баг 1С. Вчитайтесь!
«Если параметру задано значение по умолчанию и он является последним в списке, то при вызове процедуры его можно опускать в списке передаваемых фактических параметров и не ставить запятую перед опущенным параметром.»
На самом деле, опускать можно ЛЮБОЙ параметр… Главное, с запятыми не запутатся.
(52) >А вот единственно правильный способ вызова в тремя параметрами
Вы уверены, что перечислили ВСЕ?
Показать полностью
(61) Баг не недокументированный, просто плохо документированный.
Надо было написать так: «..и он является последним в списке, то при вызове процедуры его можно опускать в списке передаваемых фактических параметров. При этом запятую перед ним СТАВИТЬ не надо»
P.S. Вот у меня почему-то никогда не возникало сомнений, как её правильно вызвать, наверное потому, что никогда документацию
по таким вопросам не читаю :))))))))
(61)>А кто в данном случае Папа Римский? :-))
Папа Римский — Бенедикт XVII, кажись ;))))
Вообще, мало есть языков, в которых допустима конструкция с пустыми запятыми. Например в с++ нельзя, в делфи/паскале тоже (но тут уже сказали), в яве. Вроде можно в VBA/VBS, но там и именованные параметры задавать можно.
Так что, на счет правильного поведения вопрос неоднозначный. За уши к формальному описанию в доке притянуть можно. Ведь действительно, как трактовать последний пустой параметр — как то что он опущен? — тогда нахрен вообще запятую ставили?
И даже наши предположения про «граничное последнее значение» без кода — только предположения (ведь параметры и до, и после последнего обрабатываются одинаково, т.е. именно последний параметр обрабатывается особым образом, т.е. для него сделан отдельный блок?).
Я например не представляю какой должен быть код, чтобы последний параметр «случайно» стал таким особым.
Разве что так — изначально массив параметров инициализируются пустыми значениями;
потом идем по списку, и ставим либо параметр вызова, либо параметр по-умолчанию если оного нет. И только потом — заполняем по-умолчанию то что осталось «за скобками». При этом каким-то образом в этой обработке умудрились опустить последний пустой параметр (а ведь он точно обрабатывается, иначе бы и заданные последние параметры опускались)? Тогда опять приходим к тому что для последнего параметра отдельный блок, вне цикла?
Вот если б первый параметр из параметров «за скобками» пропустили — тогда понятно было бы (не с того второй цикл начали), но это бы выловилось быстро.
И к тому же, схема все-таки странная: я бы сначала инициализировал параметры константным «вектором по-умолчанию» (тем более что 1С в качестве параметров по-умолчанию разрешает только константы, т.е. этот вектор можно просчитать единожды на этапе компиляции), а потом бы просто ставил имеющиеся параметры вызова.
Вобщем что-то с этим последним параметром мутно. Было бы интересно взглянуть на исходник, но к сожалению сие [почти] неосуществимо.
Народ, дело ведь не только в параметрах по умолчанию, а в том, что 1С зачем-то разрешила не задавать параметры явно, а дала возможность пропускать их, просто не указываю 🙁
.
Например, есть
Функция глШтатныеПараметрыПоУмолчанию_Сложение(А, Б)
ее же можно и так
глШтатныеПараметрыПоУмолчанию_Сложение(,) 🙁
.
В итоге и может появиться код, который ведет себя странным образом, причем 1С об этом ну никак не сообщит. Например, простая опечатка в запятой 🙁
.
Другие языки все-таки более качественно отнеслись к этому вопросу и не допускают таких непоняток.
(63) А я думалhttp://ru.wikipedia.org/wiki/Нуралиев,_Борис_Георгиевич
🙂
(66) Не, вот онhttp://www.wareznik.net/world/id_53261/
У Нуралиева скорее всего конфессия другая;)
(67) Сейчас отвикипедил 🙂 слово «конфессия»
Конфе́ссия (лат. confessio — исповедание) — особенность вероисповедания в пределах определённого религиозного учения, а также объединение верующих, придерживающихся этого вероисповедания.
Второе значение — это прямо про нас.
Немножко перефразировав Митяева — «а для чего все мы здесь сегодня собрались»
Так что… своего рода Нуралиев для нас — Папа Римский… 🙂
(68)отвикипедил — плюсссссс!
(69) Спасибо за плюсик 🙂
Самому до сих пор смешно, хотя уже годик-два употребляю этот глагол.
Ничего военного в этом нет. Простая компиляция по принципу «Гугл — отгуглил».
(68) -(70) Ну вы прям словарь сленга создаете;
гугл = гугнул, отгуглил, гугланул, загуглячил…
… все = загуглили все
Полный … = полный яндекс
(71) Забыл еще одно: полный гуглец :)))
+ к (71)
— ты не занят.
— Занят! Но я отвечу на все твои вопроссы. И вообще последнее время, блин!, рядом с тобой я чувствую себя полным гуглом…
Имхо «отвикипедил» ближе к созданию статьи в википедии.
Погуглил, повикипедил, полуркал…
но это уже полный офф 🙂
(74) имхо, Вы не правы… А что тогда «отгуглил»?
Хакнул робота Гугла и продвинул свой сайт в топы? 🙂
И последний вариант: википедик :))))
(76) :)))))))
(76) этот тот, кого википедают? 🙂
(77) Сорри за OFF. Ероха, ты чё в асе скрываешься?
а шо если запятую убрать а?
(80) тада усё будить оки )
Автор не прав, он передает 2 параметра, так как стоит запятая (,). Соответсвенно считается что параметр 1 и параметр 2 пустые.
(83) Значения по умолчанию формальных параметров учли? :-))
(83) Комментарии к статье читали? Там есть еще много различных примеров в дополнение к сказанному в статье. В статье минимум, чтоб понять смысл…
(83) В общем, поверьте на слово, автор прав:-))
(83) Основные расхождения в интерпретации, как всегда, — это баг или не очень:-))
Но с этим, конечно, можно жить и вполне радостно, только надо об этом знать и учитывать:-))
Спмое забавное, что вариант (,) проходит…
Хотя первому параметру не присвоено значение по умолчанию.
Сравните с тем, что вариант () на этапе синтаксиса уже не проходит.
Вот еще 1 баг 🙂
(87)»Основные расхождения в интерпретации, как всегда, — это баг или не очень:-))»
Наполовину беременна, наполовину нет… 🙂
(89) VasilyKushnir, вообще я не злой:-))
Кстати, мой ник — это по фамилии на русском — Венгер, на первом слоге ударение, если произносить:-))
Хотя Вагнер или Бетховен или Бах, тоже приятно, быть композитором в программировании — это исскуство:-))
+(90) Но я не так крут еще:-))
(90) угумс.. был у нас замполит — зАсов и чел с фамилией кОзлов… но больше всего не повезет жене человека с фамилией Вагин….
(92) а со мной училась такая 😉
А фамилия чела Воробьев — лучше ее в обществе женщин задом наперед вслух не читать…
Головач Лена, так что обломитесь все:-)
1) В случае вызова (,) опущен 1-й фактический параметр, не имеющий значения по-умолчанию. А по документации: «Если параметру задано значение по умолчанию и он является последним в списке…»
2) Функция ПустоеЗначение() очень часто ведет себя непредсказуемо даже в 27-ом релизе, в частности, с агрегатными типами данных (справочник, документ).
А может стоит бросить привычку ожидать, что реализовано что-то по вашему мнению? А? И в сомнительных случаях просто ставить проверку?
(97) Отлично сказано.
(97) Быстрее нет, чем да. Просто, как сказано в (97), стараюсь максимально ставить проверки — от греха подальше. Хотя с моими юзверями не всегда спасает… Именно в этой части согласен с (97).
(101) Я вот чего понять не могу, чем эта позиция (ведь у меня такая же) мешает признать, что в 1С немного подошиблись и перекрутили в реализации приема/передачи параметров?