В прошлой части мы сделали простейшую версию redux
мидлвари, которая умеет вызывать различные побочные эффекты в ответ на определённые действия. Однако эволюция на этом не остановилась, и сегодня я хочу поделиться с вами дальнейшим развитием этой идеи.
Слушай внимательнее
В прошлой статье вы видели пример обработчика, реагирующего на изменение параметров поиска:
function handleSearch({ state, dispatch, action }) {
if (action.type === "filters/changed") {
fetchSearchResult(getFilters(state)).then((result) =>
dispatch(searchResultReceived(result))
);
}
}
Долгое время наш код жил примерно в таком формате. Однако на практике оказалось, что стоит сделать иначе.
На панели с фильтрами было несколько разных виджетов: обычный с чекбоксами, виджет с ценами (и полями ввода для произвольных диапазонов), виджет для выбора цвета — перечислять можно долго. И у каждого из этих виджетов была своя логика обработки, которая, в том числе, могла привести к выбору значения, совпадающего с предыдущим (и зачем нам тогда ходить на сервер?).
В изначальной реализации был волшебный requestBuilder
, который использовался в компонентах и создавал новый набор фильтров, попадавший потом в состояние. Но со временем я понял, что это не совсем redux way. Лучше завести набор действий типа filters/checkbox:changed
, filters/ranged:changed
, filters/color:changed
и так далее. Я не буду углубляться в детали реализации, но набралось их порядка десятка. И код обработки изменений фильтров действительно стал гораздо более приятным, но мне очень не хотелось явно перечислять все эти действия в обработчике, ходящем к серверу.
Более того, перед отправкой запроса происходило сравнение нового запроса с предыдущим, который хранился… в URL! Ох уж этот легаси код, так я его и не вылечил. Но в этот момент стало ясно, что слушаю я не столько действия, сколько изменения состояния. Потом до меня дошло, что можно использовать эту концепцию ещё и для сохранения состояния, будь то location.search
или localStorage
. Поэтому, помимо реакции на определённые действия, я решил добавить возможность реагировать на изменение состояния. И выглядело это примерно так:
const createYam = (handlers) => (store) => (next) => (action) => {
// here
const prevState = store.getState();
next(action);
const state = store.getState();
handlers.forEach((handler) =>
handler({
state,
// and here
prevState,
dispatch: store.dispatch,
action,
})
);
};
function handleSearch({ state, prevState, dispatch, action }) {
const prevFilters = getFilters(prevState);
const filters = getFilters(state);
// we expect a piece of state to change, not an action to be dispatched
if (prefFilters !== filters) {
fetchSearchResult(filters).then((result) =>
dispatch(searchResultReceived(result))
);
}
}
Сравнение фильтров делается по ссылке, поэтому важно обеспечить, чтобы селекторы правильно отслеживали неизменность. При грамотной организации состояния и использовании reselect (тут) это не так уж и сложно сделать. Я реализовывал подобную логику даже для сложных структур (массивы объектов, которые можно сравнить по ключу вместо глубокого равенства, например), но это лежит за пределами текущей темы. Поэтому предположим, что селекторы работают правильно и возвращают нам тот же самый объект, если он по сути своей не изменился.
Единственная проблема, которая остаётся — это мемоизация. Если вы не знакомы с reselect
ом, опишу в двух словах: создаваемые селекторы кэшируют предыдущее вычисленное значение, и если входные данные не изменились, то и создавать новый результат нам не придётся.
Но по умолчанию размер кэша у этих селекторов равен единице, то есть как только на вход поступают новые данные, предыдущий результат выбрасывается. И что тогда? А то, что если несколько обработчиков используют фильтры (например, один для отправки запросов, второй — для записи их в location.search
), первый вызванный обработчик собьёт кэш, и второй уже не сможет корректно отработать.
Можно было бы, кончено, поиграться с кэшированием используемых селекторов, но я нашёл гораздо более элегантное решение, не требующее какой-то особой магии от разработчика, использующего yam
.
Вместо явного вычисления и сравнения прошлого и текущего состояний можно предоставить разработчику функцию, которая будет делать это сама:
function handleSearch({ state, stateChangedBy, dispatch, action }) {
if (stateChangedBy(getFilters)) {
fetchSearchResult(getFilters(state)).then((result) =>
dispatch(searchResultReceived(result))
);
}
}
Так давайте напишем свою собственную кэширующую магию, чтобы не сломать селекторы:
const createYam = (handlers) => (store) => (next) => (action) => {
const prevState = store.getState();
next(action);
const state = store.getState();
const stateChangedBy = createStateChangedBy(prevState, state);
handlers.forEach((handler) =>
handler({
state,
action,
dispatch: store.dispatch,
stateChangedBy,
})
);
};
function createStateChangedBy(prevState, nextState) {
// per-dispatch cache for state comparison results
const cache = new Map();
return (selector) => {
if (!cache.has(selector)) {
cache.set(selector, selector(prevState) !== selector(nextState));
}
return cache.get(selector);
};
}
Теперь на одном вызове dispatch
мы вызываем каждый селектор только два раза: один раз со старым состоянием и один раз с новым.
Есть лишь один недостаток, который мне так и не удалось победить. Предположим, у нас есть два зависимых кэширующих селектора:
const selectFilters = createSelector(selectSearchState, (searchState) =>
createFilters(searchState)
);
const selectRangeFilters = createSelector(selectFilters, (filters) =>
filters.filter(isRangeFilter)
);
Если в обработчике будет использовано stateChangedBy(selectRangeFilters)
, это собьёт кэш для selectFilters
, так как он неявно вызовется с новым состоянием. Это ломает изолированность обработчиков и всю логику сравнения, но я так и не смог понять, насколько это распространённый сценарий, поэтому чинить не стал. Однако это надо иметь в виду. И либо иначе организовывать селекторы (например, убирая мемоизацию там, где она не нужна), либо колдовать с множественным кэшированием для селекторов типа selectFilters
.
Пиши чище
Работая с такой мидлварью, я понял не только как можно её использовать, но и как её использовать не стоит.
Один из обработчиков содержал в себе крайне много условий и разных по своей природе эффектов. Читать этот код было практически невозможно, а с тестами всё было на порядок хуже. Огромное количество проверяемых кейсов, куча expect(dispatch).toBeCalledWith(action)
и страшных моков на всё, что только можно. Много времени было потрачено на обдумывание и обсуждение способов упрощения этого обработчика.
Первая идея заключалась в том, чтобы разбить этот обработчик на несколько (разделение обязанностей, внезапно). Изначально это не было сделано из-за того, что пришлось бы дублировать некоторые проверки. Но, глядя на получившегося франкенштейна, я понял, что лучше написать одинаковый if
в двух-трёх местах, чем это. И решение о разделении было принято. Но такое обсуждение натолкнуло меня на ещё более интересную мысль.
В моих обработчиках каждая ветка кода приводила к нескольким диспатчам, но, если делить их по зонам ответственности, в каждой из них был только один результат (и это правильно). И, в целом, это звучало как хорошая концепция: «В результате побочного эффекта мы можем получить одно дополнительное событие». Хочу обратить внимание, что не действие, а событие.
А потом я вспомнил, что часто проблемы с тестированием помогают решить чистые функции. И скажу я вам, что хоть мидлварь по природе своей и предназначена для побочных эффектов, это не значит, что нельзя сделать обработчик чистым. Ну а я человек простой: сказал — написал. Получилось красиво:
// this handler may lead either to a "search results recieved" event
// or to the "search cancelled" one
async function handleSearch({ state, stateChangedBy, action }) {
if (stateChangedBy(getFilters)) {
const result = await fetchSearchResult(getFilters(state));
// - replace
// dispatch(searchResultReceived(result));
// + with
return searchResultReceived(result);
}
// we should have this action to reset the `loading` state, for example
return searchCancelled();
}
const createYam = (handlers) => (store) => (next) => (action) => {
const prevState = store.getState();
next(action);
const state = store.getState();
const stateChangedBy = createStateChangedBy(prevState, state);
// the cycle must be async now
handlers.forEach(async (handler) => {
// we do not pass `dispatch` to handlers at all
const nextAction = await handler({
state,
action,
stateChangedBy,
});
// if anything has been returned from the handler,
// we suppose it's an action and dispatch it
if (nextAction) {
store.dispatch(nextAction);
}
});
};
Таким образом мы не только добавили поддержку новомодных слов async/await
, но и сделали обработчики проще в плане тестирования, а также ввели ограничение на написание чистых эффектов. Хотя бы касательно изменений состояния. Если эффекты касаются других хранилищ, увы, вызывать (и тестировать) эффекты придётся, как раньше: expect().toBeCalled()
и всё в таком духе.
Делай прививки
Ещё одна фича, которой я никогда не пользовался, но очень часто натыкался на её упоминание в сети — это инъекция отдельных обработчиков в мидлвари при определённых условиях (чаще всего, на определённых страницах или при загрузке определённых компонентов).
Я считаю, что в маленьких приложениях совершенно необязательно так заморачиваться. Достаточно поставить проверку URL в обработчике и просто выходить из него. Опыт подсказывает, что десяток-другой ===
на вызов dispatch
будет далеко не самой большой проблемой с производительностью. Поэтому в изначальной реализации я даже не думал о подобной логике.
Однако со временем я осознал, что такая фича полезна как минимум из соображений разбиения кода и уменьшения размера бандла, ведь мы не хотим тянуть в приложение код, который, возможно, даже и не понадобится некоторым пользователям. Ну и раз уж я планирую выложить эту библиотеку в общий доступ, я решил, что инъекции — это must have.
Наверное, можно придумать десятки вариантов, как добавить обработчик. Я решил опереться на то, что в идеальном приложении всяческие изменения происходят из-за некоторых событий. Значит, и новые обработчики должны добавляться тем же способом.
С именованием было сложно, так как многословно можно сказать, что нам стал нужен некоторый обработчик и обработчик перестал быть нужным, но это слишком «многабукафф». В итоге остановился на английских required
и rejected
. Если у вас есть лучшие названия для этих событий, буду рад увидеть их в комментариях.
С реализацией же всё оказалось не так сложно. Вдохновлялся я add/removeEventListener
, которые принимают событие и обработчик и удаляют его по строгому равенству. Тогда внутри кода мидлвари можно хранить их в обычном массиве:
const handlerRequiredType = Symbol("handlerRequired");
const handlerRejectedType = Symbol("handlerRejected");
function handlerRequired(handler) {
return { type: handlerRequiredType, payload: handler };
}
function handlerRejected(handler) {
return { type: handlerRejectedType, payload: handler };
}
const createYam = (handlers) => (store) => {
// store injected handlers per store
let injectedHandlers = [];
return (next) => (action) => {
if (action.type === handlerRequiredType) {
// avoid duplicates
if (!injectedHandlers.includes(action.payload)) {
injectedHandlers = [...injectedHandlers, action.payload];
}
// stop middleware chain
return;
}
if (action.type === handlerRejectedType) {
injectedHandlers = injectedHandlers.filter((h) => h !== action.payload);
// stop middleware chain
return;
}
const prevState = store.getState();
next(action);
const state = store.getState();
const stateChangedBy = createStateChangedBy(prevState, state);
// process both initial and injected handlers
handlers.concat(injectedHandlers).forEach(async (handler) => {
const nextAction = await handler({
state,
action,
stateChangedBy,
});
if (nextAction) {
store.dispatch(nextAction);
}
});
};
};
Действия на добавление обработчиков волшебные, поэтому на них цепочка мидлварей прерывается. Типы объявлены через символы для пущей безопасности: вдруг кому-то понадобится завести handlerRequired
действие. Или даже yam/handlerRequired
— никто не застрахован. Ну и вставленные обработчики хранятся на уровне store
, потому что это кажется концептуально верным, хотя если учесть, что redux
строго не рекомендует использовать несколько экземпляров store
на приложение, можно было бы и в корень модуля положить. В остальном же всё должно быть понятно.
Будь в контексте
И напоследок я хотел бы поделиться миниатюрной фичей, важность которой я понял совсем недавно и не то, чтобы до конца. Это больше похоже на ощущение, поэтому здесь мы просто добавим контекст к нашей мидлвари. Реализация будет проще простого:
// add context as an argument next to handlers
const createYam = (handlers, context) => (store) => {
let injectedHandlers = [];
return (next) => (action) => {
if (action.type === handlerRequiredType) {
if (!injectedHandlers.includes(action.payload)) {
injectedHandlers = [...injectedHandlers, action.payload];
}
return;
}
if (action.type === handlerRejectedType) {
injectedHandlers = injectedHandlers.filter((h) => h !== action.payload);
return;
}
const prevState = store.getState();
next(action);
const state = store.getState();
const stateChangedBy = createStateChangedBy(prevState, state);
handlers.concat(injectedHandlers).forEach(async (handler) => {
const nextAction = await handler({
state,
action,
stateChangedBy,
// pass the context to the handler
context,
});
if (nextAction) {
store.dispatch(nextAction);
}
});
};
};
Его можно использовать, например, для передачи HTTPClient
в обработчики (как дополнительный аргумент для redux-thunk
), либо же для передачи dispatch
, например, на период миграции, когда обработчики не могут просто так взять и отказаться от последовательных диспатчей. Дальше вы ограничиваетесь только вашей фантазией.
Заключение
На этом этапе yam
стала гораздо ближе к варианту, готовому для испытаний в реальной жизни. Она даже стала прекраснее, чем то, что я оставил на своём старом проекте. Когда-нибудь здесь появится ссылка на npm пакет, а пока я предлагаю встретиться в следующий раз, чтобы обсудить последний, но отнюдь не по важности, момент: типизацию.
Добрый день, уважаемый посетитель. В этой статье идёт разговор про Образец заполнения заявления на получение ИНН в 2022 году (бланк формы 2-2-Учет). Если по ходу у Вас назрел вопрос, спрашивайте, постараемся помочь. Надеемся, что мы сможем помочь
Способы получения ИНН
Получить идентификационный номер налогоплательщика гражданин может следующими способами:
- Путем личного обращения в налоговый орган.
С 1 января 2022 года подать заявление на выдачу ИНН и получить свидетельство можно в любом налоговом органе по выбору гражданина. Напомним, что ранее подать заявление и получить документ, подтверждающий постановку на учет, можно было только в территориальном налоговом органе по месту проживания (регистрации по паспорту) или пребывания гражданина.
- Через представителя по доверенности.
Для сдачи заявления и получения свидетельства представитель должен иметь доверенность, заверенную нотариусом, при отсутствии таковой налоговый орган откажет в приеме (выдаче) документов.
- По почте России заказным письмом с описью вложения.
Обратите внимание, что в случае направления документов по почте к заявлению необходимо приложить копию паспорта, заверенную нотариально.
- Через специализированный сервис на сайте ФНС.
Самым быстрым и удобным способом заполнения и сдачи заявления на получение ИНН является составление его на сайте Федеральной налоговой службы. Рассмотрим подробнее данный способ оформления документа о постановке на налоговый учет.
Что делать если ИНН утеряно или украдено
Для восстановления ранее утраченного свидетельства ИНН гражданину необходимо будет предоставить в налоговый орган пакет документов, а также уплатить государственную пошлину в размере 300 рублей.
Для получения дубликата ИНН в ИФНС необходимо сдать:
- Заявление на выдачу дубликата свидетельства, составленное в произвольной форме;
- Паспорт РФ или иной документ, удостоверяющий личность;
- Квитанцию об оплате государственной пошлины.
Примечание: замена свидетельства в связи со сменой фамилии, имя или отчества, пола, места или даты рождения производится налоговыми органами совершенно бесплатно. При этом законодатель отдельно указывает на то, что замена документа, подтверждающего постановку на учет, в связи с изменениями личных данных не является обязанностью гражданина, а только его правом.
Порядок самостоятельного заполнения заявления на получение свидетельства
Примечание: с официальным порядком заполнения формы № 2-2-Учет можно ознакомиться здесь.
Составление заявления на получение ИНН через Интернет
- Переходим на сайт ФНС в сервис «Постановка физического лица на учет в налоговом органе на территории Российской Федерации»
С помощью данного сервиса можно заполнить заявление о выдаче ИНН, выбрать любой налоговый орган, в котором будет происходить получение свидетельства, контролировать информацию о статусе заявления, а также работать с ранее составленным заявлением или его черновиком.
- Вводим логин (адрес электронной почты) и пароль.
Если до этого на сайте ФНС Вы не регистрировались, то необходимо это сделать, заполнив специальную форму:
Примечание: регистрация на сайте ФНС не имеет отношения к Личному кабинету налогоплательщика, доступ к которому гражданин получает путем личного посещения налогового органа.
- После ввода логина и пароля пользователь будет переведен на страницу заполнения формы заявления
Примечание: внесение данных лучше производить по порядку, руководствуясь подсказками системы.
От этапа подготовки документа до его отправки необходимо пройти 5 шагов:
Примечание: если Вы планируете получать свидетельство не в налоговом органе по месту проживания, то в последнем блоке необходимо выбрать «Иной налоговый орган»:
- На втором этапе система предложит ввести данные о документе, удостоверяющем личность, контактные данные, а также сведения об изменениях ФИО, пола, даты и места рождения
- После ввода паспортных и контактных данных будет сформирован номер заявки по которому необходимо будет получить свидетельство
На этом этапе еще можно вернуться к редактированию данных и, если вы сомневаетесь в том, все ли сведения были внесены верно, выберите в самом низу «Вернуться к редактированию заявки». Если информация отражена корректно, нажимайте «Зарегистрировать заявку и направить ее в ИФНС»:
- После совершения всех указанных действий заявка будет зарегистрирована и направлена в налоговый орган на рассмотрение:
О дальнейших действиях можно узнать, нажав на «Ожидать ответа ИФНС» в столбце «Действия»:
Бланк заявления 2-2-Учет
Форма 2-2-Учет, актуальная на 2022 год:
Скачать бланк формы 2-2-Учет заявления физического лица о постановке на учет в налоговом органе.
Образец заполнения заявления на получение ИНН
Стр.1 заявления:
Стр.2 заявления:
Стр.3 заявления:
С какого возраста выдается
Налоговое законодательство не дает четких директив относительно возраста выдачи кода ИНН. Сделать запрос на получение 12-значного кода для налогоплательщика можно в любой момент, даже в самом раннем возрасте ребенка.
До наступления его 14-летия обязанность заполнения заявки на постановку на учет налогоплательщиков ложится на родителей (опекунов). При достижении 14-летнего возраста ребенок может обращаться в налоговые органы самостоятельно.
12-значная комбинация цифр, присвоенная человеку единожды, в течение жизни не подлежит корректировке. При смене фамилии, либо других персональных данных код останется неизменным.
Образец заявки и ее особенности
Образец письменного запроса на присвоение кода налогоплательщика — это бланк формы №2-2-Учет (Приказ ФНС №ЯК-7-6/488 от 11 августа 2022 года). Документ включает в себя три листа с разделенными информационными блоками.
Сюда входят:
- Реквизиты подразделения ФНС, где осуществляется постановка на учет;
- Расширенные сведения о гражданине, которому присваивается ИНН;
- Информация о постановке на учет, заполняемая сотрудником ведомства ФНС.
С бланком бумаги можно ознакомиться здесь:
Cкачать шаблон заявки (Форма 2-2) в формате xls
Cкачать шаблон заявки (Форма 2-2) в формате pdf
Какие бумаги будут необходимы
Помимо официального обращения оформление ИНН физического лица требует приложения перечня персональных документов. В этот список входят:
- Оригинал и копия паспорта (свидетельства о рождении);
- Оригинал и копия свидетельства о прописке (если в паспорте нет соответствующей отметки).
Как заполнить заявку по Форме 2-2
Вам также могут понравиться
В заполнении заявки на присвоение ИНН предусмотрена конкретная последовательность. Страница №1 должна содержать:
- Код подразделения ФНС, куда подаются документы;
- ФИО заявителя, на которого оформляется код;
- ФИО представителя налогоплательщика и его телефон (если бумаги подает доверенное лицо);
- Наименование документа, который удостоверяет его полномочия.
Данные в графах ниже заполняет работник ведомства.
На странице №2 содержатся:
- ФИО налогоплательщика;
- Данные о смене фамилии (если замена производилась после 2022 года);
- Пол и гражданская принадлежность;
- Дата и место рождения;
- Тип бумаги, являющейся удостоверением личности;
- Код страны;
- Данные о прописке.
На странице №3 следует заполнить следующую информацию:
- ФИО заявителя;
- Дата регистрации и тип бумаги, подтверждающей данное действие (если удостоверением личности служит не паспорт гражданина РФ);
- Страна проживания перед въездом в Россию (для зарубежных мигрантов);
- Данные фактического места проживания;
- Дата и подпись заявителя.
Для заполнения всех сведений используются арабские цифры и прописные печатные буквы.
Нюансы заполнения бланка для иностранцев
Бланки на присвоение ИНН для россиян и иностранцев имеют единый формат, однако иностранным резидентам следует учитывать некоторые особенности заполнения заявки. На второй странице бланка в графе гражданства следует указать цифру «2» и код страны, подданным которой является иностранный мигрант. Данные кода содержатся в классификаторе стран (ОКСМ).
Мигранты без гражданства должны заполнить данные страны, где было оформлено удостоверение личности. При отсутствии зарегистрированного места проживания указываются официальные реквизиты места временного пребывания.
Вам также могут понравиться
Территориальные органы ФНС осуществляют выдачу ИНН при внесении лица в базу данных налогоплательщиков на основании заявления, заполненного по строгому образцу. Документ оформляется на бесплатной основе. За перевыпуск нового бланка ИНН в случае его утери или смены персональных данных также плата не взимается.
Миграционный юрист г. Санкт-Петербург, высшее образование СПбГУ, путешественница. Автор статей на сайте MigrantVisa.ru
Adblock
detector
Образец заполнения заявления на получение ИНН форма 2.2
В бланке 2.2 нужно заполнить три страницы.
Заполнение первой страницы формы 2.2:
Указывается код налогового органа, в которое подается заявление.
ФИО заявителя пишется полностью печатными буквами, согласно паспорту. Если отчества нет (у иностранных граждан), то в соответствующем поле ставится «1».
Кроме того на этой странице бланка нужно заполнить раздел «достоверность сведений подтверждаю».
Заполнение второй страницы формы 2.2:
Здесь отражается общая информация о заявителе, месте рождения, месте жительства, документе, удостоверяющем личность.
Если физическое лицо меняло свои ФИО в период после 1 сентября 2022 года, то прежние ФИО нужно указать в соответствующих полях, кроме того, поставить год замены.
Ниже указывается пол, место рождения по свидетельству о рождении, данные документа, удостоверяющего личность.
Ниже цифрой указывается, имеет физическое лицо гражданство или нет. Код страны берется из ОКСМ.
Далее пишется адрес проживания или временного пребывания в РФ.
Заполнение третьей страницы формы 2.2:
Лица без гражданства, с иностранным гражданством и для тех, кто предъявил вместо паспорта другой документ, удостоверяющий личность указывают сведения о документы, подтверждающем проживания по указанному адресу.
Также нужно указать прежний адрес проживания в РФ, причем цифрой (1 или 2) указать чем являлся этот адрес, местом постоянного жительства или местом временного пребывания.
Иностранные граждане и лица без гражданства указывают код страны постоянного проживания до своего приезда в Россию, а также срок окончания регистрации в РФ.
Адрес фактического проживания заполняется в том случае, если заявление на получение ИНН отправлено почтой и адрес места проживания не совпадает с фактическим адресом.
На каждом листе бланка заявления 2.2 должна стоять подпись заявителя или его представителя.
Скачать бланк и образец
Скачать бланк заявления на получение ИНН форма 2.2 – ссылка.
Скачать образец формы 2.2 – ссылка.
Видео – получение ИНН
Оцените качество статьи. Мы хотим стать лучше для вас:
© 2013-2022 Простая бухгалтерия · Политика конфиденциальности · Копирование материалов сайта разрешено только при наличии активной ссылки на источник
Adblock
detector
Официальная инструкция ИФНС по заполнению Формы 2-2
Скачать сразу целиком в Word
Порядок заполнения страницы 001 (Страница 1)
- В верхней части каждой страницы Заявления физическим лицом, состоящим на учете в налоговом органе, указывается идентификационный номер налогоплательщика (далее – ИНН) в соответствии с документом, подтверждающим постановку на учет в налоговом органе (Свидетельство о постановке на учет в налоговом органе, уведомление о постановке на учет в налоговом органе, сведения из Единого государственного реестра налогоплательщиков (ЕГРН), полученные в установленном порядке, отметка в паспорте гражданина Российской Федерации).
- В поле “код налогового органа” указывается код налогового органа по месту жительства (месту пребывания) физического лица, в который представляется Заявление.
- В полях “Фамилия”, “Имя”, “Отчество” указываются фамилия, имя и отчество физического лица полностью, без сокращений, в соответствии с документом, удостоверяющим личность. В случае отсутствия у физического лица отчества в поле, состоящем из одного знакоместа, проставляется цифра “1”.
- В случае если Заявление направлено по почте и (или) достоверность и полнота сведений, указанных в Заявлении, подтверждается представителем физического лица, указывается количество листов приложения к Заявлению.
- В разделе “Достоверность и полноту сведений, указанных в настоящем Заявлении, подтверждаю”:
1) при указании лица, подтверждающего достоверность и полноту сведений, указанных в Заявлении, в поле, состоящем из одного знакоместа, проставляется соответствующая цифра:
“5” – физическое лицо;
“6” – представитель физического лица.
2) если достоверность и полноту сведений подтверждает физическое лицо, подавшее Заявление, в месте, отведенном для подписи, проставляется его личная подпись, а также дата подписания заявления;
3) если достоверность и полноту сведений подтверждает представитель физического лица, в поле “фамилия, имя, отчество представителя полностью” указываются построчно фамилия, имя, отчество (при наличии) представителя физического лица в соответствии с документом, удостоверяющим личность, в месте, отведенном для подписи, проставляется личная подпись представителя физического лица, дата подписания.
ИНН лица, подтверждающего достоверность и полноту сведений, указанных в Заявлении, указывается в случае наличия у него документа, подтверждающего постановку на учет в налоговом органе (Свидетельство о постановке на учет в налоговом органе, отметка в паспорте гражданина Российской Федерации), и использования ИНН наряду с персональными данными;
4) в поле “Номер контактного телефона” указывается номер контактного телефона, по которому можно связаться с физическим лицом (его представителем) с указанием телефонных кодов, требующихся для обеспечения телефонной связи. Номер телефона указывается без пробелов и прочерков;
5) в поле “E-mail” указывается адрес электронной почты при осуществлении взаимодействия налоговых органов с лицом, подтверждающим достоверность и полноту сведений, указанных в Заявлении, в электронном виде;
6) в поле “наименование документа, подтверждающего полномочия представителя” указывается наименование документа, подтверждающего полномочия представителя налогоплательщика;
- Раздел “Заполняется работником налогового органа” содержит сведения о коде способа представления Заявления (согласно приложению № 1 к приложению № 15), количестве страниц Заявления, количестве листов копий документов, приложенных к Заявлению, дате его представления (получения), номере, под которым зарегистрировано Заявление, фамилии и инициалах имени и отчества работника налогового органа, принявшего Заявление, его подпись.
- Раздел “Сведения о постановке на учет физического лица в налоговом органе и (или) выдаче Свидетельства о постановке на учет физического лица в налоговом органе (Свидетельство)” заполняется работником налогового органа и в нем указываются:
сведения о должности, фамилии и инициалах имени и отчества работника налогового органа, осуществившего постановку физического лица на учет, ИНН и дате постановки на учет физического лица, проставляется подпись работника;
и (или) сведения о должности, фамилии и инициалах имени и отчества работника налогового органа, выдавшего Свидетельство о постановке на учет физическому лицу, реквизитах Свидетельства и дате его выдачи, проставляется подпись работника;
сведения о фамилии и инициалах имени и отчества физического лица (его представителя), получившего Свидетельство, проставляется его подпись.
Порядок заполнения страницы 002 (Страница 2)
- В верхней части страницы 002 Заявления указываются фамилия и инициалы имени и отчества физического лица, подавшего Заявление с просьбой о постановке на учет в налоговом органе по месту жительства (пребывания) или получения Свидетельства.
- Если в период после 01.09.1996 менялись фамилия, имя, отчество, указываются последние и год их замены.
- В поле “Пол” указывается пол физического лица путем проставления в поле, состоящем из одного знакоместа, цифры “1”, если пол мужской, или цифры “2”, если пол женский.
- Дата рождения указывается в соответствии с записью в документе, удостоверяющем личность заявителя.
- Место рождения указывается в точном соответствии с записями в документе, удостоверяющем личность заявителя.
Если предъявлен документ, удостоверяющий личность, в котором нет сведений о дате и месте рождения, сведения заполняются на основании свидетельства о рождении или другого документа, содержащего такие сведения.
- Код вида документа, удостоверяющего личность, указывается в соответствии со справочником “Виды документов, удостоверяющих личность налогоплательщика” (приложение № 1 к настоящему Порядку). Реквизиты документа, удостоверяющего личность (серия и номер документа, наименование органа и код подразделения, выдавшего документ, и дата его выдачи), указываются в соответствии с реквизитами документа, удостоверяющего личность заявителя.
- Поле “Наличие гражданства”, состоящее из одного знакоместа, заполняется путем проставления соответствующей цифры:
“1”- гражданин;
“2” – лицо без гражданства.
- В поле “Код страны” указывается числовой код страны, гражданином которой является заявитель. Код страны указывается согласно Общероссийскому классификатору стран мира (ОКСМ). При отсутствии у заявителя гражданства в поле “Код страны” указывается код страны, выдавшей документ, удостоверяющий его личность.
- Поле “Адрес в Российской Федерации”, состоящее из одного знакоместа, заполняется путем проставления соответствующей цифры:
“1” – место жительства;
“2” – место пребывания (при отсутствии места жительства).
Адрес (район, город, иной населенный пункт, улица, номер дома, корпуса, квартиры) места жительства в Российской Федерации указывается в соответствии с записью в паспорте гражданина Российской Федерации, виде на жительство или документе, подтверждающем регистрацию по месту жительства (если представлен не паспорт гражданина Российской Федерации, а иной документ, удостоверяющий личность). При отсутствии места жительства в Российской Федерации указывается адрес места пребывания в соответствии с записью в документе, подтверждающем регистрацию по месту пребывания. Адрес места жительства (места пребывания) указывается с почтовым индексом.
Цифровой код региона указывается в соответствии со справочником “Субъекты Российской Федерации” (приложение № 2 к приложению № 15).
- В поле “Достоверность и полноту сведений, указанных на данной странице, подтверждаю” проставляется подпись заявителя или его представителя.
Порядок заполнения страницы 003 (Страница)
- В верхней части страницы 003 Заявления указываются фамилия и инициалы имени и отчества физического лица, подавшего Заявление о постановке на учет в налоговом органе по месту жительства (месту пребывания) или получения Свидетельства.
- В сведениях о документе, подтверждающем регистрацию по месту жительства в Российской Федерации (для иностранного гражданина или лица без гражданства; для гражданина России, представившего документ, удостоверяющий личность, отличный от паспорта гражданина Российской Федерации) или регистрацию по месту пребывания (при отсутствии места жительства), указываются вид документа в соответствии со справочником “Виды документов, удостоверяющие личность налогоплательщика”, (приложение № 1 к настоящему Порядку) и реквизиты документа (серия и номер документа, наименование органа, выдавшего документ, и дата его выдачи) в соответствии с указанным документом.
- Дата регистрации по адресу места жительства (места пребывания) проставляется на основании записи в паспорте или документе, подтверждающем регистрацию по месту жительства (если представлен не паспорт, а иной документ, удостоверяющий личность), или документе, подтверждающем регистрацию по месту пребывания.
- Поле “Прежний адрес в Российской Федерации” заполняется аналогично пункту 18 настоящего Порядка.
- Дата регистрации по адресу прежнего места жительства (места пребывания) проставляется на основании записи в паспорте (документе, подтверждающем регистрацию по прежнему месту пребывания). Если заявителем представлен документ, подтверждающий регистрацию по месту жительства, не содержащий дату регистрации по прежнему месту жительства, то дата регистрации записывается без документального подтверждения.
- В поле “Страна постоянного проживания до прибытия в Российскую Федерацию (для иностранного гражданина и лица без гражданства)” указывается числовой код страны постоянного проживания до прибытия в Российскую Федерацию иностранными гражданами и лицами без гражданства согласно ОКСМ.
- В поле “Дата окончания регистрации по месту жительства (месту пребывания) на территории Российской Федерации (при ее наличии) (для иностранного гражданина и лица без гражданства)” указывается дата окончания регистрации по месту жительства (месту пребывания) на территории Российской Федерации.
- Указывается адрес для взаимодействия с физическим лицом, проживающим не по адресу места жительства (места пребывания) без документального подтверждения, если заявление направлено по почте.
- В поле “Достоверность и полноту сведений, указанных на данной странице, подтверждаю” проставляется подпись заявителя или его представителя.
Скачать сразу целиком в Word
Заполнять от руки или на компьютере
Заявление можно заполнить от руки. Но ручка должна быть шариковая, а цвет пасты – синий или черный. Кроме того, необходимо соблюдать следующие правила:
- начинать заполнять поле следует с первого знакоместа (квадратика);
- вся информация вносится только печатными прописными буквами.
Правила заполнения
В НК РФ определено, что составление заявления по поводу получения ИНН может быть произведено рукописно или посредством использования ПК с последующей распечаткой.
Вместе с этим существует еще ряд правил применительно к рассматриваемой теме:
- распечатка каждого листа анкеты должна производиться отдельно, то есть с одной стороны листа бумаги;
- скрепление листов нельзя производить таким способом, применение которого привело бы к повреждению бумаги;
- написание дат возможно лишь за счет использования исключительно цифр;
- помарки и какие-либо исправления при составлении анкеты не допускаются;
- если предполагается заполнение электронного варианта анкеты, то для этого следует выбирать шрифт Courier New, имеющий размер 16.
Тонкости заполнения для иностранцев
По законам РФ получить ИНН может и лицо, не являющееся гражданином РФ. В связи с тем, что бланк заявления на получение идентификационного номера един для всех, у представителей других стран могут возникнут определенные трудности при заполнении. Выше мы уже отмечали основные различия в занесении информации в анкету для граждан и не граждан РФ. Разберем их подробнее:
- Первые несоответствия начинаются со второй страницы. После того как в графе о гражданстве (пункт 6) была проставлена цифра «2», необходимо указать код страны, гражданством которой обладает заявитель. Если же отсутствует гражданство совсем, то указываются данные страны, выдавшей удостоверяющие личность документы.
- Затем необходимо указать адрес места жительства, имеющий документальное подтверждение. Если такового нет, то указывается место пребывания, которое должно быть подтверждено документом регистрации.
- На 3 странице (пункт 2 нашего списка) требуется указать тип документа, подтверждающего регистрацию. Здесь необходимо воспользоваться справочником о видах документов, чтобы указать правильный код.
- 5 пункт нашего списка на той же странице: указание страны проживания до приезда в Россию. Здесь необходимо указать код, который можно найти в ОКСМ.
Образец заявления на получение ИНН по форме 2-2 Учёт
В случае обращения в конкретное отделение ФНС бланк заявления предоставляется на месте. Если будет выбран другой способ обращения по поводу получения ИНН, например, посредством почтовых услуг, то потребуется найти бланк заявления в интернете. Для решения этого вопроса можно воспользоваться функциональностью официального ресурса ФНС, который дает возможность не только скачать требуемый бланк, но и заполнить его электронный вариант. Правда, последний упомянутый способ доступен лишь для тех, кто является обладателем электронной подписи.
Официальный бланк ИФНС (Форма 2-2 Учет) скачать
Это ссылка для скачивания с официального сайта Федеральной Налоговой Инспекции (nalog.ru)
Образец заполнения формы 2-2 Учет (ИНН)
Первая страница
Вторая страница
Третья страница
Видео “Рассказывает инспектор ИФНС про Заявление на ИНН по форме 2-2 учет”
Форма 2-2-Учет: бланк скачать
В соответствии с НК РФ форма заявления о постановке на учет физлица утверждается ФНС (п. 5.1 ст. 84 НК РФ). Такая форма утверждена Приказом ФНС от 11.08.2011 № ЯК-7-6/[email protected] (Приложение № 6). Она именуется Заявление физического лица о постановке на учет в налоговом органе (форма № 2-2-Учет).
Заявление по форме 2-2-Учет скачать в формате PDF можно здесь.
Образец заполнения 2-2-Учет
Общие требования к заполнению формы № 2-2-Учет приведены в п.п. 2-4 Порядка заполнения формы (Приложение № 15 к Приказу ФНС от 11.08.2011 № ЯК-7-6/[email protected]).
Так, к примеру, можно выделить следующие основные требования к заявлению:
- заполняется в одном экземпляре от руки чернилами черного или синего цвета либо на компьютере шрифтом Courier New высотой 16 — 18 пунктов;
- нельзя исправлять ошибки в заявлении с помощью корректирующего средства, использовать двустороннюю печать документа, скреплять листы, если это приводит к порче документа;
- в незаполненных ячейках ставится прочерк. При распечатке на принтере прочерки могут не заполняться.
Прочие вопросы заполнения формы № 2-2-Учет приведены в Порядке заполнения формы (Приложение № 16 к Приказу ФНС от 11.08.2011 № ЯК-7-6/[email protected]).
Образец заполнения заявления по форме 2-2-Учет при его подготовке на компьютере в формате PDF представим ниже.
Заявление 2-2-Учет: образец заполнения
Более полную информацию по теме вы можете найти в КонсультантПлюс.
Полный и бесплатный доступ к системе на 2 дня.
Форум для бухгалтера:
Нужное
À. È. Êóïðèí
Àëåêñåé Ðåìèçîâ. ×àñû
Ðîìàí, èçä. «EOS», ÑÏá., 1908.
1908
———————————————————
Опубликовано:
Использование терминов: Jenkins, CI/CD.
В данной инструкции представлена базовая информация по использованию pipeline в Jenkins. Мы рассмотрим процесс для чайников, начиная с установки плагина, создания задания и перейдем к разбивке процесса обработки кода на стадии.
Установка плагина
При установке Jenkins система по умолчанию предлагает установить плагин pipeline. Вероятно, в нашей системе он есть. Но если плагин не установлен, переходим на стартовой странице веб-интерфейса Jenkins в раздел Настроить Jenkins:
Кликаем по Управление плагинами:
Переходим на вкладку Доступные и ищем нужный нам плагин по слову «pipeline». Мы получим большое количество результатов — нам нужен плагин с названием «Pipeline»:
Внизу экрана нажимаем Install without restart:
Мы увидим полный список компонентов, которые нужно будет установить для плагина — дожидаемся окончания процесса (мы должны увидеть «Успешно» или «Success»):
* в процессе установки плагина могут появиться сообщения об ошибках. Проблемы могут быть связаны с расхождением версий зависимых компонентов или необходимостью перезагрузки. Так или иначе, просматриваем такие сообщения и самостоятельно пытаемся в них разобраться.
После завершения установки, можно вернуться на главную страницу, кликнув по одноименной ссылке:
Наша система готова для создания конвейера.
Создание и настойка задания
На главной странице Jenkins кликаем по Создать Item:
Даем название нашей задаче и ниже выбираем Pipeline:
Нажимаем кнопку OK:
Прокручиваем страницу вниз до подраздела «Pipeline» — сюда мы пишем скрипт на Groovy:
Также у нас есть возможность использовать репозиторий Git в качестве источника файла Jenkinsfile, выбрав в подразделе «Definition» Pipeline script from SCM и Git:
… но мы в данной инструкции будем рассматривать написание кода напрямую в Jenkins.
Для начала, напишем приветствие:
pipeline {
agent any
stages {
stage(‘Hello’) {
steps {
echo ‘Hello World’
}
}
}
}
Существует 2 способа написания pipeline — скриптовый и декларативный. В нашем примере используется последний. Благодаря строгому синтаксису, он проще читается — в декларативном пайплайне обязательно должны быть:
- Директива pipeline. В нее мы оборачиваем наш код.
- Определение агента. В нашем примере пока не задан конкретный (agent any), но ниже мы рассмотрим запуск конвейера в docker.
- Необходима директива stages, в которой, в свою очередь, определены стадии (stage).
- Обязательно указываем steps, в котором и будет наш код.
А также:
- Экранирование некоторых символов можно сделать с помощью обратного слеша —
- Блок текста, например для его написания в несколько строк, можно обернуть в три одинарные кавычки — »’
- Оставить комментарий на одну строку можно двумя прямыми слешами — //
- Блок комментария делаем так — /* комментарий */
И нажимаем Сохранить:
* наш скрипт на Groovy будет сохранен в так называемый Jenkinsfile — это файл, в котором мы описываем этапы выполнения нашего задания с использованием pipeline.
Нас перекинет на страницу задания — слева кликаем по Собрать сейчас:
Конвейер немного поработает и выдаст результат, состоящий из одного шага:
Созданное задание работает — попробуем его усложнить.
Разбиваем обработку на этапы
Открываем на редактирование наше задание:
Перемещаемся вниз и пишем следующий код на Groovy:
pipeline {
agent any
stages {
stage(‘Сборка’) {
steps {
echo ‘Выполняем команды для сборки’
}
}
stage(‘Тестирование’) {
steps {
echo ‘Тестируем нашу сборку’
}
}
stage(‘Развертывание’) {
steps {
echo ‘Переносим код в рабочую среду или создаем артефакт’
}
}
}
}
* в данном примере мы выполняем задание в три этапа — сборка, тестирование и развертывания. В рамках нашей инструкции мы не будем выполнять ничего конкретного, поэтому просто выводим на экран текстовую информацию.
Сохраняем изменения и запускаем задачу на выполнение:
После ее завершения мы должны увидеть что-то на подобие:
Попробуем посмотреть чуть подробнее протокол выполнения — кликаем по изображению стрелки справа от названия задания и выбираем Последняя стабильная сборка (или просто Последняя сборка):
Кликаем по Console Output:
Мы должны увидеть вывод всех комментарий и команд, которые выполнялись во время сборки.
Обработка в Docker
Jenkins может выполнять задание внутри Docker. Таким образом, мы можем использовать контейнеры с настроенной средой, необходимой для тестирования и сборки кода и получения необходимых артефактов.
Рассмотрим настройку сервера для возможности использовать Docker и пример кода на Groovy.
Подготовка системы
Мы должны выполнит ряд действий:
- Установку плагина для работы Jenkins с Docker.
- Установку сервиса Docker в системе.
- Настройку привилегий.
1. Начнем с установки плагина. На главной странице Jenkins переходим в настройки:
Кликаем по разделу Управление плагинами:
Среди списка плагинов находим «Docker Pipeline» и отмечаем его для установки:
Переходим к установке:
… и доживаемся ее окончания.
2. Подключаемся к консоли по SSH и выполняем Установку Docker.
3. Чтобы можно было подключиться к Docker из Jenkins, необходимо, чтобы пользователь jenkins входил в группу docker — для этого выполняем команду:
usermod -a -G docker jenkins
После необходимо перезапустить дженкинс:
systemctl restart jenkins
Среда готова для работы с контейнерами.
Использование агента docker
Переходим к настройке нашего задания или создаем новое и приводим Groovy-код к такому виду:
pipeline {
agent { docker { image ‘python:latest’ } }
stages {
stage(‘Подготовка’) {
steps {
sh «python —version»
}
}
stage(‘Сборка’) {
steps {
echo ‘Выполняем команды для сборки’
}
}
stage(‘Тестирование’) {
steps {
echo ‘Тестируем нашу сборку’
}
}
stage(‘Развертывание’) {
steps {
echo ‘Переносим код в рабочую среду или создаем артефакт’
}
}
}
}
* обратите внимание, мы изменили агента на docker с указанием образа, в котором будет выполняться обработка — в данном примере, с помощью python (последней версии). Также мы добавили этап Подготовка, в котором просто выведем на экран версию python.
Первый запуск будет выполняться долго, так как необходимо будет загрузить образ. В конечном итоге, мы должны получить, примерно, следующую картину:
Для подробного просмотра хода процесса (или решения проблем в случае их возникновения), кликаем по стрелке справа от названия задания и переходим к сборке:
Переходим к консоли:
Если задание выполнено успешно, среди логов мы должны увидеть версию используемого в контейнере Docker python:
Читайте также
Некоторые инструкции, которые могут оказаться полезными:
1. Установка Jenkins на Ubuntu
2. Установка Jenkins на CentOS
40015
Ivan Butko:
Здравствуйте.
Ни разу не заказывал во фрилансе. Хочу попробовать, прочитал все правила, но остались некоторые вопросы.
Я хочу заказать не совсем простой индикатор с торговой панелью. Впоследствии заказать советник на основе логики индикатора. Соответственно, подозреваю, что исполнители будут соглашаться только на справедливые суммы, в разы превышающие минимальные 30 долларов. Поскольку в настоящее время имеются затруднения в финансовом плане, то приходится жестко ограничиваться в своих желаниях. Поэтому необходимо поделить заказ на несколько штук. Поначалу написать основную логику, затем остальные «примочки».
Вопрос в том, чтобы писать всё это одному программисту, который уже «понял», что от него требуется. И последующее возвращение к работе прошло бы быстро. Я так подозреваю, тяжело «читать», разбирать чужой код.
Возможно ли иметь дело с одним исполнителем в дальнейшем? Или это не проблема отдать код новому исполнителю, чтобы он «дописал» примочки, а третий исполнитель через какое-то время писал уже советника на его основе? Может необходимо требовать от исполнителя писать комментарии, что он пишет? Что делается в таких случаях?
Не понимаю, как поступить, если отсутствует большая сумма на реализацию всех задумок сразу.
А если исполнитель за это увеличит стоимость?
Я думаю лучше разместить полное ТЗ, согласовать полную стоимость и оговаривать какую часть из этого делать сейчас и за сколько. В дальнейшем делать персональную заявку на продолжение.
66034
Как так? Столько лет заседать на форум и до сих пор не знать, что в индикаторе не может быть торговой панели!
И вообще, какие могут панели, если нет денег?
16071
Разбирать чужой код сложнее чем написать заново. Имею ввиду чтоб понять и изменить логику. Но чтоб написать советник по индикатору совсем не нужно разбирать или даже смотреть исходный код индикатора. В этом плане можно смело разбивать задачу.
Если один человек делает работу ему намного проще сделать сразу все дополнения, тем более многие дополнения нужно учитывать сразу при разработке алгоритма. Дополнение может обойтись +5-10 для человека который уже вник в работу, ориентируется в своем коде, а можно и за каждым дополнением делать отдельный заказ +30++. Это же совсем другие деньги.
Можно попросить скинуть цену если ТЗ будет лаконичное, понятное, обдуманное. Т.е. не «вот посмотрите это видео» или «вот такие-то паттерны», а четко прописано — «если вот то больше вот этого настолько пунктов — показывать сигнал вот такой» и т.д. чтоб не приходилось уточнять и сочинять, а только нужно было закодить. Это очень экономит время. Часто из-за хорошего ТЗ делаю скидку.
Можно удешевить некоторые моменты, например, вместо панели можно вывести всё комментарием в углу экрана и потом, если появиться необходимость, сделать полноценную панель (если информация та же — не нужно будет разбирать логику всего кода) . Можно некоторые дополнения позже доделывать — посмотреть на результат и потом, если все таки будут нужны, увеличивать стоимость заказа и доделывать. Но лучше сразу предупредить исполнителя что эти дополнения могут быть
66034
Alexey Viktorov #:
А если исполнитель за это увеличит стоимость?
///
Естественно, за это всегда увеличивается стоимость.
6801
Alexey Viktorov #:
А если исполнитель за это увеличит стоимость?
Я думаю лучше разместить полное ТЗ, согласовать полную стоимость и оговаривать какую часть из этого делать сейчас и за сколько. В дальнейшем делать персональную заявку на продолжение.
Спасибо, принял к сведению
6801
Dmitry Fedoseev #:
Как так? Столько лет заседать на форум и до сих пор не знать, что в индикаторе не может быть торговой панели!
И вообще, какие могут панели, если нет денег?
Я только начал изучать язык, но не дошëл ещë до этого параграфа))))
Ну, вот так вот случается иногда. Месяц другой греб лопатой деньги, но тратил не на то, что нужно. Сейчас счета в минусах, прибыли нет, приходится выкручиваться.
6801
Sofiia Butenko #:
Разбирать чужой код сложнее чем написать заново. Имею ввиду чтоб понять и изменить логику. Но чтоб написать советник по индикатору совсем не нужно разбирать или даже смотреть исходный код индикатора. В этом плане можно смело разбивать задачу.
Если один человек делает работу ему намного проще сделать сразу все дополнения, тем более многие дополнения нужно учитывать сразу при разработке алгоритма. Дополнение может обойтись +5-10 для человека который уже вник в работу, ориентируется в своем коде, а можно и за каждым дополнением делать отдельный заказ +30++. Это же совсем другие деньги.
Можно попросить скинуть цену если ТЗ будет лаконичное, понятное, обдуманное. Т.е. не «вот посмотрите это видео» или «вот такие-то паттерны», а четко прописано — «если вот то больше вот этого настолько пунктов — показывать сигнал вот такой» и т.д. чтоб не приходилось уточнять и сочинять, а только нужно было закодить. Это очень экономит время. Часто из-за хорошего ТЗ делаю скидку.
Можно удешевить некоторые моменты, например, вместо панели можно вывести всё комментарием в углу экрана и потом, если появиться необходимость, сделать полноценную панель (если информация та же — не нужно будет разбирать логику всего кода) . Можно некоторые дополнения позже доделывать — посмотреть на результат и потом, если все таки будут нужны, увеличивать стоимость заказа и доделывать. Но лучше сразу предупредить исполнителя что эти дополнения могут быть
Огромное спасибо за развëрнутый ответ.
Да, тех задание у меня формализованное, т.е. все по строгому алгоритму, не нужно будет сочинять.
9332
Ivan Butko:
Здравствуйте. Ни разу не заказывал во фрилансе. Хочу попробовать, прочитал все правила, но остались некоторые вопросы.
Я хочу заказать не совсем простой индикатор с торговой панелью.
По моему будет куда правильнее заинтересовать исполнителя. И начать долговременное сотрудничество. В этом случае — можно и дешевле договориться, и работа будет эффективнее.
У тебя неплохой авторитет на форуме, соответственно, и к твоим словам народ будет прислушиваться больше. Если идея стоящая — результаты должны удовлетворить вас обоих.
6801
Georgiy Merts #:
По моему будет куда правильнее заинтересовать исполнителя. И начать долговременное сотрудничество. В этом случае — можно и дешевле договориться, и работа будет эффективнее.
Вариант!
Georgiy Merts #:
У тебя неплохой авторитет на форуме, соответственно, и к твоим словам народ будет прислушиваться больше. Если идея стоящая — результаты должны удовлетворить вас обоих.
Спасибо, звучит приятно, но, к сожалению, полезный контент от меня отсутствует (статьи, кодбаза). Хотя, идей много, язык бы выучить.
9332
Ivan Butko #:
Вариант!
Спасибо, звучит приятно, но, к сожалению, полезный контент от меня отсутствует (статьи, кодбаза). Хотя, идей много, язык бы выучить.
Контента, может быть, и немного. Но ты регулярно принимал участия в обсуждениях различных вопросов на форуме — и это уже немало. Если есть идея — надо заводить отдельную тему, и в ней регулярно выкладывать результаты. В итоге вначале появятся просто интересующиеся, а потом, если идея будет стоящей — то и желающие поучаствовать, и среди них вполне возможно, будут и люди, способные написать довольно серьезного эксперта.