Php category как выбрать название компании sell: Нейминг, как придумать название компании и обеспечить узнаваемость бренда.

Содержание

Фичи Django ORM, о которых вы не знали

ORM весьма полезны для разработчиков, но абстрагирование доступа к базе данных имеет свою цену. Разработчики, которые решили покопаться в базе данных, обнаруживают, что некоторые вещи можно было сделать проще. Представляем вашему вниманию 9 советов по работе с базами данных в Django.

Агрегация с filter

До Django 2.0, если мы хотели получить что-нибудь вроде общего количества пользователей и общего количества активных пользователей, приходилось пользоваться условными выражениями:

from django.contrib.auth.models import User
from django.db.models import (
    Count,
    Sum,
    Case,
    When,
    Value,
    IntegerField,
)
User.objects.aggregate(
    total_users=Count('id'),
    total_active_users=Sum(Case(
        When(is_active=True, then=Value(1)),
        default=Value(0),
        output_field=IntegerField(),
    )),
)

В Django 2.0 был добавлен аргумент

filter для агрегатных функций, что сильно упростило процесс:

from django.contrib.auth.models import User
from django.db.models import Count, F
User.objects.aggregate(
    total_users=Count('id'),
    total_active_users=Count('id', filter=F('is_active')),
)

Коротко и ясно.

Если вы используете PostgreSQL, то два запроса будут выглядеть следующим образом:

SELECT
    COUNT(id) AS total_users,
    SUM(CASE WHEN is_active THEN 1 ELSE 0 END) AS total_active_users
FROM
    auth_users;
SELECT
    COUNT(id) AS total_users,
    COUNT(id) FILTER (WHERE is_active) AS total_active_users
FROM
    auth_users;

Результаты QuerySet в виде именованного кортежа

В Django 2.0 в values_list был добавлен новый атрибут под названием named. Если установить его значение равным True, то в результате мы получим QuerySet в виде списка с именованными кортежами:

> user.objects.values_list(
    'first_name',
    'last_name',
)[0]
(‘Haki’, ‘Benita’)
> user_names = User.objects.values_list(
    'first_name',
    'last_name',
    named=True,
)
> user_names[0]
Row(first_name='Haki', last_name='Benita')
> user_names[0].first_name
'Haki'
> user_names[0].last_name
'Benita'

Пользовательские функции

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

Допустим, у нас есть модель Report с полем duration. Мы хотим найти среднее всех значений этого поля:

from django.db.models import Avg
Report.objects.aggregate(avg_duration=Avg('duration'))
> {'avg_duration': datetime.timedelta(0, 0, 55432)}

Здорово, но одно только среднее значение нам мало что даёт. HINT: No function matches the given name and argument types. You might need to add explicit type casts.

Упс… PostgreSQL не поддерживает stddev на поле типа interval — нужно привести его к числу, прежде чем мы сможем использовать STDDEV_POP.

Как вариант можно использовать функцию EXTRACT:

SELECT
    AVG(duration),
    STDDEV_POP(EXTRACT(EPOCH FROM duration))
FROM 
    report;
      avg       |    stddev_pop    
----------------+------------------
 00:00:00.55432 | 1.06310113695549
(1 row)

А как это реализовать в Django? Правильно, с помощью пользовательских функций:

# common/db.py
from django.db.models import Func
class Epoch(Func):
   function = 'EXTRACT'
   template = "%(function)s('epoch' from %(expressions)s)"

В итоге наша функция выглядит следующим образом:

from django.db.models import Avg, StdDev, F
from common.db import Epoch
Report.objects.aggregate(
    avg_duration=Avg('duration'), 
    std_duration=StdDev(Epoch(F('duration'))),
)
{'avg_duration': datetime.timedelta(0, 0, 55432),
 'std_duration': 1.06310113695549}

Обратите внимание на использование F-выражения в вызове Epoch.

Ограничиваем время выполнения запроса

Это, наверное, самый простой и самый важный совет. Все мы люди и нам свойственно совершать ошибки. Мы не можем абсолютно всё предусмотреть наперёд.

В отличие от других неблокирующих серверов приложений вроде Tornado, asyncio и даже Node, Django обычно использует синхронные рабочие процессы. Это значит, что, когда пользователь выполняет длительную операцию, рабочий процесс останавливается, и никто не может его использовать до тех пор, пока операция не завершится.

Конечно, вряд ли кто-то использует Django в продакшене только с одним процессом.

В большинстве Django-приложений большая часть времени тратится на ожидание запросов к базе данных. Поэтому будет неплохо начать с ограничения времени выполнения SQL-запросов.

Можно установить глобальный тайм-аут таким образом:

# wsgi.py
from django.db.backends.signals import connection_created
from django.dispatch import receiver
@receiver(connection_created)
def setup_postgres(connection, **kwargs):
    if connection.vendor != 'postgresql':
        return
    
    # Тайм-аут через 30 секунд.
    with connection.cursor() as cursor:
        cursor.execute("""
            SET statement_timeout TO 30000;
        """)

Почему wsgi.py? Таким образом затрагиваются только рабочие процессы, а не какие-нибудь аналитические запросы, задачи cron и т.д.

Тайм-аут также можно установить на уровне пользователя:

postgresql=#> alter user app_user set statement_timeout TO 30000;
ALTER ROLE

Примечание На сетевые взаимодействия можно потратить уйму времени. Поэтому при вызове удалённой службы убедитесь, что установили тайм-аут:

import requests
response = requests.get(
    'https://api.slow-as-hell.com',
    timeout=3000,
)

LIMIT

Это немного связано с предыдущим пунктом в плане ограничений. Иногда мы хотим, чтобы пользователи могли создавать отчёты и, возможно, экспортировать их в таблицу. Такая функциональность всегда находится под подозорением, когда что-то идёт не так.

Нередко встречаются пользователи, которые считают целесообразным экспортировать все записи с начала времён в разгар рабочего дня. Также такие пользователи зачастую считают своим долгом открыть другую вкладку и попробовать снова, т.к. прошлая попытка успехом не увенчалась.

И здесь на помощь спешит LIMIT.

Давайте попробуем ограничить какой-нибудь запрос сотней записей:

# плохой пример
data = list(Sale.objects.all())[:100]

Это — худшее, что вы можете сделать. Вы просто поместили дофигаллион записей в память, чтобы вернуть всего лишь первые 100 из них.

Попробуем ещё раз:

data = Sale.objects.all()[:100]

Уже лучше. Django использует оператор SQL limit для получения только первых ста записей.

Итак, ограничение добавили, пользователи под контролем, всё хорошо. Но одна проблема все ещё есть — пользователь запросил все записи, и мы вернули ему 100. Теперь он думает, что их всего 100, что, конечно же, не так.

Вместо того чтобы просто возвращать первые 100 записей, давайте будем выбрасывать исключение, если записей на самом деле больше:

LIMIT = 100
if Sales.objects.count() > LIMIT:
    raise ExceededLimit(LIMIT)
return Sale.objects.all()[:LIMIT]

Это сработает, но мы просто добавили ещё один запрос.

Можем ли мы сделать лучше? Наверное, можем:

LIMIT = 100
data = Sale.objects.all()[:(LIMIT + 1)]
if len(data) > LIMIT:
    raise ExceededLimit(LIMIT)
return data

Вместо того, чтобы запросить первые 100 записей, мы запрашиваем 100 + 1 = 101 запись. Если 101 запись существует, то этого достаточно, чтобы понять, что записей больше 100. Другими словами, запрос LIMIT + 1 записи — меньшее, что можно сделать, чтобы убедиться, что запрос вернёт количество записей не больше, чем LIMIT.

Запомните этот трюк с LIMIT + 1, порой может пригодиться.

Select for update … of

К этому мы пришли через боль и страдания. Посреди ночи у нас начали появляться ошибки по поводу тайм-аутов транзакций из-за блокировок в базе данных.

Общая схема работы с транзакциями в нашем коде выглядит следующим образом:

from django.db import transaction as db_transaction
...
with db_transaction.atomic():
  transaction = (
        Transaction.objects
        .select_related(
            'user',
            'product',
            'product__category',
        )
        .select_for_update()
        .get(uid=uid)
  )
    ...

Управление транзакциями обычно связано со свойствами пользователя и продукта, поэтому мы часто использовали select_related для принудительного объединения и сохранения некоторых запросов.

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

Итак, вы видите, в чём проблема? Нет? Мы тоже не видели.

У нас были ETL-процессы, работающие в ночное время с таблицами пользователей и продуктов. Эти ETL выполняли обновление и вставку, поэтому они также блокировали таблицы.

Так в чём была проблема? Когда select_for_update используется вместе с select_related, Django пытается заблокировать все таблицы в запросе.

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

Как только мы поняли, в чём суть проблемы, мы стали искать способ заблокировать только нужную таблицу — таблицу транзакций. К счастью, новая опция для select_for_update как раз стала доступна в Django 2.0:

from django.db import transaction as db_transaction
...
with db_transaction.atomic():
  transaction = (
        Transaction.objects
        .select_related(
            'user',
            'product',
            'product__category',
        )
        .select_for_update(
            of=('self',)
        )
        .get(uid=uid)
  )
  ...

Используя опцию of, мы можем явно указать, какие таблицы надо заблокировать; self — специальное ключевое слово, указывающее, что мы хотим заблокировать модель, с которой мы работаем, в данном случае это

Transaction.

На данный момент эта опция доступна только для PostgreSQL и Oracle.

Индексы внешних ключей

При создании модели Django автоматически создаёт B-Tree индекс для любого внешнего ключа. Эти индексы порой занимают много места и в то же время не всегда нужны.

Классический пример — модель с отношением многие-ко-многим:

class Membership(Model):
    group = ForeignKey(Group)
    user = ForeignKey(User)

В этой модели Django неявно создаст два индекса: один для user и другой для group.

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

class Membership(Model):
    group = ForeignKey(Group)
    user = ForeignKey(User)
    class Meta:
        unique_together = (
           'group',
           'user',
        )

Кроме того, unique_together создаст индекс для обоих полей. Таким образом, мы получаем одну модель с двумя полями и тремя индексами.

В зависимости от того, что мы собираемся делать с моделью, во многих случаях мы можем отбросить индексы внешних ключей и оставить только созданный уникальным ограничением:

class Membership(Model):
    group = ForeignKey(Group, db_index=False)
    user = ForeignKey(User, db_index=False)
    class Meta:
        unique_together = (
            'group',           
            'user',
        )

Удаление лишних индексов сделает вставку и обновление быстрее, кроме того, наша база данных теперь весит меньше, что всегда хорошо.

Порядок столбцов в составном индексе

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

Порядок столбцов в индексе очень важен.

В примере выше у нас бы создавалось дерево сначала для групп, а затем для каждой группы ещё по дереву для всех пользователей в группе.

Секрет состоит в том, чтобы в составных индексах B-Tree делать вторичные индексы как можно меньше. Другими словами, столбцы с большей кардинальностью (больше разных значений) должны идти первыми.

В нашем примере разумно предположить, что пользователей больше, чем групп, поэтому столбец с пользователями мы выносим на первый план, чтобы сделать вторичный индекс меньше:

class Membership(Model):
    group = ForeignKey(Group, db_index=False)
    user = ForeignKey(User, db_index=False)
    class Meta:
        unique_together = (
            'user',
            'group',
        )

Это всего лишь совет, а не правило, которого нужно обязательно придерживаться. Конечная индексация должна быть оптимизирована в каждом случае соответствующим образом. На что нужно обратить внимание, так это на неявные индексы и важность порядка столбцов в составных индексах.

BRIN-индексы

Индекс B-Tree имеет структуру дерева. Стоимость поиска одного значения — это высота дерева + 1 при случайном доступе к дереву. Это делает B-Tree индексы идеальными для уникальных ограничений и некоторых диапазонных запросов.

Проблема B-Tree индексов заключается в том, что они могут занимать много места.

Зачастую кажется, что нет никаких альтернатив, но базы данных предлагают другие типы индексов для разных случаев.

В Django 1.11 появилась новая опция Meta для создания индексов на модели. Это даёт нам возможность изучить другие типы индексов.

В PostgreSQL есть очень полезный тип индексов под названием BRIN (Block Range Index). В некоторых случаях этот тип индексов может быть более эффективным, чем B-Tree.

Давайте посмотрим, что об этом говорится в официальной документации:

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

Чтобы понять это утверждение, важно понимать, как работает индекс BRIN. Как следует из названия, BRIN создаёт мини-индекс по ряду соседних блоков в таблице. Индекс очень маленький, и он может только сказать, находится ли определённое значние или нет в диапазоне индексированных блоков.

Давайте посмотрим на упрощённый пример работы BRIN, чтобы лучше со всем разобраться.

Допустим, у нас есть эти значения в столбце, каждое из которых является одним блоком:

1, 2, 3, 4, 5, 6, 7, 8, 9

Теперь создадим три диапазона для смежных блоков:

[1,2,3], [4,5,6], [7,8,9]

Для каждого диапазона мы будем хранить его минимальное и максимальное значения:

[1–3], [4–6], [7–9]

Попробуем найти 5, используя этот индекс:

  • [1–3] —  точно не здесь;
  • [4–6] —  возможно, здесь;
  • [7–9] —  точно не здесь.

Благодаря этому индексу наш поиск ограничивается блоками 4–6.

Возьмём другой пример, в этот раз значения уже не отсортированы:

[2,9,5], [1,4,7], [3,8,6]

А вот наш индекс с минимальным и максимальным значениями для каждого диапазона:

[2–9], [1–7], [3–8]

Попробуем найти 5:

  • [2–9] — возможно, здесь;
  • [1–7] —  возможно, здесь;
  • [3–8] —  возможно, здесь.

Этот индекс бесполезен — он не просто не ограничил наш поиск, но ещё и вынудил нас проделать больше работы, так как мы запросили и индекс, и всю таблицу.

Вернёмся к документации:

…значение индексируемого столбца имеет некоторую естественную корреляцию с физическим положением строки в таблице.

Вот оно что. Чтобы извлечь из BRIN-индекса максимальную пользу, значения в столбце должны быть отсортированы или сгруппированы на диске.

Возвращаясь к Django, какое поле у нас часто индексируется и с наибольшей вероятностью будет естественным образом отсортировано на диске? Правильно, auto_now_add.

Обычно в моделях Django это выглядит так:

class SomeModel(Model):    
    created = DatetimeField(
        auto_now_add=True,
    )

При использовании auto_now_add Django автоматически заполняет поле временем создания записи. Созданное поле зачастую используется в запросах, поэтому его часто индексируют.

Добавим BRIN-индекс:

from django.contrib.postgres.indexes import BrinIndex
class SomeModel(Model):
    created = DatetimeField(
        auto_now_add=True,
    )
    class Meta:
        indexes = (
            BrinIndex(fields=['created']),
        )

Чтобы ощутить разницу в размерах, создадим таблицу с ~2 млн записей, где есть отсортированное поле даты:

B-Tree индекс: 37 MB
BRIN индекс: 49 KB

Всё верно, здесь нет никакой ошибки.

При создании индексов следует учитывать не только их размер. Однако теперь, учитывая поддержку индексов с Django 1.11, мы можем легко добавлять новые типы индексов в наши приложения и делать их легче и быстрее.

Перевод статьи «9 Django Tips for Working with Databases»

Как отслеживать биржевые данные в Google Таблицах

Диск Google — это не просто место для хранения файлов; это еще и мощный набор веб-приложений для повышения продуктивности. Этот урок будет сосредоточен на использовании Google Таблиц — веб приложения от Google  для работы с таблицами, и на том, как работать в них с биржевыми данными.

Акции представляют собой долевую собственность компании. Акции торгуются на таких биржах как: Нью-Йоркская фондовая биржа (NYSE), NASDAQ, Лондонская фондовая биржа (LSE) и многие другие. Вы можете покупать и продавать акции через брокеров.

Google Финансы — это средство для отслеживания акций.

Google также предлагает Google Финансы как способ для просмотра биржевых данных, включая диаграммы для просмотра производительности компании на протяжении определенного времени. Самое приятное то, что Google предлагает способ легко использовать данные из их службы Google Финансы в Таблицах.

В этом уроке вы узнаете, как использовать функцию GOOGLEFINANCE в Google Таблицах для того, чтобы получить данные от Google Финансов и вставить их в электронную таблицу.

Чтобы начать работу с уроком, убедитесь, что у вас есть аккаунт Google и перейдите в Диск Google. Создайте новую таблицу и продолжайте читать, чтобы узнать больше.

Зачем нужно отслеживать данные об акциях?

Для многих отслеживание данных акций является хобби. Цена акций для многих считается показателем успешности компании. Если вы заинтересованы в успехе компании, можете следить за ценой акций для его оценки.

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

Скриншот сверху показывает цену акций в Google Финансах, в то время как нижний показывает формулу в Google Таблицах, которая автоматически импортирует цену в электронную таблицу.

Самое главное: биржевые цены постоянно меняются. Если вы хотите контролировать цены на акции, вам нужен простой способ поддерживать ваши данные в актуальном состоянии.

Независимо от того, почему вы отслеживаете биржевые данные, Google Таблицы с подключением к Google Финансам являются самым простым способом, который я нашел, чтобы свести данные об акциях в электронную таблицу. Давайте научимся, как это сделать.

Как отслеживать акции с помощью функции GOOGLEFINANCE (короткий видео-урок)

На скриншоте ниже продемонстрировано, как построить электронную таблицу с динамическим отслеживанием акций в Google Таблицах.

Чтобы узнать больше об использовании функции GOOGLEFINANCE, ознакомьтесь с моей пошаговой инструкцией ниже.

Получение биржевых данных

Первое, что я предпочитаю сделать при настройке таблицы анализа акций — это выбрать компании, за которыми я буду следить. Вам нужно узнать их биржевые коды, которые представлены несколькими буквами для идентификации компании на фондовых биржах. Например кодом акций компании Apple является AAPL, в то время как код корпорации Майкрософт — это MSFT.

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

Обычно вы можете найти биржевые коды компаний через быстрый поиск, или можно использовать такой инструмент как поиск Yahoo Финансы для поиска кода акций компании по вашему выбору.

Когда я сравниваю компании, я создаю список биржевых кодов в Google Таблице в столбик:

Начните с создания списка биржевых кодов в столбце таблицы.

В Таблицах Google, мы можем использовать функцию =GOOGLEFINANCE для импорта биржевых данных. Чтобы начать, щелкните ячейку и начните вводить функцию.

Нет необходимости вводить полное имя компании для каждого биржевого кода. Напишем нашу первую функцию GOOGLEFINANCE и посмотрим на биржевой код и название компании. Вот как выглядит формула, которую мы будем использовать:

=GOOGLEFINANCE(биржевой код,"name")

В приведенном ниже примере я использую формулу в ячейке A2, которая выводит название «Volkswagen AG» по биржевому коду VLKAY. Затем просто тянем формулу вниз для вывода названия компании для каждого биржевого кода.

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

Текущий курс акций

Чтобы получить цену акции, используйте формулу GOOGLEFINANCE следующим образом:

=GOOGLEFINANCE(биржевой код,"price")

Можно ввести символ акции в скобках, или передать формуле номер ячейки с биржевым кодом для получения цены. На скриншоте ниже вы видите использование формулы, можно потянуть ее вниз, чтобы получить цены акций для каждой компании.

Цены, которые Таблицы Google получают — это текущие цены акций и они будут обновляться при каждом открытии таблицы.

Цена акции за определенную дату

Что делать, если вы хотите зафиксировать цену акции за определенный день или узнать сколько акция стоила в прошлом? Мы можем сделать это в нашей таблице.

Давайте используем вот такую формулу, чтобы получить цену акции Amazon на момент закрытия торгов 1 февраля:

=GOOGLEFINANCE("AMZN","price",date(2017,2,7))

Эта формула выводит не только цену акции на момент закрытия торгов, но также выводит и дату.

Обратите внимание, что эта формула создает сетку с некоторыми дополнительными данными, включая заголовки «Дата» и «Закрытие», а также дату и цену на момент закрытия.

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

=INDEX(GOOGLEFINANCE("AMZN","price",date(2017,2,7)),2,2)

Я просто обернул формулу в INDEX, а затем добавил «,2,2)» в конце формулы, чтобы вывести только цену акции без заголовков.

Оберните ваши формулы в INDEX чтобы выводить исключительно цену акции.

История цены на акции

Ранее я упоминал, что цена акции отражает производительность компании и будущие ожидания. Отслеживание цен на акции за определенный период времени — это отличный способ, чтобы понять, как инвесторы относятся к компании.

Вот функция, которую можно использовать для получения истории цены акции:

=GOOGLEFINANCE("F", "price", DATE(2017,1,1), DATE(2017,2,11), "DAILY")

Давайте разберем эту формулу:

  • Формула начинается стандартным =GOOGLEFINANCE.
  • «F» в скобках указывает функции получать данные для компании Ford, акции которой мы выбрали.
  • Далее мы передаем функции атрибут «price», чтобы указать, что мы хотим получить цену за определенный период времени.
  • Затем мы указываем даты начала и окончания периода, данные за который хотим получить.
  • Наконец я указал «DAILY» в скобках, чтобы сообщить Таблицам, что мы хотим получить ежедневные котировки акций.

На скриншоте ниже вы увидите, что результаты выводятся в строках таблицы:

Формула, введенная выше, выводит список ежедневных биржевых цен за определенный период.

Теперь у вас есть список цен на акции за определенный период времени. Вы можете ввести любой период, и Таблицы автоматически будут получать данные из Google Финансов. Далее легко превратить данные в диаграммы непосредственно внутри таблицы.

Теперь у нас есть отличное представление о ценах акций. Давайте узнаем, какие еще полезные финансовые данные мы можем вставить в Таблицах.

Соотношение цены к доходу (P/E)

Коэффициент цена-доход, или P/E является общим методом оценки компаний. Он делит стоимость акций компании на ее доходы. Широко признанный принцип оценки акций состоит в том, что высокий P/E коэффициент указывает на будущий рост акций.

Чтобы получить P/E коэффициент акций от Google Финансов, используйте следующую формулу:

=GOOGLEFINANCE(биржевой код,"pe")

В примере ниже я буду получать P/E коэффициент акций с помощью ссылки на ячейку, вот пример формулы:

=GOOGLEFINANCE(A3,"pe")

Затем просто перетаскиваем формулу вниз, чтобы вывести коэффициент для всех моих выбранных акций.

Как читать коэффициент P/E? Вам необходимо исследовать аналогичные компании, чтобы понять смысл этих значений. Для акций в областях с более высокими темпами роста, таких как технологии (например Google или Facebook) коэффициент P/E будет выше, чем, например, у коммунальных компаний.

Если вы хотите узнать, как рассчитывается P/E коэффициент, посмотрите это определение от Investopedia.

Рост и Падение цен за последние 52 недели

Некоторые акции сильно меняются в цене в течение года. Это поможет следить за их колебаниями.

Чтобы получить самую высокую цену, которую имели акции в течение последних 52 недель, используйте следующую формулу:

=GOOGLEFINANCE(биржевой код,"high52")

Вы также можете получить самую низкую цену закрытия акции за последние 52 недели:

=GOOGLEFINANCE(биржевой код,"low52")

На скриншоте ниже вы можете увидеть, как я применил эти формулы к списку акций:

Я часто отслеживаю, где торгуются акции в привязке к их высшей и низшей цене. Если я собираюсь получить прибыль и продать акции, я стараюсь убедиться, что акции не находятся в низкой точке.

Эти формулы содержат лишь некоторые из доступных атрибутов, которые Google Таблицы могут получать от Google Финансов. Использование сочетаний этих факторов может помочь вам отслеживать ключевые финансовые показатели и исследовать компании — будь то для удовольствия или прибыли.

Для закрепления и дальнейшего изучения

В этом уроке вы использовали Google Таблицы, чтобы создать электронную таблицу для отслеживания ситуации на бирже. Является ли это для вас просто хобби или обучающим упражнением, или может быть потенциальным источником дохода, Таблицы имеют простую интеграцию с Google Финансами для того, чтобы вы могли отслеживать котировки интересующих вас акций.

Интересуетесь ли вы котировками акций? Используете ли вы Google Таблицы или другой инструмент для отслеживания ваших данных? Расскажите мне об этом в комментариях.

Поля и группы полей

В данном разделе описывается работа с дополнительными полями и группами полей через API

Оглавление

Общая информация

  • Пользовательские поля могут быть созданы для сделок, контактов, компаний, списков, сегментов и покупателей
  • Адреса методов зависят от сущности

Список полей сущности

Метод

GET /api/v4/leads/custom_fields

GET /api/v4/contacts/custom_fields

GET /api/v4/companies/custom_fields

GET /api/v4/customers/custom_fields

GET /api/v4/customers/segments/custom_fields

GET /api/v4/catalogs/{catalog_id}/custom_fields

Описание

Метод позволяет получить список полей сущности в аккаунте.

Ограничения

Метод возвращает до 50 полей за один запрос.
Метод доступен всем пользователям аккаунта.

Заголовок типа данных при успешном результате

Content-Type: application/hal+json

Заголовок типа данных при ошибке

Content-Type: application/problem+json

HTTP коды ответа
Код ответаУсловие
200 Запрос выполнен успешно
422 Запрос не может быть обработан, подробности в теле ответа
401 Пользователь не авторизован
400 Переданы некорректные данные. Подробности доступны в теле ответа
Параметры ответа

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

ПараметрТип данныхОписание
id int ID поля
name string Название поля
code string Код поля, по-которому можно обновлять значение в сущности, без передачи ID поля
sort int Сортировка поля
type int Тип поля. Список доступных полей
entity_type string Тип сущности (leads, contacts, companies, segments, customers, catalogs)
is_predefined bool Является ли поле предустановленным. Данный ключ возвращается только при получении списка полей контактов и компаний
is_deletable bool Доступно ли поле для удаления. Данный ключ возвращается только при получении списка полей контактов и компаний
is_visible bool Отображается ли поле в интерфейсе списка. Данный ключ возвращается только при получении списка полей списков (каталогов)
is_deletable bool Можно ли удалить поле из интерфейса. Данный ключ возвращается только при получении списка полей списков (каталогов)
is_required bool Обязательно ли поле для заполнения при создании элемента списка. Данный ключ возвращается только при получении списка полей списков (каталогов)
settings array|null Настройки поля. Данный ключ возвращается только при получении списка полей списков (каталогов)
remind string|null Когда напоминать о дне рождения (never – никогда, day – за день, week – за неделю, month – за месяц). Значение данного поля доступно только для поля типа birthday. Данный ключ возвращается только при получении списка полей контактов, сделок и компаний
enums array|null Доступные значения для поля. Значение данного поля доступно только для полей с поддержкой enum
enums[0] object Доступное значение для поля
enums[0][id] int ID значения
enums[0][value] string Значение
enums[0][sort] int Сортировка значения
nested array|null Вложенные значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
nested[0] object Модель вложенного значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
nested[0][id] int ID вложенного значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
nested[0][parent_id] int ID родительского вложенного значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
nested[0][value] string Значение вложенного значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
nested[0][sort] int Сортировка вложенного значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
is_api_only bool Доступно ли поле для редактирования только через API. Данный ключ возвращается только при получении списка полей контактов, сделок и компаний
group_id string|null ID группы полей, в которой состоит данное поле. Данный ключ возвращается только при получении списка полей контактов, сделок, покупателей и компаний
required_statuses array|null Обязательные поля для смены этапов. Данный ключ возвращается только при получении списка полей контактов, сделок и компаний
required_statuses[0] object Модель обязательного поля для смены этапов. Данный ключ возвращается только при получении списка полей контактов, сделок и компаний
required_statuses[0][status_id] int ID статуса, для перехода в который данное поле обязательно к заполнению. Данный ключ возвращается только при получении списка полей контактов, сделок и компаний
required_statuses[0][pipeline_id] int ID воронки, для перехода в который данное поле обязательно к заполнению. Данный ключ возвращается только при получении списка полей контактов, сделок и компаний
tracking_callback string Сallback js-функция, которая будет выполнена на странице с CRM Plugin и формой amoCRM при отправке данных. Данное значение возвращается для полей типа tracking_data
Пример ответа

        
{
    "_total_items": 2,
    "_page": 1,
    "_page_count": 10,
    "_links": {
        "self": {
            "href": "https://example.amocrm.ru/api/v4/leads/custom_fields?limit=2&page=1"
        },
        "next": {
            "href": "https://example.amocrm.ru/api/v4/leads/custom_fields?limit=2&page=2"
        },
        "last": {
            "href": "https://example.amocrm.ru/api/v4/leads/custom_fields?limit=2&page=10"
        }
    },
    "_embedded": {
        "custom_fields": [
            {
                "id": 4439091,
                "name": "Пример текстового поля",
                "sort": 504,
                "type": "text",
                "is_predefined": false,
                "settings": null,
                "remind": null,
                "is_api_only": false,
                "group_id": null,
                "enums": null,
                "required_statuses": [
                    {
                        "status_id": 41221,
                        "pipeline_id": 3142
                    }
                ],
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/custom_fields/4439091/"
                    }
                }
            },
            {
                "id": 4440043,
                "name": "Пример поля с типом 'data'",
                "sort": 505,
                "type": "date",
                "is_predefined": false,
                "settings": null,
                "remind": null,
                "is_api_only": false,
                "group_id": null,
                "enums": null,
                "required_statuses": null,
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/custom_fields/4440043/"
                    }
                }
            }
        ]
    }
}
        
    

Получение поля сущности по его ID

Метод

GET /api/v4/leads/custom_fields/{id}

GET /api/v4/contacts/custom_fields/{id}

GET /api/v4/companies/custom_fields/{id}

GET /api/v4/customers/custom_fields/{id}

GET /api/v4/customers/segments/custom_fields/{id}

GET /api/v4/catalogs/{catalog_id}/custom_fields/{id}

Описание

Метод позволяет получить поле сущности по его ID.

Ограничения

Метод доступен всем пользователям аккаунта.

Заголовок типа данных при успешном результате

Content-Type: application/hal+json

Заголовок типа данных при ошибке

Content-Type: application/problem+json

HTTP коды ответа
Код ответаУсловие
200 Запрос выполнен успешно
422 Запрос не может быть обработан, подробности в теле ответа
401 Пользователь не авторизован
Параметры ответа

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

ПараметрТип данныхОписание
id int ID поля
name string Название поля
code string Код поля, по-которому можно обновлять значение в сущности, без передачи ID поля
sort int Сортировка поля
type int Тип поля. Список доступных полей
entity_type string Тип сущности (leads, contacts, companies, segments, customers, catalogs)
is_predefined bool Является ли поле предустановленным. Данный ключ возвращается только при получении поля контакта и компании
is_deletable bool Доступно ли поле для удаления. Данный ключ возвращается только при получении поля контакта и компании
is_visible bool Отображается ли поле в интерфейсе списка. Данный ключ возвращается только при получении списка полей списков (каталогов)
is_deletable bool Можно ли удалить поле из интерфейса. Данный ключ возвращается только при получении списка полей списков (каталогов)
is_required bool Обязательно ли поле для заполнения при создании элемента списка. Данный ключ возвращается только при получении списка полей списков (каталогов)
settings array|null Настройки поля. Данный ключ возвращается только при получении поля списка (каталога)
remind string|int Когда напоминать о дне рождения (never – никогда, day – за день, week – за неделю, month – за месяц). Значение данного поля доступно только для поля типа birthday. Данный ключ возвращается только при получении поля контакта, сделки и компании
enums array|null Доступные значения для поля. Значение данного поля доступно только для полей с поддержкой enum
enums[0] object Доступное значение для поля
enums[0][id] int ID значения
enums[0][value] string Значение
enums[0][sort] int Сортировка значения
is_api_only bool Доступно ли поле для редактирования только через API. Данный ключ возвращается только при получении поля контакта, сделки и компании
group_id string|null ID группы полей, в которой состоит данное поле. Данный ключ возвращается только при получении поля контакта, покупателя, сделки и компании
required_statuses array|null Обязательные поля для смены этапов. Данный ключ возвращается только при получении поля контакта, сделки и компании
required_statuses[0] object Модель обязательного поля для смены этапов. Данный ключ возвращается только при получении поля контакта, сделки и компании
required_statuses[0][status_id] int ID статуса, для перехода в который данное поле обязательно к заполнению. Данный ключ возвращается только при получении поля контакта, сделки и компании
required_statuses[0][pipeline_id] int ID воронки, для перехода в который данное поле обязательно к заполнению. Данный ключ возвращается только при получении поля контакта, сделки и компании
nested array|null Вложенные значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
nested[0] object Модель вложенного значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
nested[0][id] int ID вложенного значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
nested[0][parent_id] int ID родительского вложенного значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
nested[0][value] string Значение вложенного значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
nested[0][sort] int Сортировка вложенного значения. Данные ключ возвращается только при получении списка полей каталогов и значение доступно только для поля category
tracking_callback string Сallback js-функция, которая будет выполнена на странице с CRM Plugin и формой amoCRM при отправке данных. Данное значение возвращается для полей типа tracking_data
Пример ответа

        
{
    "id": 3,
    "name": "Телефон",
    "type": "multitext",
    "account_id": 28805383,
    "code": "PHONE",
    "sort": 4,
    "is_api_only": false,
    "enums": [
        {
            "id": 1,
            "value": "WORK",
            "sort": 2
        },
        {
            "id": 3,
            "value": "WORKDD",
            "sort": 4
        },
        {
            "id": 5,
            "value": "MOB",
            "sort": 6
        },
        {
            "id": 7,
            "value": "FAX",
            "sort": 8
        },
        {
            "id": 9,
            "value": "HOME",
            "sort": 10
        },
        {
            "id": 11,
            "value": "OTHER",
            "sort": 12
        }
    ],
    "group_id": null,
    "required_statuses": [],
    "is_deletable": false,
    "is_predefined": true,
    "entity_type": "contacts",
    "remind": null,
    "_links": {
        "self": {
            "href": "https://example.amocrm.ru/api/v4/contacts/custom_fields/3"
        }
    }
}
        
    

Создание дополнительных полей сущности

Метод

POST /api/v4/leads/custom_fields

POST /api/v4/contacts/custom_fields

POST /api/v4/companies/custom_fields

POST /api/v4/customers/custom_fields

POST /api/v4/customers/segments/custom_fields

POST /api/v4/catalogs/{catalog_id}/custom_fields

Описание

Метод позволяет создавать поля сущности пакетно.

Ограничения

Метод доступен только администраторам аккаунта.

Заголовок запроса

Content-Type: application/json

Параметры запроса

Для создания поля необходимо передать модель поля.

ПараметрТип данныхОписаниеОбязательноеПоддерживаемы типы полей
type string Тип поля. Доступные типы полей Доступно для всех полей
name string Название поля Доступно для всех полей
code string Код поля, по-которому можно обновлять значение в сущности, без передачи ID поля Доступно для всех полей
sort int Сортировка поля в группе полей Доступно для всех полей
group_id string ID группы полей Доступно для всех полей контактов, компаний, сделок и покупателей
is_api_only bool Доступно ли поле для редактирования только через API Доступно для всех полей контактов, компаний и сделок
required_statuses array|null Обязательные поля для смены этапа сделки Доступно для всех полей контактов, компаний, сделок и покупателей
required_statuses[0] object Модель обязательного поля для смены этапа сделки Доступно для всех полей контактов, компаний, сделок и покупателей
required_statuses[0][status_id] int ID статуса, для перехода в который данное поле обязательно к заполнению Доступно для всех полей контактов, компаний, сделок и покупателей
required_statuses[0][pipeline_id] int ID воронки, для перехода в который данное поле обязательно к заполнению Доступно для всех полей контактов, компаний, сделок и покупателей
settings object Настройки поля Доступно для всех полей списков (каталогов)
is_visible bool Отображается ли поле в интерфейсе списка Доступно для всех полей списков (каталогов)
is_required bool Обязательно ли поле для заполнения при создании элемента списка Доступно для всех полей списков (каталогов)
remind string|null Когда напоминать о дне рождения (never – никогда, day – за день, week – за неделю, month – за месяц) Доступно для типа поля birthday
enums array Доступные значения поля Доступно для полей:
  • multiselect
  • radiobutton
  • select
enums[0] object Модель доступного значения поля Доступно для полей:
  • multiselect
  • radiobutton
  • select
enums[0][value] string Значение одного из доступных значения поля Доступно для полей:
  • multiselect
  • radiobutton
  • select
enums[0][sort] string Сортировка среди других доступных значений поля Доступно для полей:
  • multiselect
  • radiobutton
  • select
nested array Вложенные значения Доступно для полей:
nested[0] object Модель вложенного значения Доступно для полей:
nested[0][id] int ID вложенного значения Доступно для полей:
nested[0][parent_id] int ID родительского вложенного значения Доступно для полей:
nested[0][value] string Значение вложенного значения Доступно для полей:
nested[0][sort] int Сортировка вложенного значения Доступно для полей:
nested[0][request_id] string Временный идентификатор вложенного значения, должен быть уникальным в пределах запроса, нигде не сохраняется, используется для создания больше одного уровня вложенности за запрос Доступно для полей:
nested[0][parent_request_id] string Временный идентификатор родителя вложенного значения, используется только на момент запроса, нигде не сохраняется, определяет на какой уровень вложенности добавлять элемент, если родительский элемент еще не был создан Доступно для полей:
tracking_callback string Сallback js-функция, которая будет выполнена на странице с CRM Plugin и формой amoCRM при отправке данных Доступно для полей:
Пример запроса

        
[
    {
        "name": "multi select",
        "type": "multiselect",
        "sort": 510,
        "required_statuses": [
            {
                "pipeline_id": 16056,
                "status_id": 20540473
            }
        ],
        "enums": [
            {
                "value": "Значение 1",
                "sort": 1
            },
            {
                "value": "Значение 2",
                "sort": 2
            }
        ]
    }
]
        
    
Заголовок типа данных при успешном результате

Content-Type: application/hal+json

Заголовок типа данных при ошибке

Content-Type: application/problem+json

HTTP коды ответа
Код ответаУсловие
201 Запрос выполнен успешно
422 Запрос не может быть обработан, подробности в теле ответа
401 Пользователь не авторизован
400 Переданы некорректные данные. Подробности доступны в теле ответа
Параметры ответа

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

Пример ответа

        
{
    "_total_items": 1,
    "_embedded": {
        "custom_fields": [
            {
                "name": "multi select",
                "type": "multiselect",
                "sort": 510,
                "settings": null,
                "is_predefined": false,
                "id": 4457223,
                "remind": null,
                "is_api_only": false,
                "enums": [
                    {
                        "value": "Значение 1",
                        "sort": 1,
                        "id": 3778801
                    },
                    {
                        "value": "Значение 2",
                        "sort": 2,
                        "id": 3778803
                    }
                ],
                "group_id": null,
                "required_statuses": [
                    {
                        "status_id": 20540473,
                        "pipeline_id": 16056
                    },
                ],
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/custom_fields/4457223/"
                    }
                }
            }
        ]
    }
}
        
    

Редактирование дополнительных полей сущности

Метод

PATCH /api/v4/leads/custom_fields

PATCH /api/v4/contacts/custom_fields

PATCH /api/v4/companies/custom_fields

PATCH /api/v4/customers/custom_fields

PATCH /api/v4/customers/segments/custom_fields

PATCH /api/v4/catalogs/{catalog_id}/custom_fields

Описание

Метод позволяет редактировать сущности пакетно.
Также вы можете добавить ID поля в метод для редактирования конкретной сущности (например /api/v4/leads/custom_fields/{id}).
При редактировании пакетно передается массив из объектов, при редактировании одного поля, передается просто модель.

Ограничения

Метод доступен только администраторам аккаунта.

Заголовок запроса

Content-Type: application/json

Параметры запроса

Для редактирования поля необходимо передать модель поля.

ПараметрТип данныхОписаниеОбязательноеПоддерживаемы типы полей
name string Название поля Доступно для всех полей
code string Код поля, по-которому можно обновлять значение в сущности, без передачи ID поля Доступно для всех полей
sort int Сортировка поля в группе полей Доступно для всех полей
group_id string ID группы полей Доступно для всех полей контактов, компаний, сделок и покупателей
is_api_only bool Доступно ли поле для редактирования только через API Доступно для всех полей контактов, компаний и сделок
required_statuses array|null Обязательные поля для смены этапа сделки Доступно для всех полей контактов, компаний, сделок и покупателей
required_statuses[0] object Модель обязательного поля для смены этапа сделки Доступно для всех полей контактов, компаний, сделок и покупателей
required_statuses[0][status_id] int ID статуса, для перехода в который данное поле обязательно к заполнению Доступно для всех полей контактов, компаний, сделок и покупателей
required_statuses[0][pipeline_id] int ID воронки, для перехода в который данное поле обязательно к заполнению Доступно для всех полей контактов, компаний, сделок и покупателей
settings object Настройки поля Доступно для всех полей списков (каталогов)
is_visible bool Отображается ли поле в интерфейсе списка Доступно для всех полей списков (каталогов)
is_required bool Обязательно ли поле для заполнения при создании элемента списка Доступно для всех полей списков (каталогов)
remind string|null Когда напоминать о дне рождения (never – никогда, day – за день, week – за неделю, month – за месяц) Доступно для типа поля birthday
enums array Доступные значения поля Доступно для полей:
  • multiselect
  • radiobutton
  • select
enums[0] object Модель доступного значения поля Доступно для полей:
  • multiselect
  • radiobutton
  • select
enums[0][value] string Значение одного из доступных значения поля Доступно для полей:
  • multiselect
  • radiobutton
  • select
enums[0][sort] string Сортировка среди других доступных значений поля Доступно для полей:
  • multiselect
  • radiobutton
  • select
nested array Вложенные значения Доступно для полей:
nested[0] object Модель вложенного значения Доступно для полей:
nested[0][id] int ID вложенного значения. Для создания нового значение не нужно передавать Доступно для полей:
nested[0][parent_id] int ID родительского вложенного значения Доступно для полей:
nested[0][value] string Значение вложенного значения Доступно для полей:
nested[0][sort] int Сортировка вложенного значения Доступно для полей:
nested[0][request_id] string Временный идентификатор вложенного значения, должен быть уникальным в пределах запроса, нигде не сохраняется, используется для создания больше одного уровня вложенности за запрос Доступно для полей:
nested[0][parent_request_id] string Временный идентификатор родителя вложенного значения, используется только на момент запроса, нигде не сохраняется, определяет на какой уровень вложенности добавлять элемент, если родительский элемент еще не был создан Доступно для полей:
tracking_callback string Сallback js-функция, которая будет выполнена на странице с CRM Plugin и формой amoCRM при отправке данных Доступно для полей:
Пример запроса

В примере ниже обновим 2 поля у каталога, сделав запрос к методу /api/v4/catalogs/{catalog_id}/custom_fields.


        
[
    {
        "id": 1278898087,
        "name": "Новое имя для дополнительного поля",
        "sort": 560,
        "is_visible": false,
        "is_required": true
    },
    {
        "id": 1278898091,
        "name": "Новое имя для поля Категория",
        "nested": [
            {
                "id": 197,
                "parent_id": null,
                "value": "категория 1",
                "sort": 0
            },
            {
                "parent_id": null,
                "value": "новая категория 2",
                "sort": 1
            },
            {
                "parent_id": 197,
                "value": "новая подкатегория 1",
                "sort": 1
            }
        ]
    }
]
        
    
Заголовок типа данных при успешном результате

Content-Type: application/hal+json

Заголовок типа данных при ошибке

Content-Type: application/problem+json

HTTP коды ответа
Код ответаУсловие
201 Запрос выполнен успешно
422 Запрос не может быть обработан, подробности в теле ответа
401 Пользователь не авторизован
400 Переданы некорректные данные. Подробности доступны в теле ответа
Параметры ответа

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

Пример ответа

        
{
    "_total_items": 2,
    "_embedded": {
        "custom_fields": [
            {
                "id": 1278898087,
                "name": "Новое имя для дополнительного поля",
                "type": "textarea",
                "account_id": 17079858,
                "code": "DESCRIPTION",
                "sort": 560,
                "is_api_only": false,
                "enums": null,
                "request_id": "0",
                "catalog_id": 1095,
                "is_visible": false,
                "is_deletable": true,
                "is_required": false,
                "nested": null,
                "entity_type": "catalogs",
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/catalogs/1095/custom_fields/1278898087"
                    }
                }
            },
            {
                "id": 1278898091,
                "name": "Новое имя для поля Категория",
                "type": "category",
                "account_id": 17079858,
                "code": "GROUP",
                "sort": 500,
                "is_api_only": false,
                "enums": null,
                "request_id": "1",
                "catalog_id": 1095,
                "is_visible": true,
                "is_deletable": false,
                "is_required": false,
                "nested": [
                    {
                        "id": 197,
                        "parent_id": null,
                        "value": "категория 1",
                        "sort": 0
                    },
                    {
                        "id": 215,
                        "parent_id": 197,
                        "value": "новая подкатегория 1",
                        "sort": 0
                    },
                    {
                        "id": 217,
                        "parent_id": 197,
                        "value": "новая категория 2",
                        "sort": 1
                    }
                ],
                "entity_type": "catalogs",
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/catalogs/1095/custom_fields/1278898091"
                    }
                }
            }
        ]
    }
}
        
    

Удаление дополнительного поля

Метод

DELETE /api/v4/leads/custom_fields/{id}

DELETE /api/v4/contacts/custom_fields/{id}

DELETE /api/v4/companies/custom_fields/{id}

DELETE /api/v4/customers/custom_fields/{id}

DELETE /api/v4/customers/segments/custom_fields/{id}

DELETE /api/v4/catalogs/{catalog_id}/custom_fields/{id}

Описание

Метод позволяет удалить дополнительное поле у сущности в аккаунте.

Ограничения
  • Метод доступен только с правами администратора аккаунта
  • Значения поля будут удалены
Заголовок запроса

Content-Type: application/json

HTTP коды ответа
Код ответаУсловие
204 Поле было успешно удалено
403 Не хватает прав для вызова данного метода
401 Пользователь не авторизован
400 Переданы некорректные данные. Подробности доступны в теле ответа
Параметры ответа

Метод не возвращает тело

Список групп полей сущности

Метод

GET /api/v4/leads/custom_fields/groups

GET /api/v4/contacts/custom_fields/groups

GET /api/v4/companies/custom_fields/groups

GET /api/v4/customers/custom_fields/groups

Описание

Метод позволяет получить список групп полей сущности в аккаунте.

Ограничения

Метод доступен всем пользователям аккаунта.

Заголовок типа данных при успешном результате

Content-Type: application/hal+json

Заголовок типа данных при ошибке

Content-Type: application/problem+json

HTTP коды ответа
Код ответаУсловие
200 Запрос выполнен успешно
401 Пользователь не авторизован
400 Переданы некорректные данные. Подробности доступны в теле ответа
Параметры ответа

Метод возвращает коллекцию моделей групп полей, рассмотрим ниже свойства группы полей.

ПараметрТип данныхОписание
id string ID группы полей
name string Название группы полей
sort int Сортировка группы полей в карточке сущности
entity_type string Тип сущности (leads, contacts, companies, customers)
is_predefined bool Является ли группа предустановленной. Такие группы нельзя удалить
type string Тип группы (linked_group – группы товаров, custom_field_group – группы полей)
Пример ответа

        
{
    "id": "leads_29741591099841",
    "name": "Группа полей",
    "is_predefined": false,
    "type": "custom_field_group",
    "entity_type": "leads",
    "sort": 3,
    "_links": {
        "self": {
            "href": "https://example.amocrm.ru/api/v4/leads/custom_fields/groups/leads_29741591099841"
        }
    }
}
        
    

Получение группы полей сущности по ID группы

Метод

GET /api/v4/leads/custom_fields/groups/{id}

GET /api/v4/contacts/custom_fields/groups/{id}

GET /api/v4/companies/custom_fields/groups/{id}

GET /api/v4/customers/custom_fields/groups/{id}

Описание

Метод позволяет получить группу полей сущности в аккаунте.

Ограничения

Метод доступен всем пользователям аккаунта.

Заголовок типа данных при успешном результате

Content-Type: application/hal+json

Заголовок типа данных при ошибке

Content-Type: application/problem+json

HTTP коды ответа
Код ответаУсловие
200 Запрос выполнен успешно
404 Группа полей не найдена
401 Пользователь не авторизован
Параметры ответа

Метод возвращает коллекцию модель группы полей, рассмотрим ниже свойства группы полей.

ПараметрТип данныхОписание
id string ID группы полей
name string Название группы полей
sort int Сортировка группы полей в карточке сущности
entity_type string Тип сущности (leads, contacts, companies, customers)
is_predefined bool Является ли группа предустановленной. Такие группы нельзя удалить
type string Тип группы (linked_group – группы товаров, custom_field_group – группы полей)
Пример ответа

        
{
    "_total_items": 4,
    "_embedded": {
        "custom_field_groups": [
            {
                "id": "default",
                "name": "Основное",
                "is_predefined": true,
                "type": "custom_field_group",
                "entity_type": "leads",
                "sort": 0,
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/leads/custom_fields/groups/default"
                    }
                }
            },
            {
                "id": "4521",
                "name": "Товары",
                "is_predefined": true,
                "type": "linked_group",
                "entity_type": "leads",
                "sort": 1,
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/leads/custom_fields/groups/4521"
                    }
                }
            },
            {
                "id": "statistic",
                "name": "Статистика",
                "is_predefined": true,
                "type": "linked_group",
                "entity_type": "leads",
                "sort": 2,
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/leads/custom_fields/groups/statistic"
                    }
                }
            },
            {
                "id": "leads_29741591099841",
                "name": "Группа полей",
                "is_predefined": false,
                "type": "custom_field_group",
                "entity_type": "leads",
                "sort": 3,
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/leads/custom_fields/groups/leads_29741591099841"
                    }
                }
            }
        ]
    }
}
        
    

Создание групп полей

Метод

POST /api/v4/leads/custom_fields/groups

POST /api/v4/contacts/custom_fields/groups

POST /api/v4/companies/custom_fields/groups

POST /api/v4/customers/custom_fields/groups

Описание

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

Ограничения

Метод доступен только с правами администратора аккаунта.

Заголовок запроса

Content-Type: application/json

Параметры запроса
ПараметрТип данныхОписание
name string Название группы. Обязательный параметр
sort int Сортировка группы. Обязательный параметр
request_id string Поле, которое вернется вам в ответе без изменений и не будет сохранено. Необязательный параметр
Пример запроса

        
[
    {
        "name": "group 1",
        "sort": 4
    },
    {
        "name": "group 2",
        "sort": 5
    }
]
        
    
Заголовок типа данных при успешном результате

Content-Type: application/hal+json

Заголовок типа данных при ошибке

Content-Type: application/problem+json

HTTP коды ответа
Код ответаУсловие
201 Группы полей были успешно созданы
403 Не хватает прав для вызова данного метода
401 Пользователь не авторизован
400 Переданы некорректные данные. Подробности доступны в теле ответа
Параметры ответа

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

Пример ответа

        
{
    "_total_items": 2,
    "_embedded": {
        "custom_field_groups": [
            {
                "id": "leads_2745158",
                "name": "group 1",
                "is_predefined": false,
                "type": "custom_field_group",
                "entity_type": "leads",
                "sort": 4,
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/leads/custom_fields/groups/leads_2745158/"
                    }
                }
            },
            {
                "id": "leads_609315",
                "name": "group 2",
                "is_predefined": false,
                "type": "custom_field_group",
                "entity_type": "leads",
                "sort": 5,
                "_links": {
                    "self": {
                        "href": "https://example.amocrm.ru/api/v4/leads/custom_fields/groups/leads_609315/"
                    }
                }
            }
        ]
    }
}
        
    

Редактирование группы полей

Метод

PATCH /api/v4/leads/custom_fields/groups/{id}

PATCH /api/v4/contacts/custom_fields/groups/{id}

PATCH /api/v4/companies/custom_fields/groups/{id}

PATCH /api/v4/customers/custom_fields/groups/{id}

Описание

Метод позволяет изменять группу полей в аккаунте по ID группы.

Ограничения

Метод доступен только с правами администратора аккаунта.

Заголовок запроса

Content-Type: application/json

Параметры запроса

Для изменения группы необходимо передать хотя бы один параметр

ПараметрТип данныхОписание
name string Название группы
sort int Сортировка группы
fields array Массив полей, которые должны быть перенесены в группу
Пример запроса

        
{
    "sort": 6,
    "fields": [
        14563, 
        12575
    ]
}
        
    
Заголовок типа данных при успешном результате

Content-Type: application/hal+json

Заголовок типа данных при ошибке

Content-Type: application/problem+json

HTTP коды ответа
Код ответаУсловие
200 Группа полей была успешно изменена
403 Не хватает прав для вызова данного метода
401 Пользователь не авторизован
400 Переданы некорректные данные. Подробности доступны в теле ответа
Параметры ответа

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

Пример ответа

        
{
    "id": "leads_2745",
    "name": "group 1",
    "is_predefined": false,
    "type": "custom_field_group",
    "entity_type": "leads",
    "fields": [
        13478, 
        14563, 
        12575
    ],
    "sort": 6,
    "_links": {
        "self": {
            "href": "https://example.amocrm.ru/api/v4/leads/custom_fields/groups/leads_2745/"
        }
    }
}
        
    

Удаление группы дополнительных полей

Метод

DELETE /api/v4/leads/custom_fields/groups/{id}

DELETE /api/v4/contacts/custom_fields/groups/{id}

DELETE /api/v4/companies/custom_fields/groups/{id}

DELETE /api/v4/customers/custom_fields/groups/{id}

Описание

Метод позволяет удалить группу полей у сущности в аккаунте.

Ограничения
  • Метод доступен только с правами администратора аккаунта
  • Предустановленные группы недоступны для удаления
Заголовок запроса

Content-Type: application/json

HTTP коды ответа
Код ответаУсловие
204 Группа полей была успешно удалена
404 Группа полей не найдена
403 Не хватает прав для вызова данного метода
401 Пользователь не авторизован
400 Переданы некорректные данные. Подробности доступны в теле ответа
Параметры ответа

Метод не возвращает тело

Доступные типы полей

Возможные типы дополнительных полей
ТипНазвание
textТекст
numericЧисло
checkboxФлаг
selectСписок
multiselectМультисписок
dateДата
urlСсылка
textareaТекстовая область
radiobuttonПереключатель
streetaddressКороткий адрес
smart_addressАдрес
birthdayДень рождения
legal_entityЮр. лицо
date_timeДата и время
priceЦена
categoryКатегория
itemsПредметы
tracking_dataОтслеживаемые данные
Таблица доступности разных типов полей для разных сущностей
Тип поляКонтактСделкаКомпанияПокупательКаталогСегмент
Текст
Число
Флаг
Список
Мультисписок
Мультитекст
Дата
Ссылка
Дата и время
Текстовая область
Переключатель
Короткий адрес
Адрес
День рождения
Юр. лицо
Цена
Категория
Предметы
Отслеживаемые данные

Примеры заполнения разных типов полей через API

Ниже рассмотрим примеры запросов на заполнение значений разных типов полей

Не зависимо от типа полей все значения находятся передаются в объектах массива custom_fields_values. Для заполнения поля нужно передать его ID или символьный код, а также сами значения.

ПараметрТип данныхОписание
custom_fields_values array Массив, содержащий информацию по значениям дополнительных полей, задаваемых для сущности
custom_fields_values[0] object Объект, содержащий информацию по значению дополнительного поля, задаваемых для сущности
custom_fields_values[0][field_id] int ID поля, значение которого вы заполняете
custom_fields_values[0][field_code] string Символьный код поля, значение которого вы заполняете
custom_fields_values[0][values] array Массив заполняемых значений
custom_fields_values[0][values][0] object Объект значения поля. Структура объекта зависит от типа поля

Типы полей:

text, numeric, textarea, price, streetaddress, tracking_data

В данном примере рассмотрим запрос на заполнения полей типа text, numeric, textarea, price, streetaddress, tracking_data.

ПараметрТип данныхОписание
value string Значение поля

        
    ...
    "custom_fields_values": [
        {
            "field_id": 3,
            "values": [
                {
                    "value": "Значение поля"
                }
            ]
        },
        {
            "field_id": 103,
            "values": [
                {
                    "value": "1.5"
                }
            ]
        },
        {
            "field_id": 203,
            "values": [
                {
                    "value": "Строка1\nСтрока2"
                }
            ]
        },
        {
            "field_id": 303,
            "values": [
                {
                    "value": "100"
                }
            ]
        },
        {
            "field_id": 403,
            "values": [
                {
                    "value": "г. Москва, Николоямская улица 28/60 стр. 1"
                }
            ]
        }
    ],
    ...
        
    
checkbox

В данном примере рассмотрим запрос на заполнения полей типа checkbox.

ПараметрТип данныхОписание
value bool Значение поля

        
    ...
    "custom_fields_values": [
        {
            "field_id": 5,
            "values": [
                {
                    "value": true
                }
            ]
        }
    ],
    ...
        
    
url

В данном примере рассмотрим запрос на заполнения полей типа url.

ПараметрТип данныхОписание
value string Значение поля. Делегированный URL

        
    ...
    "custom_fields_values": [
        {
            "field_id": 7,
            "values": [
                {
                    "value": "https://www.amocrm.ru/"
                }
            ]
        }
    ],
    ...
        
    
date, date_time, birthday

В данном примере рассмотрим запрос на заполнения полей типа date, date_time, birthday.

ПараметрТип данныхОписание
value int|string Значение поля – Unix Timestamp отметка или время в формате RFC 3339 (например, 2021-06-22T09:11:33+00:00)

        
    ...
    "custom_fields_values": [
        {
            "field_id": 9,
            "values": [
                {
                    "value": 1577836800
                }
            ]
        },
        {
            "field_id": 109,
            "values": [
                {
                    "value": 1591965296
                }
            ]
        },
        {
            "field_id": 209,
            "values": [
                {
                    "value": 1586476800
                }
            ]
        }
    ],
    ...
        
    
select, multiselect, radiobutton, category

В данном примере рассмотрим запрос на заполнения полей типа select, multiselect, radiobutton, category. В качестве значения может быть передано как значение, так и ID значения.

ПараметрТип данныхОписание
value string Значение поля
enum_id int ID значения поля (enum).

        
    ...
    "custom_fields_values": [
        {
            "field_id": 11,
            "values": [
                {
                    "value": "Значение 1"
                }
            ]
        },
        {
            "field_id": 111,
            "values": [
                {
                    "enum_id": 17
                },
                {
                    "enum_id": 19
                }
            ]
        },
        {
            "field_id": 211,
            "values": [
                {
                    "value": "Значение 4"
                }
            ]
        }
    ],
    ...
        
    
smart_address

В данном примере рассмотрим запрос на заполнения полей типа smart_address. Поле принимает множественные значения. В значении необходимо передать поля value и enum_id или enum_code.

ПараметрТип данныхОписание
value string Значение поля
enum_id int ID значения поля. Доступные значения: 1 – Первая строка адреса, 2 – Вторая строка адреса, 3 – Город, 4 – Регион, 5 – Почтовый индекс, 6 – Страна
enum_code string Код значения поля. Доступные значения: address_line_1 – Первая строка адреса, address_line_2 – Вторая строка адреса, city – Город, state – Регион, zip – Почтовый индекс, country – Страна

        
    ...
    "custom_fields_values": [
        {
            "field_id": 13,
            "values": [
                {
                    "value": "Николоямская улица 28/60",
                    "enum_id": 1
                },
                {
                    "value": "Москва",
                    "enum_code": "city"
                },
                {
                    "value": "Москва",
                    "enum_code": "state"
                },
                {
                    "value": "109004",
                    "enum_id": 5
                },
                {
                    "value": "RU",
                    "enum_code": "country"
                }
            ]
        }
    ],
    ...
        
    
multitext

В данном примере рассмотрим запрос на заполнения полей типа multitext (Телефон, Email). Поле принимает множественные значения. В значении необходимо передать поля value и enum_id или enum_code.

ПараметрТип данныхОписание
value string Значение поля
enum_id int ID значения поля.
enum_code string Код значения поля.
Доступные значения для поля Телефон: WORK – рабочий, WORKDD – рабочий прямой, MOB – мобильный, FAX – факс, HOME – домашний, OTHER – другой.
Доступные значение для поля Email: WORK – рабочий, PRIV – личный, OTHER – другой.

        
    ...
    "custom_fields_values": [
        {
            "field_id": 31,
            "values": [
                {
                    "value": "+79121234567",
                    "enum_id": 48224
                },
                {
                    "value": "+74991234567",
                    "enum_code": "HOME"
                }
            ]
        }
    ],
    ...
        
    
legal_entity

В данном примере рассмотрим запрос на заполнения полей типа legal_entity. В значении необходимо обязательно передать поля name, vat_id, kpp.

ПараметрТип данныхОписание
value object Значение поля
value[name] string Название организации
value[entity_type] int Тип юридического лица. 1 – Частное, 2 – Юридической.
value[vat_id] string ИНН организации
value[tax_registration_reason_code] string ОГРНИП
value[address] string Адрес организации
value[kpp] string КПП организации
value[external_uid] string Идентификатор внешней системы

        
    ...
    "custom_fields_values": [
        {
            "field_id": 25,
            "values": [
                {
                    "value": {
                        "name": "ООО Рога и копыта",
                        "entity_type": 1,
                        "vat_id": "123123123",
                        "tax_registration_reason_code": 213,
                        "address": "Moscow",
                        "kpp": "23123123",
                        "external_uid": "uuid"
                    }
                }
            ]
        }
    ],
    ...
        
    
items

В данном примере рассмотрим запрос на заполнения полей типа items. Поле доступно в списке счетов для хранения состава товара.

ПараметрТип данныхОписание
value object Значение поля
value[sku] string SKU товара
value[description] string Описание товара
value[unit_price] int|float Цена за единицу товара
value[quantity] int|float Количество товара в счете
value[unit_type] string Единица измерения
value[discount] object Объект скидки на товар
value[discount][type] string Тип скидки (percentage – процентная или amount количественная)
value[discount][value] int|float Размер скидки
value[vat_rate_id] int Идентификатор налога (0 – Без НДС, 1 – 10%, 2 – 10/110, 3 – 18%, 4 – 18/118, 5 – 0)
value[external_uid] string Идентификатор внешней системы

        
    ...
    "custom_fields_values": [
        {
            "field_id": 25,
            "values": [
                {
                    "value": {
                        "sku": "34N4124",
                        "description": "Описание товара",
                        "unit_price": 10,
                        "quantity": 2,
                        "unit_type": "шт.",
                        "discount": {
                            "type": "amount",
                            "value": 25
                        },
                        "vat_rate_id": 18,
                        "external_uid": "uid"
                    }
                }
            ]
        }
    ],
    ...
        
    

фунтов стерлингов | Licensing

Краткий ответ: Нет, но можно подать заявку на взаимность из Луизианы, Теннесси (только для GC), Миссисипи и Южной Каролины.

Подразделение коммерческих генеральных подрядчиков — Подразделение коммерческих генеральных подрядчиков сотрудничает с Луизианой, Миссисипи и Теннесси. Вы должны иметь действующую лицензию коммерческого подрядчика с классификацией «строительство зданий» и получить лицензию по результатам государственной экспертизы.

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

Если вы сдали и сдали экзамен NASCLA в любом другом штате, вы можете подать заявление в Отдел коммерческих генеральных подрядчиков (Грузия) сдать экзамен и приобрести стенограмму NASCLA для подачи в Лицензионный совет штата Джорджия для жилых и генеральных подрядчиков.Совет рассмотрит вашу заявку на экзамен, и, если она будет одобрена, вам необходимо будет запланировать и сдать экзамен по бизнесу и праву в Грузии до выдачи лицензии в Грузии.

Отдел жилищных подрядчиков — Отдел жилищных подрядчиков поддерживает отношения взаимности с штатами Миссисипи, Южная Каролина и Луизиана. У вас должна быть действующая действующая лицензия на строительство жилых домов и полученная лицензия на государственной экспертизе. Вместе с заявлением необходимо будет предоставить подтверждение наличия лицензии.Совет рассмотрит ваше заявление, и, если оно будет одобрено, вам нужно будет запланировать и сдать экзамен по бизнесу и праву в Грузии до выдачи лицензии в Грузии.

Лицензионный совет штата Джорджия для жилых и генеральных подрядчиков работает над установлением взаимности с другими штатами. Пожалуйста, периодически проверяйте наш веб-сайт на наличие обновлений по этому вопросу.

округ Кларк, Невада

ШАГ ПЕРВЫЙ: ОПРЕДЕЛИТЕ, ГДЕ НАХОДИТСЯ ВАШ БИЗНЕС

Основное местонахождение вашего бизнеса определяет юрисдикцию, в которой вы должны подать заявку на получение вашей бизнес-лицензии.Округ Кларк, штат Невада, состоит из 6 юрисдикций, каждая из которых имеет собственное лицензирующее агентство: город Лас-Вегас, город Северный Лас-Вегас, город Хендерсон, город Боулдер, город Мескит и наш департамент, некорпоративный округ Кларк. . Локатор юрисдикции поможет вам определить юрисдикцию лицензирования вашего бизнеса. Имейте в виду, что большая часть долины Лас-Вегаса имеет почтовый адрес Лас-Вегаса, но расположена в некорпоративном округе Кларк

.

ШАГ ВТОРОЙ: ПОЛУЧИТЕ ЛИЦЕНЗИЮ НА БИЗНЕС-ЛИЦЕНЗИЮ ШТАТА НЕВАДА:

NRS 76 требует, чтобы все предприятия, корпорации и партнерства, работающие в штате Невада, имели государственную лицензию на ведение бизнеса.Пожалуйста, посетите веб-сайт государственного секретаря для получения дополнительной информации. Вы можете подать заявку онлайн на nvsilverflume.gov.

ШАГ ТРЕТИЙ: ЗАРЕГИСТРИРОВАТЬСЯ У ГОССЕКРЕТАРЯ НЕВАДА:

Все корпорации, компании с ограниченной ответственностью, товарищества с ограниченной ответственностью и товарищества с ограниченной ответственностью обязаны зарегистрировать свои юридические лица у секретаря штата Невада. Вы можете зарегистрироваться онлайн на nvsilverflume.gov.

ШАГ ЧЕТВЕРТЫЙ: РЕГИСТРАЦИЯ В НАЛОГОВОМ ДЕПАРТАМЕНТЕ НЕВАДА:

Теперь вы можете зарегистрироваться онлайн, посетив веб-сайт Департамента налогообложения штата Невада или подав заявку на сайте nvsilverflume.gov вместе с вашей организацией и заявкой на государственную лицензию.

ШАГ ПЯТЫЙ: ПОЛУЧИТЕ ВЫДУМАННОЕ НАЗВАНИЕ ФИРМЫ:

Предприятия, работающие под вымышленной фирмой (любое имя, кроме юридического имени владельца бизнеса или названия юридического лица, зарегистрированного у государственного секретаря штата Невада), должны подать заявление на получение сертификата вымышленной фирмы в офис клерка округа Кларк. Онлайн-форму можно найти здесь. Чтобы подать заявку на вымышленное фирменное наименование, вы можете отправить форму по почте или доставить ее лично в Офис секретаря округа (1-й этаж), расположенный по адресу: 500 S.Grande Central Pkwy, Las Vegas, NV 89155.

ТЕПЕРЬ ВЫ ГОТОВЫ ПОДАТЬ ЗАЯВКУ НА БИЗНЕС-ЛИЦЕНЗИЮ ОКРУГА КЛАРК (ШАГИ С ШЕСТИ ПО 10)!

ШАГ ШЕСТОЙ: ЗАПОЛНИТЕ ОНЛАЙН-ЗАЯВКУ

Вы можете подать заявку онлайн в онлайн-заявке на бизнес-лицензию округа Кларк.
Если у вас есть какие-либо вопросы относительно онлайн-заявки, вы можете звонить по телефону (702) 455-0174 с 8:00 до 16:00 с понедельника по пятницу.

(ЗАЯВИТЕЛИ НА ОБЩУЮ ЛИЦЕНЗИЮ МОГУТ ПРОПУСТИТЬ СЕДЬМОЙ ШАГ)

ШАГ СЕДЬМОЙ: ЗАВЕРШЕНИЕ ПАКЕТОВ ИССЛЕДОВАНИЯ

Полные пакеты исследований для регулируемых или алкогольных и игровых категорий.

Вы можете получить доступ к сводной информации по следующим ссылкам для основных видов регулируемых и привилегированных предприятий:   

ШАГ ВОСЬМОЙ: ОПЛАТА ВЗНОСОВ

Если вы подаете заявление в нашем офисе, ваш специалист по лицензированию рассчитает ваши сборы и направит вас к окну кассы. Онлайн-заявки оплачиваются онлайн в момент подачи заявки. В дополнение к невозмещаемому регистрационному сбору в размере 45 долларов США, нажмите здесь, чтобы просмотреть список лицензионных сборов.

ЭТАП ДЕВЯТЫЙ: РАСПИСАНИЕ ПРОВЕРОК

После подачи заполненной заявки и оплаты сборов ваша заявка будет отправлена ​​​​в электронном виде в отдел комплексного планирования для рассмотрения и утверждения в течение 5 дней после подачи. Затем ваше заявление отправляется в Департамент пожарной безопасности и любое другое агентство общественной безопасности в зависимости от вашей деятельности, например, Медицинский округ Южной Невады, Качество воздуха, Контроль за животными, Управление по обращению с твердыми отходами.Вы можете найти список агентств общественной безопасности на нашей странице Ресурсы и полезные ссылки .

Лицензии на продажу спиртных напитков и азартные игры также подпадают под действие требований пригодности местоположения, установленных Департаментом. После того, как все необходимые органы общественной безопасности подпишут вашу заявку в электронной форме в базе данных Департамента, ваша заявка будет готова для окончательного утверждения директором.

ШАГ ДЕСЯТЫЙ: УТВЕРЖДЕНИЕ

После одобрения директором по бизнес-лицензии ваша лицензия будет автоматически отправлена ​​в ваш офис.Привилегированные и регулируемые бизнес-лицензии требуют проверки на месте и проведения совещания с агентом по лицензированию бизнес-лицензии до окончательного утверждения директором.

Теперь вы готовы управлять своим бизнесом! Благодарим вас за предоставленную возможность служить вам и желаем вам дальнейших успехов!

Спасибо!

Жаклин Р. Холлоуэй

Акции с номинальной стоимостью

и акции без номинальной стоимости: в чем разница?

Акции с номинальной стоимостью и акции без номинальной стоимости: обзор

Акция в компании может иметь номинальную стоимость или не номинальную стоимость.Обе эти категории в значительной степени представляют собой историческую причуду и не имеют никакого отношения к цене акций на рынке.

Номинальная стоимость или номинальная стоимость – это заявленная стоимость одной акции. Эта цена была напечатана на бумажных сертификатах акций до того, как они устарели для новых электронных версий. Если компания не устанавливала номинальную стоимость, ее сертификаты выпускались как акции без номинальной стоимости.

Примечательно, что номинальная стоимость облигации отличается от ее номинальной стоимости или полной стоимости при погашении.

Ключевые выводы

  • Номинальная стоимость акции — это ее стоимость в расчете на одну акцию, присваиваемая компанией, которая ее выпускает, и часто устанавливается на очень низком уровне, например, в один цент.
  • Акции без номинала выпускаются без установленной минимальной стоимости.
  • Ни одна из форм не имеет отношения к фактической стоимости акций на рынках.

Номинальная стоимость акций

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

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

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

Большинство компаний предпочитают устанавливать минимальную номинальную стоимость своих акций, чтобы обойти любой из этих сценариев.

Например, если компания XYZ выпускает 1000 акций номинальной стоимостью 50 долларов, то минимальная сумма капитала, которая должна быть получена в результате продажи этих акций, составляет 50 000 долларов. Поскольку рыночная стоимость акций практически не имеет ничего общего с номинальной стоимостью, инвесторы могут покупать акции на открытом рынке значительно дешевле, чем за 50 долларов.Если все 1000 акций будут куплены ниже номинала, скажем, за 30 долларов, компания получит только 30 000 долларов собственного капитала. Если бизнес разорится и не сможет выполнить свои финансовые обязательства, акционеры могут быть привлечены к ответственности за разницу в 20 долларов за акцию между номиналом и ценой покупки.

В отличие от акции, облигация имеет реальную номинальную стоимость. Облигация стоит свою номинальную стоимость в момент погашения.

Акции без номинальной стоимости

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

Этот статус «без номинала» означает, что компания не установила минимальную стоимость своих акций. Акции без номинальной стоимости не несут теоретических обязательств по выпускам с номинальной стоимостью, поскольку базовая стоимость акции отсутствует. Однако, поскольку компании при необходимости назначают минимальную номинальную стоимость, фактически разница между акциями с номиналом и акциями без номинала незначительна.

Особые соображения

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

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

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

часто задаваемых вопросов | Инициатива с открытым исходным кодом

Для большинства практических целей это… вроде как. Это сложный вопрос, поэтому, пожалуйста, читайте дальше.

«Общественное достояние»  – это технический термин в законодательстве об авторском праве, который относится к произведениям, не защищенным авторским правом — либо потому, что они никогда не были защищены авторским правом (например, произведения, созданные государственными служащими США, в государственное время и как часть их работа, автоматически становятся общественным достоянием), или потому что срок их авторского права окончательно истек, и они «попали» в общественное достояние.

Не во всех юрисдикциях есть общественное достояние, и оно не всегда означает одно и то же в тех юрисдикциях, где оно есть. Более того, даже там, где понятно, что это значит, это все равно не лицензия. Чтобы быть предметом лицензии, произведение должно быть защищено авторским правом. Это означает, что концепция «общественного достояния» не может пройти процесс оценки и утверждения OSI. Мы не будем оценивать текст лицензии. Вместо этого нам пришлось бы как-то оценивать сами законы, в разных юрисдикциях, и говорить, в каких юрисдикциях есть общественное достояние, отвечающее Open Source Definition и не создающее проблем для авторов и пользователей программного обеспечения.Это было бы очень сложно, потому что это означало бы оценку не только статутов, но и различных сводов прецедентного права (например, лицензии с открытым исходным кодом обычно содержат строгий отказ от ответственности для владельца авторских прав — но мы не знаем, как и были ли автор будет защищен от ответственности за программное обеспечение, выпущенное в общественное достояние в различных юрисдикциях). Такой подход не был бы полезен для миссии OSI, потому что открытый исходный код — это международное явление, и мы хотим везде одобрять только те лицензии, которые соответствуют определению открытого исходного кода.

Таким образом, мы рекомендуем вам всегда применять утвержденную лицензию Open Source к программному обеспечению, которое вы выпускаете, а не пытаться полностью отказаться от авторских прав. Использование ясной, признанной лицензии Open Source на самом деле облегчает другим возможность узнать, что ваше программное обеспечение соответствует определению Open Source. Это также позволяет защитить авторство и различные другие неограничительные права, которые не могут быть надежно обеспечены при отсутствии лицензии.

Есть определенные обстоятельства, например, с У.Правительство С. работает так, как описано выше, где непросто применить лицензию, а программное обеспечение должно быть выпущено в общественное достояние. В этих случаях, хотя было бы неверным отображать логотип OSI или говорить, что лицензия одобрена OSI (поскольку лицензии нет), тем не менее мы считаем правильным сказать, что такое программное обеспечение фактически является открытым исходным кодом или открытым исходным кодом. для большинства практических целей, даже если он официально не выпущен под лицензией с открытым исходным кодом. (Это предполагает, конечно, что в законах освобождающей юрисдикции значение «общественного достояния» совместимо с определением открытого исходного кода.) В конце концов, свободы, гарантированные лицензиями с открытым исходным кодом, все еще присутствуют, и вокруг программного обеспечения может возникнуть знакомая динамика сотрудничества с открытым исходным кодом.

Подробное обсуждение сложностей, связанных с общественным достоянием и открытым исходным кодом, можно найти по словам «общественное достояние» и «PD» в заголовках тем архивов рассылки OSI License Review за январь 2012 г., февраль 2012 г. и март 2012 г. список. И если мысль о прочтении всех этих разговоров пугает, примите это как еще одно доказательство того, что лучше использовать утвержденную лицензию с открытым исходным кодом, если вы можете!

См. также вопрос CC0.Чтобы узнать точку зрения, отличную от представленной выше, см. unlicense.org.

The Pipeliners Association of Houston

11 th Annual Fishout

ОБЩАЯ РЕГИСТРАЦИЯ ОТКРЫТА 21 МАРТА 2022 ГОДА с 9:00 до 29 апреля для спонсоров и команд.

*** Поздняя регистрация начнется 1 мая 2022 г. и закончится 27 мая 2022 г., но рубашки, шапки и сухие сумки для вашего рыбака не могут быть гарантированы, если вы зарегистрируетесь поздно.



9
Уровни спонсорства:

Gold $ 3000-000 Tournament Рубашка спонсор-Компания Логотип на 2022 Fishout Tournament Рубашка и сцена + 3 Teams Teams

Silver $ 200168 $ 200168 $ 200168 $ 200168 Спонсоры сухих мешков — Компания Логотип на турнире Сухие мешки + Компания Название или логотип на этапе дня турнира + Участие 2 рыболовных команд

Бронза Trophy, +1 Рыбалка команда въезд, логотип компании на турнире дневной этап


график турнира События и информация о событиях и информации:

3 июня, 2022 — Friday-регистрация заезда расписание:
Заезд будет в 4 часа.м. — 8 вечера. Лидеры команд и участники должны прийти, чтобы зарегистрироваться и подписать отказ с 16:00. до 20:00, в павильоне Порт-Аранзас, 301 J C Barr Blvd., Port Aransas, TX 78373.

В пятницу вечером WHC подарит вареных раков всем участникам! Пожалуйста, присоединяйтесь к нам и приводите своих гостей. У нас будет музыка, танцы и всю ночь мы будем раздавать оружие и призы!!!

Отказ от прав будет доступен при регистрации и должен быть подписан всеми рыбаками!

Это турнир в стиле ПОКЕР.Каждому капитану команды при регистрации будет выдана покерная фишка. На этой фишке будет написан номер команды, и лидер команды несет ответственность за помещение этой фишки в категорию, которую вы выберете после того, как поймаете свою рыбу в то время.

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

4 июня 2022 г. — СУББОТА РАСПИСАНИЕ ТУРНИРА И ПОДРОБНОСТИ :

ТУРНИР : Турнир начнется ровно в 6:00 утра в субботу 4 июня 2022 г., однако вы можете начать из любого места шесты не могут бросаться до 6:00. Допускаются команды до 4 человек. Пожалуйста, ознакомьтесь с Официальным документом правил, чтобы узнать о конкретных правилах.

ВЗВЕШИВАНИЕ : Взвешивание начинается в 14:00. Суббота, 4 июня 2022 г., и команды должны иметь свои командные чипы в корзине и быть в очереди на взвешивание до 16:00.м!!! БЕЗ ИСКЛЮЧЕНИЙ . Взвешивание будет проходить в павильоне Порт-Аранзас, 301 J C Barr Blvd., Port Aransas, TX 78373

WHERE : Рыболовный турнир проводится в прибрежных водах и заливах, окружающих Порт-Аранзас и Корпус-Кристи, и вокруг них.

КАТЕГОРИИ: С УПРАВЛЯЕМЫМ И БЕЗУПРАВЛЯЕМЫМ


В каждой команде может быть до 4 рыбаков (проводники обычно не ловят рыбу и не включаются в число 4 рыбаков, если только они не ловят рыбу).Есть два подразделения, УПРАВЛЯЕМОЕ и НЕУПРАВЛЯЕМОЕ. Гид НЕ требуется, но если вы наймете гида, вы попадете в раздел GUIDED. Каждая команда несет ответственность за предоставление своей лодки, топлива, рыболовных снастей, наживки, а также закусок и обеда на субботу во время рыбалки. Команды также несут ответственность за обеспечение гида, если они решат его использовать .
 
НАГРАДЫ

Трофеи будут присуждаться за 1-3 место как в УПРАВЛЯЕМОЙ, так и НЕУПРАВЛЯЕМОЙ категориях, в следующих категориях: Самый тяжелый стрингер : 906 1 пятнистая форель.

Самая тяжелая форель

Самая тяжелая краска


трофеев будет дано для 1-го места только в следующих категориях:

тяжелый мусорной рыбы

Большинство пятен — Redfish

рыба будет определяться правилами TPWD. Если правила TPWD различаются в зависимости от различных областей в зоне турнира, применяется правило TPWD для более короткой форели. Документ «Официальные правила турнира Fishout 2022» заменит любые правила предыдущих лет или онлайн.Каждая команда должна иметь распечатку официальных правил для справки. Они будут доступны на вечеринке Check-In в пятницу вечером. Если у вас есть какие-либо вопросы, задайте их в пятницу вечером с Мэйсоном или Джилл. Это мероприятие по сбору средств. Мы признаем, что конфликты могут возникать из-за непонимания и неправильного толкования. Призы за участие будут доступны для тех, кто чувствует себя обиженным волонтерами турнира.

Еда и призы будут доступны с 14:30. до 8 р.м. в пятницу 16:30 — 6:30 вечера. Суббота.

ОБЩАЯ ИНФОРМАЦИЯ

Все зарегистрированные лица должны быть членами Ассоциации трубопроводчиков Хьюстона с хорошей репутацией.

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

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

Еда и призы будут доступны с 16:00. до 20:00 в пятницу и 15:00 — 6:30 вечера. Суббота.
 
В этом году наши повара PAH снова получат бесплатную еду.

Событие BYOB: Наши повара предоставляют алкоголь, но он не будет продаваться, когда колодец иссякнет.

ЛИЦЕНЗИЯ НА РЫБАЛКУ
В субботу, 4 июня 2022 г., лицензия на рыбную ловлю не требуется. Первая суббота июня является «Днем бесплатной рыбы» TPWD, и лицензия с печатью не требуется для ловли рыбы.Для получения дополнительной информации посетите веб-сайт www.tpwd.state.tx.us
 
GUIDE HELP
Организация местного гида: www.cbga.org
Электронная почта: [email protected]
 
Sam Schiwart @ Saltitude Outfitters
Позвоните или отправьте сообщение по телефону 325-450-1682
Электронная почта: [email protected]
 
Вопросы?
Мейсон МакМюррей — 832-221-0707
Джилл Харш — 936-525-9173
Электронная почта [email protected]

Категории, аспекты и доступные для просмотра аспекты? :: UXmatters

B&H по сравнению с J&R

B&H использует обходной путь дерева брендов/категорий, в то время как J&R использует подход с доступными для просмотра аспектами.

Я понимаю, что разницу между функциональностью просматриваемых фасетов и функциональностью альтернативного подхода может быть немного трудно оценить в абстрактном виде. К счастью, сайты B&H и J&R позволяют легко понять преимущества подхода с возможностью просмотра. B&H использует обходной путь дерева брендов/категорий, в то время как J&R использует подход с доступными для просмотра аспектами.

В B&H покупатель не может делать следующее:

  1. Начните с Sony , как показано на рисунке 1.
  2. Найдите цифровых фотоаппаратов , как показано на рисунке 2.
  3. Затем расширьте или переключите параметры его бренда, чтобы включить Casio . (Это просто невозможно.)
Рисунок 1—Начиная с Sony на B&H

Примечание. На рисунке 2 отсутствует фасет Brand, поскольку он будет отражать только одно значение — Sony .

Рисунок 2—Нахождение цифровых камер на B&H

Для сравнения, на J&R покупатель может сделать следующее:

  1. Начните с Sony , как показано на рисунке 3.
  2. Найдите цифровых камер среди камер , как показано на рисунках 4 и 5.
  3. Затем переключите его торговую марку на Casio, , как показано на рисунке 6 .
Рисунок 3 — Начиная с Sony На J & R
Рисунок 4-Finding Камеры На J & R
Рисунок 5-Найти Цифровые камеры В пределах Камеры На J & R
Рисунок 6 — Переключение на Casio на J & R

Уведомление что J&R разрешает множественный выбор , а не .Если бы они разрешили это, это также позволило бы покупателям расширить, а не переключаться, свои варианты, включив Casio .

Возможно, что использование этого подхода является преднамеренным со стороны B&H — как я упоминал ранее, он позволяет более точно настраивать дерево категорий — но также может быть и то, что это пережиток устаревшего веб-сайта, который использовал обходной путь дерева брендов/категорий.

Просматриваемые фасеты превосходно работают на J&R. Они действуют как суррогатные категории, пока пользователь не углубится в категорию.Более того, они автоматически пересекаются с таксономией категорий сайта без какого-либо дополнительного управления данными. Как и категории, просматриваемые аспекты предпочтительно должны поддерживать только один выбор для простоты. Однако это не является требованием , если они также не являются иерархическими. (Для получения дополнительной информации по этой теме прочитайте мою статью «Настройка аспектов, часть I: поддержка иерархии с множественным выбором» на UXmatters .

Когда сайт правильно использует просматриваемые аспекты, пользователи могут просматривать категории через аспектов.Например, фильтрация по бренду : Buffalo на сайте J&R, как показано на рис. 7, показывает, что Buffalo предлагает только продукты, входящие в категории Drives и Networking , и покупатель может найти другие сетевые продукты через этот бренд. После того как пользователь углубился в Networking из доступного для просмотра аспекта Brand , он может удалить фильтр для Buffalo и вместо этого отфильтровать другой бренд, например D-Link, , как показано на рисунке 8.В этом случае пользовательский интерфейс с множественным выбором будет превосходным.

Рисунок 7—Фильтрация для торговой марки : Buffalo на J&R
Рисунок 8—Фильтрация для другой марки Networking на J&R

На веб-сайте Trend To Go можно наблюдать просматриваемые аспекты в контексте пользовательского интерфейса с множественным выбором . Покупатель может выбрать доступный для просмотра фасет Марка и значение Dolce & Gabbana , как показано на рис. 9, затем принять решение посетить свои часы, как показано на рис. 10, и, наконец, перейти к другому бренду, Activa , как показано на рисунке 11.

Рисунок 9—Фильтрация для бренда : Dolce & Gabbana на Trend To Go
Рисунок 10—Посещение часов : Dolce & Gabbana на Trend To Go
Рисунок 11—Расширение до Часы: (Dolce & Gabbana или Activa) на Trend To Go

На рисунке 10 видно, что пользователь может выбрать Beauty & Fragrance вместо Watches , а пользовательский интерфейс использует то же дерево категорий, которое используется на всем веб-сайте. Также обратите внимание, что пользователь получит идентичную и эквивалентную страницу результатов продукта, если он поменяет местами шаги, показанные на рисунках 11 и 10.

Фасеты с возможностью просмотра работают, так зачем останавливаться на брендах?

Мы можем обобщить концепцию просматриваемого бренда и применить ее ко многим другим аспектам….

Мы можем обобщить концепцию просматриваемого бренда и применить ее ко многим другим аспектам, помимо бренда. Как правило, доступный для просмотра аспект должен быть аспектом, который одновременно

  • относится к большинству ваших продуктов
  • представляет собой определяющий или важный атрибут в процессе покупки

Бренд удовлетворяет обоим этим правилам, если фактором является лояльность к бренду. Если большинство товаров имеют атрибут цвета, то цвет удовлетворяет первому правилу. Однако, чтобы удовлетворить второму правилу, цвет также должен быть определяющим атрибутом товаров на сайте, а это не всегда так.

Давайте закончим другим примером — металлом на ювелирном веб-сайте. Джо К. Клиент, верный, любящий муж, провел много долгих ночей, работая в офисе над коммерческой сделкой. Поспав несколько раз на офисном диване, он решает, что должен купить в подарок драгоценности, чтобы компенсировать это своей жене Джоанн.Он понятия не имеет, хочет ли он купить для нее кулон, кольцо или браслет, главное, чтобы он был из платины. Если бы он зашел в магазин Tiffany & Co. в Нью-Йорке, он мог бы сказать: «Я хочу что-нибудь из платины для своей жены, но не знаю, что именно. Вы можете помочь мне?»

В Интернете, даже если навигация ювелирного сайта поддерживает фильтрацию по аспекту Металл , она не должна требовать, чтобы покупатель сначала указывал, какую категорию он желает — кулон, кольцо, браслет или другой тип ювелирных изделий.Если бы это произошло, Джо понятия не имел, что делать. В этом случае категории вообще не моделируют мыслительный процесс покупателя. Итак, Джо сдается и проводит еще одну ночь на диване. Веб-сайт не занимается продажей. Никто не счастлив.

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

Если на сайте используется подход обходного пути металл/дерево категорий, он блокирует Джо в платине, и это вызывает у Джо такую ​​же проблему, как и у Марти. Напротив, с просматриваемыми фасетами Джо может делать покупки, используя свой естественный мыслительный процесс. После того, как он просмотрит несколько страниц платиновых украшений, он может перейти к Главная > Кольца , переключиться на Палладий, а затем найти кольцо с подходящими серьгами, которые, по его мнению, понравятся Джоан. Он смог добраться туда — несмотря на извилистый мыслительный процесс — с помощью подхода с доступом к просматриваемым аспектам.

Так почему же фасеты доступны не везде?

Различие между фасетами для категорий и деталями [фасета] является строго редакционным, то есть модель данных и навигация работают одинаково в любом случае, но пользовательский опыт отличается», — Пит Белл,
.

Хороший вопрос! Недавно я задал этот вопрос Питу Беллу и Джону Эндрюсу из Endeca. Я также поинтересовался, дали ли они этому типу фасетки особое имя — возможно, лучшее имя, чем мое. Пит сказал мне: «Различие между фасетами для категорий и деталями [фасетов] строго редакционное, то есть модель данных и навигация работают одинаково в любом случае, но пользовательский опыт отличается.Однако это существенная разница, поэтому дизайнеру взаимодействия важно это осознавать».

Пит говорит как непревзойденный ученый-компьютерщик. Категорию действительно можно рассматривать как еще одну грань — иерархическую. Веб-сайт также может иметь другие иерархические аспекты в дополнение к категории. Подсчет нескольких иерархий сопряжен с некоторыми алгоритмическими проблемами и некоторыми дополнительными затратами, но эти проблемы можно преодолеть. К сожалению, иерархии также создают проблемы с удобством использования в контексте множественного выбора.Следовательно, такой пользовательский интерфейс, вероятно, будет иметь смысл только для инструментов исследования данных или, возможно, для очень продвинутых пользователей.

Пит и Джон также признались, что у них нет определенного названия для этого подмножества граней. Однако, когда было предложено, они предложили альтернативное название — навигационных фасетов, но сказали, что просматриваемых может лучше описать концепцию. Пока давайте остановимся на доступных для просмотра фасетах.  Распознав особую природу этих граней и дав им имена, мы сделали первый шаг к их лучшему пониманию.

Я попытаюсь объяснить, почему они так и остались безымянными и часто нереализованными. Большинство веб-разработчиков и специалистов по пользовательскому опыту по-прежнему рассматривают фасеты как многоуровневое усовершенствование таксономий, основанных на категориях, и поэтому сосредотачиваются на том, как они работают в рамках такой таксономии. Однако с первых дней существования Интернета навигация по многим сайтам электронной коммерции позволяла покупателям начинать покупки с бренда. Таким образом, мы знаем, что таксономия на основе категорий — это , а не , единственная полезная отправная точка — даже без преимуществ фасетов для фильтрации или возможности затем перейти к категории.

Простой ответ заключается в том, что большинство разработчиков и специалистов по UX застряли в мышлении, основанном на категориях, и, таким образом, упустили из виду концепцию просматриваемых аспектов, а также более абстрактное наблюдение Пита и Джона о том, что все является аспектом. Хотя просматриваемые аспекты действительно представляют некоторые технологические проблемы, их можно преодолеть. Попытки некоторых сайтов электронной коммерции имитировать поведение просматриваемых фасетов с помощью дерева фасетов/категорий, таких как дерево брендов/категорий или металлов/дерево категорий, и их ограниченный успех в расширении или исследовании подчеркивают необходимость просматриваемых фасетов.

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

Новая книга:
Дизайн Поиск: UX-стратегии для успеха электронной коммерции

Джейми Сирович внесла свой вклад в книгу Грега Нудельмана Designing Search: UX Strategies for eCommerce Success .Чтобы получить скидку 40 % на печатную версию этой книги, приобретите ее на Wiley.com до 30 сентября 2011 г., используя код скидки: UXDS1.

Типы бизнес-лицензий

  1. Дом
  2. Налоги на бизнес
  3. Типы бизнес-лицензий
Лицензионное бюро контролера отвечает за контроль и обеспечение соблюдения бизнес-лицензий в Мэриленде.Выберите одну из приведенных ниже ссылок, чтобы определить, требуется ли вам регистрация для получения какой-либо из следующих бизнес-лицензий.
Связаться с SLB
Секретари окружного суда

Продление и передача лицензий на алкоголь

Продление

В большинстве юрисдикций, включая город Балтимор и город Аннаполис, контролер может потребовать от Совета по спиртным напиткам приостановить продление лицензии штата на продажу спиртных напитков до тех пор, пока счет не будет соответствовать требованиям к подаче документов и/или не будут приняты удовлетворительные меры по оплате.Контролер может приостановить продление за несоблюдение требований в отношении продаж и использования, удержания сотрудников, а также требований по налогу на вход и развлечения.

Переводы

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

Аффидевит экспонента

Промоутер не может разрешить экспоненту участвовать в выставке, если экспонент не представил ксерокопию действующей лицензии трейдера или аффидевита экспонента (можно получить у любого клерка окружного суда или Государственного лицензионного бюро) до выставки.

Если выставка не продвигается одной из освобожденных организаций, перечисленных ниже, экспоненту НЕ НУЖНО получать лицензию трейдера, если выставка продвигается:

  • Церковь согласно определению в Разделе 5-301 Статьи о корпорациях и ассоциациях;
  • Любое государственное учреждение или подразделение;
  • Радиолюбительская организация;
  • Организация старинных транспортных средств, машин и оборудования;
  • Добровольная пожарная часть или спасательный отряд;
  • Ассоциация коллекционеров моделей поездов;
И не участвовал более чем в трех выставках в течение предыдущих 365 дней.

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

Ксерокопия лицензии торговца или аффидевита экспонента должна быть размещена на видном месте во время выставки.

В течение семи дней после завершения выставки промоутер должен направить все письменные показания экспонентов в Контролер штата Мэриленд, Государственное лицензионное бюро, P.О. 2397, Аннаполис, Мэриленд 21404-2397.

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

Промоутер или экспонент, который не соблюдает требования закона, считается виновным в правонарушении и, в случае осуждения, может быть оштрафован на сумму до 100 долларов США или лишен свободы на срок до 30 дней. Юридическое требование к аффидевиту экспонента можно найти в статье о регулировании бизнеса Аннотированного кодекса штата Мэриленд, раздел 17-1804.

Лицензия трейдера Если вы не являетесь растениеводом или производителем, вы не можете выставлять на продажу, продавать или иным образом распоряжаться какими-либо товарами в штате Мэриленд без предварительного получения торговой лицензии у секретаря окружного суда и открытия налогового счета с продаж. Предприятия должны зарегистрироваться и пройти квалификацию в Департаменте оценки и налогообложения штата Мэриленд