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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *