• Что выбрать УТ 10 или 11?

    @Dementor
    программист, архитектор, аналитик
    С точки зрения бухгалтера: да ему фиолетово, так как это программа для торговцев и бухгалтера в ней не работают. Не знаю вашу ситуацию, но возможный максимум - это когда бухгалтера-учетчики формируют счета на оплату и отправляют по почте, но с такой "мартышкиной" работой могут справится и продавцы.

    С точки зрения программиста: есть целый ряд принципиальных различий:
    1) УТ10 - это экранные формы, которые рисуются по аналогии с Visual Studio, т.е. на полотне экранной формы набрасываются в нужных местах укравляющие элементы и прописываются их обработчики событий; такие формы доступны только в режиме "толстого клиента". УТ11 - это управляемые формы, которые создаются по аналогии с DIV-версткой веб-страниц, т.е. основа любой формы это десятки групп, которые вложены друг в друга с указанием порядка группировок подчиненных элементов, размер и вид которых генерируется автоматически (можно влиять но не так абсолютно, как было в УТ10); такие формы доступны не только в версии для ПК, но и через браузер при наличии публикации базы на веб-сервере.
    2) Сильно изменилась система прав. В УТ10 - были роли-должности (продавец, кладовщик и так далее), а в УТ11 - море ролей-функций (право на чтение контактной информации, право на формирование отчетов и так далее) из которых тонко настраивается справочник профилей доступа и уже по назначению такого профиля элементу справочника пользователи у самого пользователя назначаются нужные роли.
    3) Изменилась стратегия проведения. В УТ10 обычно сначала делались проверки доступности остатков, а потом проводки (при чем некоторые проводки могли порождать в глубине общих модулей другие движения, о которых программист не задумывался - к примеру, так себя вели проводки по партиям), и при этом в каждом документе был свой "путь", а в УТ11 в каждом документе все причесали под единую гребенку и сначала делались проводки, а потом контроль "не ушли ли в минус".
    4) С точки зрения отчетов. В УТ10 множество отчетов на базе универсального отчета (который создан на основе объекта построитель отчета), а в УТ11 все отчеты на базе компоновки данных.
    5) Значения по умолчанию. В УТ10 были настройки пользователя, которые мог себе настроить пользователь или админ, и из которого значения по умолчанию можно было подставлять на формы новых документов, отчетов и обработок. В УТ11 от этой системы отказались и перешли к использованию статистики - т.е. если продавец чаще выписывает документы с основного склада, то именно этот склад через некоторое время начнет подставляться, но сначала нужно все указывать вручную; а часть параметров нужно вообще всегда вносить вручную (по этому поводу очень много возмущений на форумах).
    6) Интерфейс. В УТ10 - было несколько вариантов интерфейса, которые создавались в конфигураторе для определенных групп пользователей. В УТ11 есть единый для всех интерфейс, в котором недоступные по правам доступа элементы просто скрыты.

    Это из крупного что я вспомнил. О том, что в УТ11 есть встроенное БСП (такое себе "государство в государстве" со своими законами) я вообще уже молчу.

    Естественно, что еще есть других отличий вагон и маленькая тележка. Что бы неплохо разбираться в обоих системах УТ10 и УТ11 нужно достать вопросы на профессионала и прорешать их. А еще лучше сходить на курсы.
    Ответ написан
    5 комментариев
  • Простой и эффективный способ подсчета просмотров страницы на django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Я бы сделал так:

    models.py
    class PageHit(models.Model):
        url = models.CharField(unique=True)
        count = models.PositiveIntegerField(default=0)

    decorators.py
    from functools import wraps
    from django.db.models import F
    from django.db import transaction
    
    def counted(f):
        @wraps(f)
        def decorator(request, *args, **kwargs):
            with transaction.atomic():
                counter, created = PageHit.objects.get_or_create(url=request.path)
                counter.count = F('count') + 1
                counter.save()
            return f(request, *args, **kwargs)
        return decorator

    views.py
    from .decorators import counted
    
    @counted
    def some_view(request):
        ...

    Репозиторий демонстрационного проекта.

    Или можно написать middleware, который будет делать то же самое для всех запросов.
    Ответ написан
  • Yii2 В базу сохраняется сразу 2 записи. Почему?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброй ночи.
    Почему в действии create нет подобной проверки?
    if ($model->load(Yii::$app->request->post()))
    Подобное
    Yii::$app->getResponse()->redirect('/news');
    можно с успехом заменить на
    return $this->redirect('/news')
    Зачем такая конструкция?
    if ($news = $model->create()) {
    не проще ли писать так
    if ($model->save()) {
     // и получить id
      $model->id;

    Откуда Вы берёте $model->create() и что в там внутри?
    Вот, ещё подсказал Антон Натаров, зачем Вы пишите этот бред с временем?
    (new DateTime())->format('Y-m-d H:i:s');
    В yii2 есть TimestampBehavior, вот через этот класс и настраивайте время, в модели, а не в контроллере.
    Статус тоже проверяйте в модели, в методах beforeSave() или AfterSave()
    Ответ написан
    6 комментариев
  • Yii2 Как получить ID записи с которой я работаю?

    padlyuck
    @padlyuck
    public function create()
        {
            if (!$this->validate()) {
                return null;
            }
            $news = new News();
            $news->create_at = $this->create_at;
            $news->status = 'archive';
            var_dump($news);die;
            return $news->save() ? $news : null;
        }

    >>> в форме var_dump($news) - так же нет id.
    конечно нету, т.к. оно еще не сохранено. уберите вардамп из формы и поменяйте экшен на
    public function actionCreate(){
            $model = new NewsForm();
            $model->create_at = (new DateTime())->format('Y-m-d H:i:s');
            $model->update_at = (new DateTime())->format('Y-m-d H:i:s');
            if ($news = $model->create()) {
               echo 'УРА! Запись' .  $news->id . 'была успешно добавлена';
            }
        }

    если не выведет id - будем дальше ковырять
    Ответ написан
    Комментировать
  • Доступ к views только для не залогинненого пользователя?

    Можно написать декоратор, который будет редиректить залогиненых пользователей.

    Вроде такого:

    def redirect_if_authenticated(view_func):
        @wraps(view_func)
        def dispatch_wrapper(self, request, *args, **kwargs):
            if request.user.is_athenticated:
                return redirect('default')
            return view_func(self, request, *args, **kwargs)
        return dispatch_wrapper
    Ответ написан
    Комментировать
  • Django и React.js как соединить?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Вам больше не нужно использовать django, чтобы рендерить html-ки. Этим будет заниматься react. Вам нужен API сервер, и я так понимаю, подойдет что-нибудь такое (ну или гугл).

    Если можете написать API, то значит нет смысла искать видео-уроки/просто уроки по комбинации Ddjango + React, и вам нужно лишь подтянуть знания по react/redux/react-router или подобной связке.

    Если даже в теории ваша задача не разбивается на 2 части (написание API и написание одностраничного приложения), значит django и react.js в данный момент вам никак не соединить.

    p.s. если есть уже существующий сайт, где используется шаблонизатор от django и рендерятся страницы, то можно взять любую из них, где много динамики (например, удаление и добавление строк в таблице, какие-то xhr запросы и т.д.) и переписать для начала только ее на react.
    Ответ написан
    Комментировать
  • "Junior'ство" Так ли сложно устроиться в СИЛЬНУЮ команду на python по сравнению с php?

    Мне лично удавалось устроиться за пару недель. Но при этом недостаток вакансий для джуниров есть, да.

    Что я делал? Откликался на вакансии для миддлов и даже сеньёров, в некоторые писал, что на самом деле я джуниор, но готов развиваться. И это работает. Я сейчас уже почти 2 месяца на новой работе и мне до сих пор приходят письма от хедхантера о том, что вакансия на которую я откликался больше не актуальна. При том, что на некоторые отклики мне сразу отвечали отказом, большинство просто игнорировало. Ещё несколько компаний проводили со мной собеседования и готовы были дать ответ спустя неделю / две. Кто-то перезванивал, кто-то нет. Зато была пара компаний, которые хотели чтобы я вышел на работу как можно скорее, при том, что это было прямо перед новогодними праздниками. В итоге одна из компаний мне особенно понравилась и я вышел на работу уже на следующую неделю после собеседования. Так что ищите и обрящете.

    P.S. При желании работу можно найти даже за неделю наверное, но тут важно не устроиться лишь бы куда, а попасть в хорошую команду, где ты будешь развиваться как разработчик, а не стагнировать. Иногда стоит отказаться от более высокой зарплаты или более близкого офиса, но понимать, что это с лихвой окупится потом.
    Ответ написан
    1 комментарий
  • Возможно ли использование REST архитектуры для интернет магазина?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    REST можно применить, почти, где угодно. Главное понимать, а зачем? Сейчас вы пытаетесь получить навык не зная, а нужен ли он в том или ином месте? Изучите сначала сферы применения. Какие плюсы от его использования и какие минусы. Не зная ответов на "Зачем?" и "Почему?" про REST нет смысла думать над вопросами "Можно ли применить REST для объекта X?"

    GET /v1/books/ - показать все книги
    GET /v1/books/1 - показать книгу с ID равным 1
    DELETE /v1/books/ - удалить все книги - такое только с соотв.привелегиями
    DELETE /v1/books/1 - удалить книгу с ID равным 1
    POST /v1/books/ - Добавить новую книгу
    PUT /v1/books/1 - Обновить существующую книгу с ID равным ID

    При этом:
    1. То что выдается для одного элемента GET /v1/books/ должно быть точно таким же как и для GET /v1/books/1.
    2. Не давайте хакеру понять причину ошибки, лучше сразу HTTP 404. В клиентском коде, редко когда нужно знать реальную причину ошибки
    3. Указывайте версию API.
    4. С HTTP-методами PATCH, HEAD не заморачивайтесь. Они редко кому нужны

    Можете посмотреть на : https://apigee.com/console/instagram там будет видно что и как можно начудить
    Ответ написан
    Комментировать
  • Опишите процесс работы 1C программиста, как оно?

    Jump
    @Jump
    Системный администратор со стажем.
    Зависит исключительно от работодателя.
    У него и нужно узнавать, такие вещи в должностной инструкции прописываются и в приложении к трудовому договору.
    Кому-то нужен именно программист - просто писать код на языке 1с и ничего более.
    Кому-то нужно чтобы кроме написания кода человек разбирался в предмете - торговля, бухучет, бизнес-процессы, особенности работы птицефабрики, и.т.д.
    Кому-то нужно чтобы кроме написания кода этот человек еще и пользователей консультировал.
    Зачастую на 1с программиста возлагают полностью все что касается 1с - администрирование сервера 1c и SQL, настройка, установка, обновления.
    Некоторым возможно нужно будет компьютеры починять и принтеры заправлять заодно.
    Кое-где могут и двор подметать заставить, по совместительству.

    В общем кого найдете, и как договоритесь.
    Ответ написан
    Комментировать
  • Где искать заказчиков начинающему фрилансеру?

    Chipr
    @Chipr
    UX/UI designer
    Портфолио, резюме есть? Или по кофейной гуще гадать, что из себя представляет yaremi. Этот вопрос выдает в вас дилетанта и не специалиста, а значит вам нужно искать курсы по повышению квалификации.
    Ответ написан
    Комментировать
  • Как отобразить данные из бд, где присутствует html разметка, в html(Django)?

    alexhouse
    @alexhouse
    Full Stack Web Developer Python and Django
    Сперва вырезаешь все ненужное из сообщения, потом фильтром добавляешь нужные тебе теги.

    Вот пример как работать с текстом с помощью фильтров:

    from django import template
    from django.utils.html import conditional_escape
    from django.utils.safestring import mark_safe
    
    register = template.Library()
    
    @register.filter(needs_autoescape=True)
    def initial_letter_filter(text, autoescape=True):
        first, other = text[0], text[1:]
        if autoescape:
            esc = conditional_escape
        else:
            esc = lambda x: x
        result = '<strong>%s</strong>%s' % (esc(first), esc(other))
        return mark_safe(result)


    Подробнее про фильтры: djbook.ru/rel1.9/howto/custom-template-tags.html
    Ответ написан
    Комментировать
  • При сохранении в админке записывать id юзера?

    @javedimka
    Хочу сока
    В общем дошел до дома, подробнее напишу. Если у тебя определено поле для юзера в модели, то ты его можешь вообще вручную выбрать, а если лень это делать то можно так.
    Допустим у тебя есть приложение для публикации статей "articles", в articles/models.py есть модель статьи, в которой есть поле с пользователем который ее добавил, можно добавить еще одно поле для пользователя который ее последний раз редактировал, а можно и не добавлять если нужен только пользователь добавивший статью:
    # остальные импорты опущены 
    from django.conf import settings
    
    
    class Article(models.Model):
        ...
        added_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
                                     related_name="articles_added")
        last_edited_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
                                           related_name="articles_edited")
        ...

    Так как два поля ссылаются на одну модель, нужно определить для них related_name чтобы потом с помощью него можно было работать с ORM, типо чтобы получить все статьи добавленные пользователем:
    *объект_нужного_пользователя*.articles_added.all()

    Потом в файле articles/admin.py определяешь новую модель для "администратирования" этого объекта:

    from django.contrib import admin 
    from .models import Article
    
    
    class ArticleAdmin(admin.ModelAdmin):
        readonly_fields = ("last_edited_by",) # делаем полем рид онли, чтобы нельзя было его отредактировать
    
        def save_model(self, request, obj, form, change):
            if change: # True если изменяется уже существующий объект, False если добавляется новый
                # определяем и записываем пользователя если изменяется существующий объект
                obj.last_edited_by = request.user 
            else:
                # определяем и записываем пользователя если добавляется новый объект
                obj.added_by = request.user 
            super(ArticleAdmin, self).save_model(request, obj, form, change)
    
    
    admin.site.register(Article, ArticleAdmin)

    Все, пробуй. Если не нужен юзер редактировавший статью, то, надеюсь, разберешься что удалить надо?

    Подробнее о save_model():
    https://docs.djangoproject.com/en/1.10/ref/contrib...
    Подробнее о request:
    https://docs.djangoproject.com/en/1.10/ref/request...
    Ответ написан
    1 комментарий
  • Как на yii2 сделать добавление класса active элементу меню при нажатии на раздел?

    @victor-nerd
    если ориентироваться на конкретный uri то например так
    <?= Html::a('Название раздела', ['billing/view', 'client_id' => $clientId], ['class' => 'list-group-item' . (Yii::$app->request->pathInfo == 'billing/view' ? ' active' : '')]) ?>

    если целиком на контроллер то так
    $this->context instanceof \admin\controllers\DeviceController ? ' active' : ''
    Ответ написан
    Комментировать
  • Как реализовать такое меню?

    1) делаешь выпадающее меню дочерним элементом блока/ссылки, при наведении на которую меню должно выпадать.
    2) позиционируешь абсолютно в то место где оно должно отображаться
    3) прячешь его display:none
    4) далее такой финт ушами: .parent:hover .menu {display: block}
    При наведении на родителя будет отображаться меню.

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

    Второй вариант: сделать появление меню по клику. Но тут без js не обойтись.

    Еще нюанс: меню лучше верстать ul-списком, только обнулить все отступы и стили.
    Ответ написан
    Комментировать
  • Что делать, если человек не платит за сайт?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Не рекомендую ничего делать с сайтом. Как бы ни было жалко работу, своя репутация дороже - это на случай, если вы хотите навредить.
    Но:

    1. Вы можете попробовать найти заказчика, для которого написан сайт, написать ему письмо или связаться другим способом и разъяснить, что вся работа по сайту на самом деле была сделана не студией, а лично вами. Можете вкратце пояснить, что студия с вами не расплатилась, и если заказчику нужны будут доработки, то пусть он связывается с Вами напрямую, а не через студию, которая вас "кинула".

    2. Сайт смело можно добавлять в свое портфолио и искать другую работу.

    3. Деньги жалко, но это всего лишь деньги и всего лишь один из тысяч эпизодов этой жизни. Постарайтесь взять от ситуации больше позитива. Испортить репутацию нехорошей студии можно и позже, когда вы поймете, что никаких других вариантов нет, а вы уже нашли другую работу и там вас оценили.
    Ответ написан
    1 комментарий
  • Возможно ли изучить PHP-фреймворк параллельно разрабатывая на нём проект?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Возможно ли изучить PHP-фреймворк параллельно разрабатывая на нём проект?
    Честно говоря, не представляю, как ещё по другому можно изучать фреймворк, в т.ч. PHP.

    плюс ко всему проект должен быть приспособлен к highload.
    Тогда с выбором фреймворка, нужно быть поосторожнее. "Не все фломастеры одинаково вкусные".

    микросервисы, которые обходились без больших фреймворков даже при основательных нагрузках
    Чистый PHP-код, работает быстрее чем любой фреймворк. Я имею в виду, грамотно написанный PHP-код, т.к. в нем отсутствует "лишняя" логика.

    Хочу использовать для разработки фреймворк Yii2. В чём вопрос: смогу ли я параллельно его изучая приступить к разработке
    Скорее всего да, хотя это очень индивидуально.

    и так, чтобы потом 10 раз не пришлось переделывать?
    Скорее всего нет, хотя это тоже очень индивидуально.

    Может, изучить какой-нибудь микрофреймворк?
    Возможно. Зависит от Ваших задач и целей.

    Понятное дело, что без правильно настроенного содержимого моей черепной коробки даже с 10-ти летним опытом в Yii не получится, но всё же, поделитесь опытом и дайте совет :)
    Ну я обычно с новичками, изучение с CodeIgniter'а начинаю, т.к. он не изобилует всеми новыми фишками и плюшками, и в виду отсутствия таких, казалось бы, ставшими уже стандартом вещей, как например "авторизация" - заставляет их включать голову, а не истерично рыться в поисковике на тему "как включить готовую авторизацию", но мне не редко приходиться работать с людьми, которые не очень хорошо разбираются в PHP, Фреймворках и программировании в целом или веб-разработке в целом. Не многие сходу знают, что такое MVC и так далее, а пытаться объяснить человеку, что такое класс и тут же нагружать его "пространствами имён" или "внедрением зависимостей" (и всем остальным) - не очень продуктивно (как показывает практика). Когда у обучаемого 10 лет опыта за спиной, можно сразу с Laravel/Symfony начинать, как минимум, что такое MVC и всё остальное - объяснять редко приходится, скорее, приходится показывать, "как это сделать тут", а "как надо делать вообще" - обучаемый уже и без меня отлично знает.

    P.S. Если Вы напишите больше конкретики, что знаете, что не знаете, что в Вашем понимании HiLoad, какие ресурсы у Вас для этого есть, какие примерно БД и какая примерно задача, какие фреймворки использовали раньше и использовали ли какие-то вообще, на каких языках, какие проекты (теоретически) разрабатывали ранее и т.д. будет гораздо проще дать Вам какую-то более конкретную рекомендацию.
    Ответ написан
    2 комментария
  • Как устроиться на работу бывшему ИП?

    @Oblomingo
    Я в 30 начал программировать на C#. Просто так, как хобби.
    Помимо основной работы (в энергетике), сдал Майкрософтский экзамен и устроился джуниором в одну контору.

    За 4 года сменил две работы, сдал еще около 10-ка экзаменов, прочитал кучу книг по архитектуре. Теперь занимаюсь тем, что пишем энтерпрайз системы для крупных иностранных заказчиков. Месяц назад мне предложили перейти на позицию Senior.

    Я к тому, что никогда не поздно начать, что то новое.
    Ответ написан
    4 комментария
  • Какое направление лучше выбрать при изучении c#?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    1) С# или Visual C#?

    Где вы прочитали это? В природе бывает лишь C# и он описывается стандартами. Visual %LANG_NAME% обычно Microsoft называет свои версии Visual Studio, заточенные под конкретную технологию. Но язык все равно С#.

    2) Что такое платформа .NET Framework?

    Это как бы...фреймворк) То есть вся та среда, в которой исполняется ваша программа, включая виртуальную машину (CLI) и библиотеку стандартных классов (FCL). То есть скомпилировав свое приложение, вам его нужно этой среде передать и она гарантирует наличие всего необходимого, чтобы приложение выполнилось. Пишет о нем отлично местный гуру - Джефри Рихтер в "CLR via C#". Странно было бы, если учебники, скажем, по JavaScript вплотную рассматривали бы V8, правда?)

    3) Недавно прочитал про .NET CORE.

    Это альтернативная реализация .NET Framework. Оно иначе работает и FCL там построена иначе. Но C# там точно такой же, как и на "большом" фреймворке, так что начав учить его вы ничего не потеряете. А уж MS позаботится, чтобы их сопутствующие технологии тоже не сильно отличались (ASP.NET MVC от ASP.NET Core, EntityFramework от EntityFramework Core.

    Вывод: если вы только начинаете, то вам без разницы, хоть под Core, хоть под .NET Framework, язык там один и тот же, консольные приложения такие же. Просто некоторые классы переехали в отдельные сборки. С нуля же лезть в фреймворки (ASP.NET MVC/Core, WPF, EntityFramework (без знания ADO.NET)) - рановато, освойтесь с самим языком, базовыми библиотеками.
    Ответ написан
    2 комментария
  • Какое направление лучше выбрать при изучении c#?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    "Сейчас я - эникейщик программист разрабатывающий что угодно из чего угодно и как угодно )"

    Если вы программист - устройтесь программистом в крупную компанию.
    Если вы не программист, учитесь пользоваться поиском, например поиск вакансий и читайте требования под ними. Учите так, чтобы могли сказать "да, я соответствую этим требованиям" и идите на интервью.

    Я вижу в крупных компаниях огромное количество людей, которые знают гораздо меньше, чем хотелось бы. При минимальных имеющихся навыках, наверное дело не столько в том, что учить, а в том чтобы целенаправленнее заняться поиском работы.
    Ответ написан
    2 комментария
  • Какое направление лучше выбрать при изучении c#?

    @d-stream
    Готовые решения - не подаю, но...
    Если вкратце, то практически любой язык программирования как таковой осваивается за несколько дней. А вот все что вокруг - те же фреймворки - их только общий обзор может занять месяцы.
    Соответственно когда говорят просто "c#" или "visual c#" - то скорее подразумевают опыт относительно фреймворков. Если же говорят о чем-то специфичном, то там во главе угла именно специфичность, а язык указывается вторично

    И да, найти хорошую работу и зарабатывать хорошие деньги - это лучше не программировать, а жениться на дочке миллиардера =)
    Ответ написан
    2 комментария