К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

0.5офф*4: I'll be back или Cкромность украшает когда нет других достоинств...

0 - 16.06.2016 - 20:04
Продолжение бложика про складские дела, WMS и мысли о великом (ну то есть обо мне)... зачем это все: Зачем? Ну как обычно: потешить ЧСВ, потрепаться да и просто так... Может кому и полезно будет (хотя это вряд ли, но тогда буду музейным мамонтенком)

Предыдущие ветки здесь:
0.5офф*3: Терминатор-жопик I'll be back Cкромность украшает когда нет других достоинств...
0.5офф*2: Терминатор-жопик I'll be back Cкромность украшает когда нет других достоинств...



41 - 18.08.2016 - 03:45
А должно быть так:
- движения по отбору в отгрузку: видно что по отбору товара в отгрузку ОДНОВРЕМЕННО прошло размещение товара из заказа на приемку:
42 - 18.08.2016 - 03:47
Обычно из заказа на приемку товар "размещается" в ячейки хранения/отбора, а здесь "размещение" прошло в сразу в заказ н аотгрузку, минуя хранение (что и есть кросс-докинг самый что ни на есть)
43 - 18.08.2016 - 03:49
И теперь, если посмотреть состояние заказа на приемку - всё есть "хорошо":
44 - 18.08.2016 - 03:50
Мелочь?
Мелочь!
А приятно?
Не знаю кому как, а мну - удовлетворение...
45 - 18.08.2016 - 04:01
Прислали заказ на приемку. Учли.
Запланировано приемка = 100.

Пришел заказ на приемку.

Этап-0: Выгрузили.

Этап-1: Приняли.
Принято = 100.
Где принято? Куда принято?
Прнято ПО ЗАКАЗУ НА ПРИЕМКУ, Куда = Ворота.
Имеем: (ЗаказНаПриемку#123,Ворота) = 100

После складской операции "Приемка" товар числится в какой-то ячейке (ворота) и привязан к заказу, по которому пришел (ЗаказНаПриемку#123).

Этап-2: Размещение
Начинаем растаскивать товар из приемки в хранение. На этом этапе как раз и происходит отвязка товара от заявки на приемку (в большинстве случаев нет смысла хранить товар на складе и знать что вот этот остаток - из ЗакзаНаПриемку#123): Итого выполняем операцию:
(ЗакзаНаПриемку#123,Ворота,100шт) -> (Хранение,100шт)
46 - 18.08.2016 - 04:02
По выше приведенным картинкам Этап-2 просиходил следующим образом (кросс-докинг)

(ЗакзаНаПриемку#123,Ворота,100шт) -> (Хранение,97шт) + (ЗакзаНаОтгрузку#456,Ворота,3шт)
47 - 18.08.2016 - 04:06
Особо умные могут спросить: "А как же нам не надо знать по какому приходу у нас на складе хранится товар"...?
Отвечаем: для физического исчисления остатков не видно, какие остатки каким приходам принадлежат, поэтому остатки и не учитывает в разрезе приходов (для "воздушного" исчисления остатков в разрезе сроков, партий производителя, партий-приходов итд - используем партионный учет, поговорим о нем позже...)
48 - 19.08.2016 - 00:59
Прощелкали паллету.
Прикольно.
По проге должна стоять на стеллаже - по факту нет.
Облазил прогу - потому как первое что спросили с надеждой типа а может в проге глюк? Может и глюк, говорю. однако же полазил, посмотрел - в проге все норма. Бум завтра искать - ибо стопудово складские накосячили, если не удастся вычленить - тогда буду пытаться смотреть по видеокамерам... Хотя по ним вряд ди получится полезное увидеть. Посмотрим, что день грядущий нам готовит
49 - 20.08.2016 - 03:15
Ожидания подтвердились. Никуда паллета не ушла, нашлась на складе, в другой ячейке в другом проходе, т.е. получился хитрый "пересорт". История давняя, но что-то припоминается скорее всего - мой косяк, был затык когда хитро задвоились паллетные этикетки, которые д.б. уникальными... Но, вообщем, по количеству в итоге все остатки правильно сошлись. Что и есть хорошо.
50 - 20.08.2016 - 03:51
Пятница, отдохновительный день...
Программировал в удовольствие полезности всякие.
Например, модифицируем и дорабатываем МФ (множественный фильтр), в части использования транзитной переменной для удобного обмена между отчетами/фильтрами, распространенными в типовых конфигурациях:
- заводим глобальную экспортную переменную глБуферСлужебный;
- создаем ВПФ (внешнюю печатную форму), которая будет заполнять этот карман-буфер набором объектов из табличных частей документов, см.

- модифицируем обработку/возможности МФ (например, можно в Uchoice.ert), добавляя кнопку "получить список из буфера", например. см.

..получаем результат, типа
51 - 20.08.2016 - 03:56
Вопрос: Что дает такая полезность/доработка?
Ответ: Не надо помнить/записывать совокупность значений из табличных частей документов - запомнил в карман, вставил из кармана, получил результат.

Например, продажников часто интересует6 а вот клиент неделю назад заявочку присылал - есть сейчас остатки и сколько? как оперативно посмотреть? - да, можно напрограммить специфичную ВПФ, а можно воспользоваться данной полезностью: открыли заявку, взяли в карман все товары, отчет по остаткам, встаили из кармана, получили результат...
52 - 20.08.2016 - 05:04
Для 7.7 есть полезная разработка "Магический батон", рекомендуется к использованию, как говорится "маст хэв" разработчику: http://infostart.ru/public/298229/
53 - 12.10.2016 - 18:58
Вести с передовой.
Запустились с новым проектом.

Грузооборот существенно возрос, грубо говоря в 2-3 раза, ожидается после тестового периода еще рост коэффициент=2.

Самописка справляется.
Доработки пока получиллись можно сказать мизерные.

В чем разница предыдущего проекта и этого? На новом проекте - ТЭК, привезли, выгрузили, день-два постояло, забрали. Движуха идет обезличенными грузовыми местами/паллетами. Из особенностей: требуется суммовая оценка (бухия задрала,блин!). И куда эту суммовую оценку запихнуть так, чтобы не поломать всё? Ибо сумма целиком на "поставку" из 14 паллет. стоимость паллеты неизвестна, известно что 10 паллет стоят лям. Пришлось выкручиваться и, в принципе, получилось просто и красиво (так я считаю).

Из осбобенностей: "отбор" идет непосредственно без физического движения с мест хранения в зону отгрузки, по сути на местах хранения товар "резервируется" под заказ отгрузки. И собственно сама отгрузка идет напрямую из мест храненияч (товар-то уже отобран!). Поэтому требуется описывать как-то набор ячеек хранения(зону?), которая имеет прямой выход на ворота отгрузки.

Из особенностей: товар пришел 10 паллет и ушел 10 паллет - то есть ходит неделимым блоком, хотя хранится вразброс по местам хранения. Здесь ничего специально не изобретал - штатный движок справился самостельно

Из особенностей: для разных клиентов (проектов) выделены разные зоны хранения. В принципе они даже пересекаются логически - те ячейки которые для клиента1 под хранение заполняются в последнюю очередь - для клиента2 - заполняются в первую очередь. Тоже справился самопальный мой движок штатно. Единственное что надо как-то подумать удобный инструмент для быстрой манипуляции наборами ячеек по разным критериям. Сейчас это есть, но требует ловкости рук, надо для операторов склада чтобы попроще (сомневаюсь, что осилят такую настройку логистики)

Из особенностей: вес паллет неизвестен. Поэтому пришлось модифицировать процедуру размещения с учетом весов паллет и рейтингов ячеек.

Из особенностей: разные алгоритмы формирования МХ-1 и МХ-3, реализована система плугинов, которая позволяет подключать под клиентов произвольные наборы печформ.

Из мелких особенностей: немножко отличающиеся алоритмы приемки и размещения и отгрузки, реализована система "плугинов", которая позволяет при наличии частной процедуры приемки/размещения/отгрузки игнорировать общую схему раюоты (и наоборот - если нет частных плугинов - работет общая схема)

В чем затруднения: главное: практически отсутсвует нормальный автоматизированный обмен с Поклажедателем. вообще система автоматизации тэк находится на нижнем уровне - сидит девочка оператор, которая принимает и отсылает эксельные файлики и заполняет/перезаполняет их. Я успеваю - без наличия нормальных подгрузок/выгрузок в полуручном режиме с помощью отверток и гаечных ключей обслуживать (тестовый период пока) процесс обмена данными и жду когда Поклажедатель даст инфу. Очень все медленно, уровень автоматизации низкий. Сделать обмен на простейшем иксемеле из четырех узлов и пяти тегов - проблем... сижу, страдаю вручную. я уже блин напрограммил ввсяких мелочей полезных чтобы себе облегчить жизнь за два дня, у клиента - пока все никак....

Из несущественных затруднений: процедура планировани яотбора требует пока ручного вмесшательства - подмену ячеек "пакетом", просто пока не думал как лучше сделать, а так как таких операций за день всего две-три - то пока и ненапряжно...
55 - 12.10.2016 - 19:59
нууууууу...
все-таки - гораздо проще и полезнее пилить свои велосипеды.. на начальном этапе....
56 - 13.10.2016 - 23:02
Три дня - полет нормальный...
57 - 02.11.2016 - 13:44
работаем потихоньку...
что интересного выявилось/произошло:

- есть совокупность ячеек хранения, отбор из которых в зону отгрузки делать нецелесообразно, а имеет смысл грузить сразу из ячейки хранения (так как движуха идет паллетами) в авто, ячейки имеют фронтальный доступ и могут обслуживаться сразу несколькими погрузчиками/рохлями; малость покрутил, прикинул - то ли делать отдельную зону как совокупность таких ячеек и как-то прописывать эту зону в качестве настроечной для некой настройки "ячейки фронтального доступа", что-то это мне не понравилось, тупо в справочник.Ячейки ввел реквизит "ПрямойДоступ" и все... далее при планировании отбора опредяляются ячейки отбора, если ячейка =ПрямойДоступ - то задание на отбор не генерится, сразу фиксируется выполненный отбор - по сути выполняется операция отбора без фактического движения товара, товар в ячейке получается хранится в разрезе заказа, т.е. по сути зарезервирован под заказ.



далее собственно идет процесс отгрузки: задание на ТСД: "бери из такой-то ячейки, вези в такое-то авто/заказ"

58 - 02.11.2016 - 13:53
- важен порядок загрузки паллет в авто. сделал: на скрине экрана ТСД (предыдущий топик) - левая колонка, # - есть порядок погрузки паллет.

на самом деле если смотреть этот экран ТСД - можно заметить - что это плохо. в принципе, мое мнение таково: как только на экране ТСД для персонала появляется какой-то список это есть плохо. В крайнем случае можно выдавать для ИДЕНТИФИКАЦИИ чего-либо, но нельзя выдавать список для определения перечня заданий, последовательности действий.
В этом случае вместо продемонстрированного экрана ТСД д.б. экран "неотвратимого выполнения" - ячейка 06-017-03, сканируй паллету 008489.

В т.ч. отказываться от использования списков надо потому как только одну и ту же работу делает несколько исполнителей - в данном случае паллеты в авто могут грузить и два и три погрузчика - встает вопрос синхронизации. если на экране список - и работает больше одного погрузчика водитель погрузчика выпадает в прострацию - ибо ему НЕПОНЯТНО какую паллету брать из списка - ведь такой список видят и остальные погрузчики, а при погрузке важен порядок погрузки паллет. В случае выдачи "неотвратимого" задания - выдал задание на ячейку-паллету - она числится "на выполнении" и уже следующему погрузчику выдается СЛЕДУЮЩЕЕ задание из невыполненных...
59 - 02.11.2016 - 13:57
Здесь также есть и другие проблемы - например - мало выдать правильную последовательность забора паллет с мест хранения в отгрузку, надо еще обеспечить и правильность именно погрузки в машину, потому что может получиться так, что погрузчик с паллетой№2 подьедет к машине раньше погрузчика с паллетой№1 - ему надо "ждать" пока в авто не загрузится паллета№1...
60 - 02.11.2016 - 14:13
Следующее с чем столкнулся: РАЗМЕЩЕНИЕ.
Вообщем процесс размещения был отработан ранее и все вроде бы нормально, но здесь приемлемый вариант размещения был сконструирован с третьей попытки. В чем особенность: пприняли паллеты на приемке, ок. Погрузчик начинает их размещать по местам хранения с использованием ТСД. Погрузчик жмакает ТСД на номер паллеты, система говорит куда везти - повез... Пока размещение делалось штабелером на, бегунками с роклами, низкая загрузка = ок. Когда один погрузчик тоже ок. но когда два погрузчика - они начинают ДРУГ ДРУГУ МЕШАТЬ, потому что бегают быстро, и получается что размещают в смежные ячейки и мешают друг другу...
В итоге проблему разрулил правильным назначением рейтингов ячеек хранения для зоны товаров этого клиента. Ячейки идут стандартными евроблоками по три ячейки
| 1,3,5 | 7,9,11 | 13,15,17 | 19,21,23 |
и штатно эти ячейки имеют одинаковый рейтинг и размещение идет по увеличению номеров ячеек: заполняется ячейка 1. потом,3, потом 5...
переделал рейтинги, так что заполняение ячеек идет следующим образом: два погрузчика одновременно берут паллеты, первый погрузчик размещает паллету в ячейку 1, второй погрузчик в ячейку 13, потом идут 3 и 15, потом 5 и 17.. - то есть работа погрузчиков идет на расстоянии друг от друга и они не мешают соседу.



Конечно, и у такой схемы есть изъяны - работа по рейтингам ячеек не учитывает реальную скорость передвижения погрузчиков и ориентирована на примерно одинаковый темп погрузчиков, и в данной системе третий погрузчик уже будет в общем случае мешать первым двум. По уму при назначении ячейки куда надо ставить паллету - надо кроме рейтингов ячеек еще ориентироваться на занятость ближайших ячеек (а ближайшие ячейки надо как-то еще описать что они ближайшие) другими погрузчиками... Но это признано пока излишним, я ж не пишу мегапуперсупер складскую систему, а пишу как хобби, для себя больше... да и по опыту работы погрузчиков - размещают ячейки обычно 1 или два погрузчика, третий или в другом месте/участке бегает, или вообще стоит...
61 - 08.11.2016 - 04:41
Система изначально планировалась простая, много работы выполняется оператором вручную. Но потихоньку усложняется всё ;-) (велосипеды! ;-) нач.склада ориентируется на безбумажно-бесчеловечную работу (в чем вообщем я его поддерживаю, в меру своих сил и разумения).

Внедрил автозавершение приемок/отгрузок.
Ранее оператор осматривал текущее состояние заказов, приемок/отгрузок и "завершал" их вручную.
Сделал что при приемке/отгрузке последней плановой единицы ТМЦ - приемка/отгрузка "завершаются" автоматом, соответсвующий заказ на приемку/отгрузку также автоматом "архивируется".
Автоформирование МХ-1/МХ-3 (пока) решил не делать, это остается в сфере ответственности оператора (тем более, что часто при завершении отгрузок еще нет полной информации для исполнения документации по приемкам - такие вещи начинают вылезать сразу, как только начинается учитываться ВОЗДУХ - всякие суммы/цены/прочееаналогичное)
62 - 08.11.2016 - 04:42
Следующее, что надо оперативно сделать - кросс-докинг. Обдумал, в текущую архитектуру укалывается практически отлично. Сделаем, посмотрим...
63 - 09.12.2016 - 03:31
Ну, наконец-то...
Вроде разгребся с оперативными делами, появилась возможность малость попрограммить несделанное.
Сделал перевод отборов на ТСД, раньше ездил один штабелер, можно было и по бумаге. Сейчас началась активная движуха, надо уже автоматизироваться! вечерние и утренние смены - какая бумаг? кто ее выдавать будет и отмечать выполнение?
Так что - вперед!

Все просто: из менюшки идем в "ОТБОР", видим запланированные (еще не выполненные) задания (заказы) на отбор:


Отбор идет "позаказно": проваливаемся в нужный заказ/отбор, видим где сколько заданий:

.
выбираем проход, проваливаемся в

Отредактировано Чучундер; 09.12.2016 в 03:34. Причина: ошибка вставки картинки
64 - 09.12.2016 - 03:55
Тут еще надо выбрать "точку" где идентифицируется оборудование, на котором работаешь...

Наверное, имеет смысл в списке заказов получать (по комбинации клавиш) "справку" о текущей раскладке доступности отбора: каким оборудование сколько можно выполнить, типа:

ЗАКАЗ: NNNNNNNN: 26
-------------------
штабелер = 25
погрузчик = 10
рохля = 6
<?> = 1
65 - 10.12.2016 - 01:54
Одна из основных трудностей - отсутствие УДОБНОГО инструментария для задания по зонам склада рейтингов и порядков обхода. просто-таки адская проблема. Вымыслить без серьезного напряга мозгов пока ничего не получилось. Может у кого-то есть мысли..?
66 - 10.12.2016 - 05:39
Заметка "на манжете": мне кажется, можно немного усовершенствовать семантику императивов.
Британские психологи рекомендуют не использовать прямые директивы (например "Сканируй!", "Сядь!", "Лежать!!!"). Вместо них эффективнее использовать "пристройку сбоку".
Мы как бы встаём сбоку от юзера, и ВМЕСТЕ С НИМ выполняем инструкции.
"Сканируем паллету"
"Нажимаем зелёную кнопку"
"Улыбаемся и машем"
67 - 10.12.2016 - 05:46
Я просто по опыту общения с навителом...
Сначала в тебе копится некоторое недоумение, какого [*****] он тебе приказывает?
Через некоторое время ты начинаешь с ним дискутировать.
Потом просто начинаешь посылать его на кукан в ответ на все грёбаные указания.

«Все здесь только и говорят, что «пошли!» — подумала Алиса, покорно плетясь за Грифоном. — Никогда в жизни мною так не помыкали!»
Гость
68 - 10.12.2016 - 08:23
Выходим из автозака.
Руки держим назад!
Не оглядываемся!
Разговорчики в строю!
69 - 10.12.2016 - 13:49
66-Ирли Бёрд > Согласен, в этом есть смысл.
"А не в амперах ли измеряется сила тока?"
Но, в продуктивной концепции осмысления бессмысленного, я придерживаюсь мнения что там где работа ДОЛЖНА быть сделана - она должна быть сделана! Сегодня - сканируем вместе, завтра - курим вместе, послезавтра забиваем болт на регламенты - тоже вместе!
А без кнута и пряника (пряник желательно черствый, чтобы больнее по голове бить) и волшебного пенделя - все расползается в болото. Сказано "Сканируй!" - значит, е! - "СКАНИРУЙ" - и никаких гвоздей.
.
Но я учту ваше мнение.
70 - 10.12.2016 - 15:16
Ирли правильно сказал про усовершенствование семантики.
Я бы еще добавил про боевую индейскую раскраску выпрыгивающих окон, да и в общем – про чрезмерное увлечение яркими цветовыми схемами. И эти странные напоминалки, что этот бездельник программист опять что-то не сделал еще. Причем нет даже никакого переключателя – "Я понял, больше не напоминать", чтобы можно было как-то избавиться от надоедающих напоминаний.
Мне кажется, программист чрезмерно увлекается самолюбованием - посмотрите Какофия

Небольшой рассказик, не от британских психологов.
Когда компутеры были большие, а экраны маленькие, досталось мне на сопровождение в наследство самобытное произведение на фохпро 2.5 под ДОС. Так вот там таких выпрыгивающих окон с "alarm" было в избытке. Девчонки - операторы очень пугались и боялись продолжать работать, когда выскакивала страшная надпись на красном угрожающем фоне, еще и в сопровождении какого нить beep системы. Ну такой очень креативный был программист, любил бантики.
Я сразу и не понял про какие х-уиты девчонки жалуются: - "я ничё не делала, а она (программа) х-уит, х-уит", оказалось это там на кнопках надпись "Q u i t". Так вот первое, с чего начиналась модернизация, – это убирание всяких ненужных х-уитов и попугайной утомляющей раскраски.
71 - 10.12.2016 - 16:56
как выглядит ошибка глазами пользователя
72 - 10.12.2016 - 20:38
70-Шухер >ну, из ярких цветовых схем - вообщем только сообщения об ошибках задумывались. А на нормально работающей системе их быть не должно, а если они есть - они должны быстро "изыматься" из оборота.

про возможно яркую цветовую схему (ярко-зеленые) или еще как - вполне возможно. если все делаит примерно однотонным и неброским - то на экране тогда большинство инфы ВООБЩЕ НЕ ИМЕЕТ СМЫСЛА ПОКАЗЫВАТь - зачем ее показывать если она не отделена от другой инфы явно? с какой целью показывать? зачем? так что вообщем - при нормальной системе - на экране текстовки должно быть МИНИМУМ - в идеале приказ выполнить какое-то действие и идентификация объекта этого действия. то бишь экраны не должны быть сложнее чем
73 - 10.12.2016 - 20:40
70-Шухер > Зависть - нехорошее чувство ;-)
В преамбуле ветки явно указано:
"...WMS и мысли о великом (ну то есть обо мне)... зачем это все: ...потешить ЧСВ.

"Скромность украшает, когда нет других достоинств"
Вот!
74 - 10.12.2016 - 20:47
А обвеской кучи сообщений-предупреждение - увы, таки да, приходится делать. Потому как там, где требуются интерактивные действия пользователя - это постоянный поток ошибок/неверных выборов. Приходится ставить заглушки/предупреждения во многих местах (на ТСД в WMS их совсем мало ибо это система указующая, а не учетная) в учетных прогах. Можно обойтись от них - можно, т.е. сделать так чтобы ошибочные действия были невозможны в принципе. А это требует ОЧЕНЬ БОЛЬШОЙ РАБОТЫ по проработке и выстраиванию всех бизнес-процессов и постоянной подкрутке их под постоянно меняющиеся условия бизнеса. А эта раюота (налаживание БП) - она ох как нелегка. и стоит недешево. поэтому в итоге все выплывает к дешевым решениям - ставим заплатки если пользователи суются в те места которые нельзя (при условии что мы знаем эти места), а сколько вариантов где вносятся кривые данные только потому что мы не знаем о том. что вот здесь вообщем-то надо чтобы было вот так, а не так как диваол в ухо нашептал...
75 - 10.12.2016 - 20:48
А цветовую схему основных рабочих экранов на ТСд я может переработаю. Текущая схема на экранах ТСД выглядит более приглушенно чем здесь.
76 - 12.12.2016 - 16:03
Чучундер, слыхал, штрафы ввели за агрессивное вождение транспортом? Сейчас в обсуждении новый законопроект, за агрессивное программирование будут штрафовать, ты, пока еще время есть, пересмотри концепси́ю-то свою :)
77 - 12.12.2016 - 19:55
76-Шухер > нивжисть! если агрессивное программмирование позволяет снизит расходы на 300 тыс, то заплатить штарф на 10 тыс - нивапрос!
78 - 12.12.2016 - 20:05
77-Чучундер > Дык штраф-то снизит расходы у агрессивного программиста! Это он не сможет израсходовать эти жалкие 10 тыщ на себя, ибо отняли копеечку. Или у тебя там общий карман с предприятием? А если еще будут отбирать право управления компутером на полгода - год? Каково?

Отредактировано Шухер; 12.12.2016 в 20:06. Причина: !
79 - 12.12.2016 - 20:29
Чучундер, в тебе полкан уже неистребим :)
Вот как привык ты на разводах гаркать - "Равнясь-смирна! Командиры подразделений ко мне!" Так и будешь продолжать по жизни, ибо никакие другие схемы тебе неизвестны и непонятны.
Что тут поделаешь, у каждого свой тип, одни любят чтобы спокойно, уютненько, другим если ехать, то обязательно на заднем колесе, с визгом шин, или мчаться на лыжах с горы сломя голову где-то рядом с точкой невозврата.
80 - 12.12.2016 - 20:39
79-Шухер > Шухер, ты там совсем отупел на природе на подножном корму... ;-)
Всякие методы хороши. И в управлении складским персоналом я попробовал разные подходы. и общался с кучей людей, которые также организовывают работу складского персонала большого количества. И я тебе ответственно заявляю: со складским персоналом гарантию устойчивой работы и выполнения требуемых объемов дает как раз, как это ни печально, армейский принцип: делай то-то в таком-то порядке и должно быть выполнено такой-то объем работы. А для неармейских принципов - на складе достаточно иметь 1-пару ВМЕНЯЕМЫХ человеков. В итоге простая и действенная "армейская структура" взвод-рота. А те кто рулять "взводами-ротами" - они обычно с ТСД не работают...
81 - 12.12.2016 - 20:42
78-Шухер > мое агрессивное программирование ущерба компнии не приносит. а одни профиты. так что если и будут кого штрафовать - то не меня. а если меня - то уж совсем не за мое агрессивное программирование ;-)


К списку вопросов






Copyright ©, Все права защищены