Такая вот суровая реальность




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

82 Comments

  1. albert

    А в результате перемешивания материалов что получается? Продукция 🙂

    Reply
  2. venger

    Там похоже аура такая:-)

    Reply
  3. venger

    Хотя бывало, что просьбы пользователей такие сумбурные, постоянно меняющиеся и исключающие друг друга, что результат работы потом оказывается соответствующим просьбам, хотя работу и выполнял вполне опытный специалист.

    Reply
  4. oleg974

    (3) К сожалению такие постановщики задач не редкость. Наверно начитались сказок про иди туда, незнаю куда и сделай то, не знаю что, но чтобы балланс сошелся.

    Reply
  5. vovan519

    Вполне нормальные названия переменных, функций и констант. А вот как пишется слово компЕляции стыдно не знать.

    Reply
  6. oleg974

    (5) Знание русского языка как владение каратэ — настоящие мастера не применяют его без необходимости.

    Reply
  7. GSoft

    (5) вот именно, понатыкали туда всяких букв в середени комп(И, Е)ляция, а оно то пишется без оных — компляция)))) — и звучит нормально, а то компИляция понимашь

    Reply
  8. script

    Ну Спасибо. Я поржал от души !!!

    Reply
  9. Nata

    СУПЕР!!!

    Reply
  10. O-Planet

    Про 22-е апреля весело. Помню, делали когда-то авиаиндикатор, и решили приколоться: если кто-то ночью в 2 часа 31 минуту 14 секунд будет тестить индикатор на стенде, отключит основное ПЗУ, и замкнет в контроллере модуля формирования изображения триггер ТИ17 на входе и триггер ТО14 на выходе, подавая при этом на вход контроллера сигнал «пила», то на экране индикатора появлялся текст гимна СССР и список разрабов. Вобщем, дело подсудное в стратегическом КБ, но вероятность таких совпадений вообще должна быть равна нулю… Самое прикольное, что за два года звонили 4 раза из московского КБ, в ужасе сообщая, что на индикаторе почему-то вчера появился текст гимна… 😀

    Reply
  11. O-Planet

    Кстати, 22-го апреля Ленин родился… Не он? 🙂

    Reply
  12. oleg974

    (11) 🙂 не он. Этого писателя звали Сергей. И судя по количеству куч в базе звали часто.

    Reply
  13. luns

    (12) Хм… Сергей говоришь? Уж не… стоп незя про него.. ))) Но скорее всего он.. ))))))))

    Reply
  14. oleg974

    (13) Эээ… А почему нельзя? В смысле о нём или хорошо или ничего?

    Reply
  15. luns

    (14) Забанют… )))))))))))

    Reply
  16. NoMax

    Мне тоже такие грабли подсунули:

    Пока 1 = 1 Цикл…

    Reply
  17. lmm

    (16) Нормальный приём, чё не нравицца? Сам часто использую — вход для всех, выход за деньги )))

    Reply
  18. artbear

    (16) Ага, это обычный прием для цикла, условие о завершении которого принимается внутри кода цикла.

    Reply
  19. NoMax

    (17)(18) Ага Хоттабыч тоже думал что нормальный прием, и сколько он в кувшине просидел? Если условие никогда не наступит?

    Reply
  20. Altair777

    (19) значит, такова его судьба

    все правильно, компьютеры должны работать, а люди должны отдыхать 🙂

    Reply
  21. vovan519

    (16) нормальный подход. Экономичный и быстрый. Придумай что нибудь сам, если нужно в любом случае зайти в цикл и по какому нибудь условию выйти. Либо будет медленнее, либо потребует дополнительных ресурсов, либо и то и другое.

    Reply
  22. alexk-is

    Единственной известной мне альтернативой циклу 1=1 является безусловный переход. Можно конечно сделать через переменную (ну, типа флажок), но будет работать медленнее.

    Reply
  23. Арчибальд

    (16)(22) Для ортодоксальных структурных программистов:

    ФлагПродолжения=1;

    Пока ФлагПродолжения=1 Цикл

    Reply
  24. vovan519

    (23) Вот как раз и пример, как сделать тоже самое, но медленнее и увеличить количество используемых ресурсов.

    Reply
  25. Арчибальд

    (0) СуммаСовсемБезНДС — это изобретение 1С. Правда, не в ТЧ, а в шапке.

    Reply
  26. O-Planet

    (16) А вот этого не надо. Это классический бесконечный цикл. Сишный вообще-то while(1) { … } Почему бы его не использовать?

    Reply
  27. nickVZ

    (17), (18) Пока <условие> Цикл (While Do EndDo) некузяво? Или хуже?

    Reply
  28. CheBurator

    У меня ДР = 16.04!

    Reply
  29. vip

    (28) Кгрхм…

    Вкупе с последними твоими высказываниями ( http://infostart.ru/forum/messages/forum1/topic8012/message57267/#message57267 , например), у тебя реальность, похоже, еще суровее.

    Ты с кем это сейчас разговариваешь?

    Reply
  30. JohnyDeath

    Статья вообще не понравилось.

    Имена переменных вполне нормальные. Главное — это понять смысл, заложенный в переменную. Я думаю, что все всё поняли. Есть случаи хуже твоих.

    Вот например, ты ругаешь строку:

    Код
    Если ДаНадо=1 Тогда

    Показать полностью

    А что в ней плохого? ИМХО, это намного лучше чем такое:

    Код
    Если Прм11=1 Тогда

    Показать полностью

    Пока 1=1 — это вообще классика.

    Если 2=1 Тогда — так люди делают комментарии большого блока кода. Соответственно, чтобы его "раскомментировать" надо поставить "Если 1=1 Тогда ". Также типичный приём.

    В общем — "низачёт" (

    Reply
  31. Altair777

    (28) (29) Ага! Я тоже не понял 🙂

    Думаешь, мы запомним и не забудем поздравить?

    Сергей, как мне кажется, лучше за день-два напомнить.

    Reply
  32. luns

    (16) Да нет. так можно…

    хотя яделаю:

    Пока Истина Цикл

    Reply
  33. lmm

    (32) А где «Истина» в 1С 7.7? 😉

    Reply
  34. lmm

    (27) Отчего ж? Кузяво… но не всегда:

    Процедура ВыбратьФайл()

    ИмяФайла = ИмяФайлаПрописи;

    Каталог = КаталогИБ();

    Пока 1=1 Цикл

    ФС.ВыбратьФайл(0, ИмяФайла, Каталог, «Выберите файл прописи для валюты «»» + Наименование + «»»», «Файлы прописи(*.spl)|*.spl»);

    Если СокрП(Нрег(Каталог)) <> СокрП(Нрег(КаталогИБ())) Тогда

    Предупреждение(«Выберите файл из каталога «»» + КаталогИБ() + «»» !», 60);

    Каталог = КаталогИБ();

    Иначе

    ИмяФайлаПрописи = ИмяФайла;

    Прервать;

    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры

    Reply
  35. luns

    (33) Теперь я понимаю почему семерочники такие суровые.. Они ищут Истину…

    Reply
  36. lmm

    (35) угу…

    Reply
  37. oleg974

    (30) В чем-то ты прав по поводу смысла переменных, но меня как-то коробит от странных и пространных наименований типа «ДаНадо», «Куда», «ОтветсвенноеЛицоКуда», а «ЧТО» и «ВОЧТО» это вообще ппц.

    (35) Точно в цель!

    Reply
  38. a.ivanov

    (30) Видать сам так пишешь, раз считаешь что нормальные. Поковырялся бы ты в таком говнокоде….

    Reply
  39. smirnov.a

    Ржал как конь 🙂 Несомненно +1

    Reply
  40. JohnyDeath

    (38) Видать читаешь хреново.

    Какой из отрывков кода в твоем понимании лучше:

    Код
    Если ДаНадо=1 Тогда

    Показать полностью

    или:

    Код
    Если Прм11=1 Тогда

    Показать полностью

    ? Причем во втором случае в модуле будет встречаться переменные с названиями: Прм1, Прм111, Пр11, к1, к2, п3 и так далее.

    Так вот мне посчастливилось копаться в коде, похожем на второй. И я был бы очень рад, если бы мой предшественник писал бы так, как герой статьи автора!

    Reply
  41. JohnyDeath

    Я так понимаю, что в эту статью можно включать примерно такие строки:

    Код
    Перем ПечФорма; //ХА-ХА! Форма печки? Или же печёночки?

    Показать полностью

    Reply
  42. Душелов

    Сам натыкался на свои старые комментарии:

    Код
    Если ТЗ.Количество() = 1 Тогда
        Возврат ТЗ[0].Номенклатура;
    ИначеЕсли ТЗ.Количество() > 1 Тогда
       //придумаю потом
    КонецЕсли;
    

    Показать полностью

    Reply
  43. Душелов

    Ну и секции у печатной формы: шапка, УШИ, тело 🙂

    Reply
  44. a.ivanov

    (40) шедевр именования реквизитов, встретил в самописной конфе

    Идентификатор Реквизита: ________________

    Тип: Строка, Длинна 1

    Как думаешь что это?

    Reply
  45. oleg974

    (41) Ну и зачем так утрировать? Хочешь доказать мне, что приведенный код прекрасен и мне страшно повезло? Знаю я прекрасно, что есть и более тяжелые случаи, но мне от этого нифига не легче.

    (44) Класс! точно шедевр.

    Reply
  46. AVARY

    «Совершенный код» всем в помощь!

    Reply
  47. JohnyDeath

    (45) Ну, в принципе да, я хотел сказать, что тебе ещё повезло.

    Reply
  48. Altair777

    Вот сейчас работаю с конфигурацией — похоже, ее лепили с нуля.

    Ни одного комментария ни в одном реквизите. А деятельность специфическия.

    Вот, например, реквизит табличной части — «ПростойЧелФ»

    По ИД документа «УчетВремениРаботыМашин» я догадался, что «Простой» — это не в смысле противоположность «Сложный», а «Чел» — это аналог «Чувак».

    А что же такое «Ф»?

    Открыл форму документа. Описания к реквизиту нет, заголовок колонки «Прост.чел.ф.»

    И этот реквизит в документе нигде никак не упоминается, т.е. по коду понять невозможно.

    Сделал поиск по конфе — встречается в 2 отчетах. Вот кусок запроса

    |ПростойЧелФ = Документ.УчетВремениРаботыМашин.ПростойЧелФ;

    |Функция ВремяПростояЧ = Сумма(ПростойЧелФ) Когда (ПростойЧелФ<>0);

    Очень информативно 🙂

    То что «Ф» может означать «Фактический» я догадуюсь, но вдруг не так?

    Reply
  49. oleg974

    (48) А может это «простой человеческий фактор»? 🙂

    Reply
  50. Altair777

    (49) Точно!!! 🙂

    Reply
  51. "Я"

    Попытка

    Если Источник.ОбменДанными.Загрузка Тогда

    Возврат;

    КонецЕсли;

    Исключение

    Сообщить(«Ой! Что-то случилось! Обратитесь к программистам! (12)», СтатусСообщения.ОченьВажное);

    КонецПопытки;

    эт перлы из нашей базы)

    по теме, обожаю юмор программистов)

    Reply
  52. wguki@yandex.ru

    (10) вероятность данносго события 50%: либо наступит, либо нет.

    На правах стеба

    Reply
  53. Lars Ulrich

    каюсь.. есть у меня такой грешок… поставят задачу сделать такой-то отчет, а у меня в это время присутсвие полного отсутствия желания работать.. но ведь надо! вот сидишь, работаешь и пишешь комменты с мыслью в голове, что будущие поколения, ковыряясь в том что я ваяю поржут.. и как-то легче работается 🙂

    Reply
  54. Mytilus G.

    Классика стеба:

    Если 65 = 0 Тогда

    Сообщить(«Ребят, тут ваще нереальная фигня какая-то случилась»);

    Возврат;

    КонецЕсли;

    Reply
  55. Abadonna

    (0)»Если 2=1 Тогда …» — очень удобный способ закомментировать блок кода, если так удобнее, чем выделять блок и жать на кнопочку [//]. Знавал я одного программиста на клиппере, в редакторе которого нет возможности поставить комментрий на выделенный блок, а он он был не уверен, что этот блок после очередной «хотелки» уже не понадобится (не удалял его), поэтому это супер-красивый способ комментирования.

    «ДатаЗапретаРедактирования и ДатаПолногоЗапрета». Ну и что? Вполне возможно до даты ПолногоЗапрета нельзя редактаривать НИКОМУ, а до даты Запрета можно, например, главбуху.

    Так что не судите и не судимы будете! 😉

    Reply
  56. Abadonna

    (48)>УчетВремениРаботыМашин.ПростойЧелФ;

    Лично я почти на 100% уверен, что это простой машины, связанный с ЧЕЛОВЕЧЕСКИМ ФАКТОРОМ

    Reply
  57. larisab

    (53) Видела процедуру с названием НаХ(), удаляет строки справочника :-))).

    Reply
  58. sores

    По поводу «ДатаЗапретаРедактирования и ДатаПолногоЗапрета»

    У меня тема было:

    Ставиться задача сделать что-бы скидка на определенны товары давалась на другие нет. Сделал реквизит у Номенклатуры — перечисление СкидкуДавать, СкидкуНеДавать.

    Потом директор говорит вот есть ХОРОШИЕ клиенты которым надо дать скидку даже на те товары на которые мы скидку не даем.

    Не вопрос делаю реквизит у клиента его проставляем и усе гуд.

    Потом директор говорит вот есть некоторые товары, на которые скидку нужно не давать, даже если у клиента есть вышесказанный признак.

    И чё делать? В перечисление было добавлено значение СкидкуСовсемНеДавать.

    Reply
  59. nikresh

    за:

    ИначеЕсли ТЗ.Количество() > 1 Тогда

    //придумаю потом

    КонецЕсли;

    появлется желание убить.

    Не знаешь — не пиши (НЕ гадь. 🙂

    А вообще-то

    гораздо хуже когда ТЕКСТ выглядит

    чудесно, но сама конфигурация

    а) мусорная куча идей, которые никак не связаны или плохо связаны друг с другом (ну нет единой конструкции)

    б) или в основу конфигурации положен вековой давности подход к предметной области (например бух.учет к учету в самом производстве 🙂

    Reply
  60. lulyluka

    Ой, я такая загадочная судя по всему… или тут просто до меня были такие все загадочные!!!

    Reply
  61. tango

    (10) это не прикол, планет, это качество вашего прикола

    Reply
  62. oleg974

    (58) Не гибкая реализация. Граблей нахватаешь до безумия. Сотвори реквизит шапки документа типа число и назови «ПроцентСкидки». Пусчай девочки по продаже решают давать или не давать… 😉

    Reply
  63. sores

    (62) Это было сделано лет 5 назад и никаких граблей, а по поводу шапки так в ней и есть и скидка и наценка и бонусы и все это может быть вместе, и еще доставка.

    реквизит ни для этого.

    А когда в доке 30 наименований и на 2 скидку давать не нужно потому что наценка на них очень махонька. А всего в справочнике 10 000 наименований и операторы не могут помнить на какой товар давать а на какой нет — это по поводу фразы «Пусчай девочки по продаже решают давать или не давать»

    Reply
  64. oleg974

    (63) Согласен. Не знаю ньюансов учета и похоже поторопился с выводами.

    Reply
  65. СергейБ

    🙂

    Reply
  66. buzzzard

    Сочувствую и поддерживаю!

    А всем кто не знает как комментируются большие блоки кода в 1С необходимо выдать БСЛ.

    Reply
  67. oleg974

    (66) Спасибо за поддержку! Я что-то не могу придумать с какой целью надо комментарить и оставлять в живой базе СТОЛЬКО строк не рабочего кода. Если это для расширения возможностей объекта, то для срабатывания этого варианта надо, чтобы приехал прогр. и «включил». А когда не надо опять приехал и «выключил». Проще константу сделать — красивее будет и меньше беготни.

    Reply
  68. DMSDeveloper

    Столкнулся с таким кодом. текст функции строк на 300.

    Оформления структуры кода почти никакого. Вижу такие строки

    ….

    примерно на строке 250

    Если УчитыватьСкидкуПоДисконту = Истина и СрокДействияДисконтнойКарты > ТекущаяДата() и ДисконтнаяКарта…(Тут текст уходит за границу экрана)

    КонецПопытки;

    КонецЕсли;

    я бился в истерике…

    Reply
  69. DMSDeveloper

    Что касается закоментированных блоков кода.

    Мое мнение таково, когда коментируешь блок — выставлять дату коментирования и по прошествии некоторого времени (месяц-два) удалять. потому как это уже действительно мусор.

    Reply
  70. tango

    (68) ну, попытаться-то надо было

    Reply
  71. rasul8333

    про лопату и дерьмо, это прям в точку попали :)))))

    Reply
  72. DMSDeveloper

    еще одни «перлы».

    я бы этому ДВ руки то поотбивал

    // ДВ 2008.03.22, 2008.07.09

    //ТекСтрока.Цена=обПересчет(ЦенаНормочаса,ТекСтрока.Нормочас.Валюта,Дата,ВалютаДокумента,КурсДокумента);

    Если СокрЛП(ТекСтрока.Работа.Код)=»ЦБ0010532″ Тогда

    ТекСтрока.Цена=0;

    КонецЕсли;

    Если Справочники.Организации.ОсновнаяОрганизация.Наименование=»Автоцентр «» Estocada express «»» Тогда

    Если СокрЛП(ТекСтрока.Работа.Код)=»ЦБ0011277″ Тогда

    ТекСтрока.Цена=0;

    КонецЕсли;

    Если СокрЛП(ТекСтрока.Работа.Код)=»ЦБ0011276″ Тогда

    ТекСтрока.Цена=0;

    КонецЕсли;

    Иначе

    //Если СокрЛП(ТекСтрока.Работа.Код)=»ЦБ0011294″ Тогда

    // ТекСтрока.Цена=0;

    //КонецЕсли;

    Если СокрЛП(ТекСтрока.Работа.Код)=»ЦБ0011295″ Тогда

    ТекСтрока.Цена=ТекСтрока.Нормочас.Цена/2;

    КонецЕсли;

    КонецЕсли;

    // ДВ 2008.03.22, 2008.07.09

    Плакаль….

    Reply
  73. croacker

    Мож, не очень смешно, но и не слишком грамотно:

    Конфигурация HRS BO ver. 1.1

    Операция.НоваяПроводка();

    Операция.Дебет.Счет = Счет_Кредит1

    ….

    Операция.Кредит.Счет = Счет_Дебет1;

    Reply
  74. AnryMc

    Конечно когда происходит «лоскутное» проектирование (недостаток финансирования, несколько внедренцев, меняющиеся условия задачи) то это нормально…

    Но когда это 1С… (Конфигурации для Украины)

    План видов расчета «Средний заработок», предопределенные элементы:


    Имя — Наименование

    ПоЗаработкуБЛПропорционально — (больничные пропорционально) По начислениям, которые учитываются пропорционально отработанному време

    ПоЗаработкуБЛБерИРоды — (для больничного по беремености и родам) По заработку

    ПоЗаработкуБЛ — (для больничного) По заработку

    ПоЗаработкуДляОтпуска — (для отпуска) По основному заработку, для расчета отпуска

    ПоПремиямОтпуска — (для отпуска) По премиям

    ПоФиксПремиям — (для отпуска) По премиям пропорционально

    ПоПремиям — (для средней) По премиям

    ПоФиксПремиямОтпуска — (для средней) По премиям пропорционально

    ПоЗаработку — (для средних) По основному заработку, для оплаты по среднему

    ПоГодовойПремии — По годовой премии

    ПоОкладу — По окладу

    Показать

    Reply
  75. AlexO

    (10) O-Planet,

    то на экране индикатора появлялся текст гимна СССР и список разрабов

    в СССР за такое бы посадили неглядя, тем более — нашли. Так что где-то допридумываете, Олег 🙂

    Reply
  76. AlexO

    (62)

    Не гибкая реализация. Сотвори реквизит шапки документа типа число

    великолепно. Т.е. табличка «кому давать, кому — не давать» будет висеть теперь у девочек на стенке, на всеобщем обозрении?

    Reply
  77. AlexO

    (66) buzzzard,

    а ты, значит, знаешь? И видел, наверняка, во что превращается процедура, в частности, если её закомментировать полностью?

    Reply
  78. AlexO

    (74) AnryMc,

    вполне типовые названия переменных в 1с.Как сумели изначально придумать (или недодумать), так и идет до сих пор.

    Reply
  79. O-Planet

    (75) Не, не придумываю ) Просто у меня директор был тот еще кадр, отчаянный. Вот пример из жизни. В нашей бригаде 4 чела, мы готовимся к выставке в Германии. Первая выставка, на которую нас пригласили. Мы делаем макетный индикатор на ЖК панели. Купили ее за 3 тыс у.е., индикатор — огромная коробка, с маааненькой панелью. Потом мужики рассказывали, как глупо это смотрелось на фоне буржуйских действующих моделей… Так вот, до отправки в германию 3-4 дня, и у нашего конструктора, Жени Панфилова, Д/Р. Он, соотвественно, с водкой пытается пройти на территорию завода. Его ловят на проходной составляют акт, водку отнимают. ДР испорчено. Он с проходной звонит нашему Мандраку (мой директор бригады), рассказывает обиженно, что водку отняли. Мандрак командывает нам: Все — домой и пошла эта выставка на … Так вот, к нам вечером того же дня директор УКБП Абутидзе Зураб Северьянович посылал уазик с официальными извинениями и просьбой срочно выйти в неурочное время (да мы и так каждый день в неурочное работали). Вот так-то. Меня работа с этими товарищами научила только одному: специалист должен диктовать правила, а не система.

    Reply
  80. AlexO

    (79) O-Planet,

    Потом мужики рассказывали, как глупо это смотрелось на фоне буржуйских действующих моделей…

    советские разработки выглядели все неказисто и громоздко, зато брали фнкционалом. Так что либо мужики первый раз на выставку съездилии еще не привыкли, либо — вас просто заочно обсмеяли 🙂

    директор УКБП Абутидзе Зураб Северьянович

    ну, в Средней Азии и тогда че только не творилось. Клановость во власти — самое наглядное, что выплывало.

    Меня работа с этими товарищами научила только одному: специалист должен диктовать правила, а не система.

    Ни один специалист в СССР, кроме Королева, не мог всегда и везде диктовать свои условия.

    Reply
  81. AnryMc

    (78) AlexO,

    Я о том и говорю, что на уровне «идеологии» разработчик закладывает:

    «это понять невозможно, это можно только запомнить…»

    что уж говорить о приходящих ребятах, которые зачастую в условиях ограниченного финансирования (а значит и времени) решают локальную задачу (зачастую без четкого понимания заказчика, что он хочет) и так несколько раз…

    Так таких «перлов» написать можно

    Reply
  82. Makushimo

    Спасибо. Улыбнуло с утра.

    Хотя выносить сор из избы конечно не гоже :-))

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *