Автоматическая подстановка реквизитов по инн в таблицах google

Время на прочтение
2 мин

Количество просмотров 5.7K

Ранее я публиковал уже пример генерации суммы прописью с помощью новых сервисов Google Spreadsheets
habrahabr.ru/blogs/google/104057

Теперь реализована также функция проверки правильности ввода ИНН.

Открыть таблицу https://spreadsheets.google.com/ccc?key=0AppCRCbx33I9dG1rM2lmSW56VmFVeVBmZng0dE5jcmc&hl=en
Просто скопируйте таблицу в свой аккаунт и введите =is_valid_inn(A3) со ссылкой на значение в требуемое поле
Источник кода

Copy Source | Copy HTML

  1. // Функция для проверки правильности ИНН
  2. function is_valid_inn(i)
  3. {
  4.     i += '';
  5.     if ( i.match(/D/) ) return false;
  6.  
  7.     var inn = i.match(/(d)/g);
  8.  
  9.     if ( inn.length == 10 )
  10.     {
  11.         return inn[9] == String(((
  12.             2*inn[ 0] + 4*inn[1] + 10*inn[2] +
  13.             3*inn[3] + 5*inn[4] + 9*inn[5] +
  14.             4*inn[6] + 6*inn[7] + 8*inn[8]
  15.         ) % 11) % 10);
  16.     }
  17.     else if ( inn.length == 12 )
  18.     {
  19.         return inn[10] == String(((
  20.              7*inn[ 0] + 2*inn[1] + 4*inn[2] +
  21.             10*inn[3] + 3*inn[4] + 5*inn[5] +
  22.              9*inn[6] + 4*inn[7] + 6*inn[8] +
  23.              8*inn[9]
  24.         ) % 11) % 10) && inn[11] == String(((
  25.             3*inn[ 0] + 7*inn[1] + 2*inn[2] +
  26.             4*inn[3] + 10*inn[4] + 3*inn[5] +
  27.             5*inn[6] + 9*inn[7] + 4*inn[8] +
  28.             6*inn[9] + 8*inn[10]
  29.         ) % 11) % 10);
  30.     }
  31.  
  32.     return false;
  33. }​

news.eastgeology.com/2010/09/google-spreadsheets_19.html — пример внедренной таблицы

Простой инструмент, который может экономить время.

Так уж вышло, что мы реализовали почти 500 проектов в «Google Таблицах» и очень хорошо разбираемся в них. Можно прочитать про нас на сайте Helpexcel.pro.

Рабочие процессы многих компаний связаны с таблицами. И все их используют для разных целей. Кто-то для подготовки отчётов, кто-то ведёт реестр продаж, кто-то совершает расчёты и готовит смету для клиента. Разных бизнес-задач в «Google Таблицах» множество.

Не больше 20% от всех процессов в таблицах выстроены рациональным образом и не доставляют лишних проблем тем, кто с ними работает

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

Как работает

Заполняем строку таблицы переменными договора

Наименование организации, сумма, условия. У каждого эти поля будут свои.

Создаём копию шаблона

В соответствующей ячейке шаблона меняем номер договора

На соседнем листе формируется договор

Выводим на печать или сохраняем в нужном формате, например в PDF

Решается сразу несколько проблем:

  1. Данные всех договоров в одном реестре.
  2. Организованное хранение документов.
  3. Минимизация временных трудозатрат.

Как сделать автозаполнение самостоятельно

Все решается за счёт двух формул. Просто нужно посмотреть на процесс немного иначе.

Создаем таблицу реестра документов

В нём должны быть переменные поля документов, которые нам нужно заполнять.

Переносим договор для автозаполнения в «Google Таблицу»

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

Формулой IMPORTRANGE нужно подтянуть весь реестр в таблицу шаблона

Формулой ВПР подтянуть переменные величины в соответствующие поля договоры

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

Папка с описанными таблицами. Скопируйте их на свой «Google Диск» (в меню: Файл → Создать копию)

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

Успехов!

Автозаполнение договоров и типовых документов

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

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

НОВЫЙ ПРОЕКТ ОТ РАЗРАБОТЧИКОВ HELPEXCEL

Будем оптимизировать работу с договором на оказание услуг
(изменяемые поля выделены желтым).

автозаполнение договоров

В качестве изменяемых полей будут значения из нижеприведенной таблицы 1:

автоматически заполнять договора

Создаем папку «Договора» и в ней создаем таблицу с названием «Шаблон» и «Реестр» ( кликните на выделенные слова «шаблон» и «реестр», чтобы перейти по ссылке в таблицы)

реестр

На первом листе таблицы «Реестр» создаем таблицу с полями:

таблица реестра

Заходим в таблицу «Шаблон» и на первом листе создаем форму ввода данных. Просто рисуем и форматируем ячейки так, как будет удобно. Далее значения из нашей формы будут подставляться в шаблон договора.

параметры договора

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

содержимое договора

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

шаблон договора

А так же применять инструменты для выравнивания текста:

выравнивание текста

И инструменты для форматирования:

инструменты для форматирования в гугл таблицах

Теперь самое главное!
Сперва определим алгоритм документооборота:
У нас есть таблица «Реестр», в ней в каждой строке содержатся данные для одного договора. Пользователь заполняет таблицу реестра:

заполнение реестра

И открывает ее.
В копии заполняется только поле «Номер договора». Данные автоматически подставляются в соответствующие места договора.

шаблон договора

Далее создает копию шаблона:

заполняем номер договора

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

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

Переходим на лист «Реестр» в таблице «Шаблон». Встаем курсором на ячейку А1 и вводим следующую формулу:
=importrange(«https://docs.google.com/s..»;»Реестр!B:O»)

Получаем массив данных реестра:

importrange

Далее с помощью функции ВПР будем подтягивать по номеру договору, который введет пользователь, данные реестра.

Вид функции: =ВПР(Искомое значение; диапазон в котором осуществляется поиск; номер столбца из которого возвращается значение; точность совпадений (в 99,99% случаев указываем «0» (нуль))

На листе «Данные» встаем на ячейку С4 и вводим формулу:
=ВПР(C3;’Реестр‘!A:N;2;0)

В ячейке С4 появится значение:

номер договора, стоимость работ, срок выполнения

Н/Д – нет данных. Значение отображается потому что в таблице не найдено пустого значения. Что бы все было красиво и без ошибок включим формулу ЕСЛИОШИБКА
Вид функции: =ЕСЛИОШИБКА(Значение если нет ошибка; Значение если ошибка)
Таким образом наша формула примет следующий вид:
=ЕСЛИОШИБКА(ВПР(C3;’Реестр‘!A:N;2;0);»»)

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

функция ЕСЛИОШИБКА

Теперь введем номер одного из имеющихся в реестре договоров и получим заполненную форму:

заполненная форма в реестре

Теперь осталось подставить полученные данные в шаблон договора.
В ячейке для номера договора вводим формулу: =‘Данные’!C3
Таким образом ссылаемся на соответствующее поле на листе «Данные».
В поле даты договора вводим формулу: =СЕГОДНЯ()
В шаблоне всегда будет фигурировать текущая дата.
В ячейку юридического статуса вводим формулу: =‘Данные’!C8
А вот ячейка для ФИО состоит из трех полей на листе «Данные». Поэтому воспользуемся простой текстовой функцией СЦЕПИТЬ и получим такую формулу:

=СЦЕПИТЬ(‘Данные’!C11;» «;‘Данные’!C12;» «;‘Данные’!C13)

функция СЦЕПИТЬ

Следующее поле, которое нужно заполнить – это сумма договора.
Вводим формулу: =’Данные’!C4

В соседнем поле нужно вывести сумму прописью. Поскольку стандартным функционалом Гугл Таблиц не это не предусмотрено, воспользуемся готовым решением.

Заходим в редактор скриптов:

И вставляем фрагмент нижеприведенного кода:

var mapNumbers = {
0 : [2, 1, «ноль»],
1 : [0, 2, «один», «одна»],
2 : [1, 2, «два», «две»],
3 : [1, 1, «три»],
4 : [1, 1, «четыре»],
5 : [2, 1, «пять»],
6 : [2, 1, «шесть»],
7 : [2, 1, «семь»],
8 : [2, 1, «восемь»],
9 : [2, 1, «девять»],
10 : [2, 1, «десять»],
11 : [2, 1, «одиннадцать»],
12 : [2, 1, «двенадцать»],
13 : [2, 1, «тринадцать»],
14 : [2, 1, «четырнадцать»],
15 : [2, 1, «пятнадцать»],
16 : [2, 1, «шестнадцать»],
17 : [2, 1, «семнадцать»],
18 : [2, 1, «восемнадцать»],
19 : [2, 1, «девятнадцать»],
20 : [2, 1, «двадцать»],
30 : [2, 1, «тридцать»],
40 : [2, 1, «сорок»],
50 : [2, 1, «пятьдесят»],
60 : [2, 1, «шестьдесят»],
70 : [2, 1, «семьдесят»],
80 : [2, 1, «восемьдесят»],
90 : [2, 1, «девяносто»],
100 : [2, 1, «сто»],
200 : [2, 1, «двести»],
300 : [2, 1, «триста»],
400 : [2, 1, «четыреста»],
500 : [2, 1, «пятьсот»],
600 : [2, 1, «шестьсот»],
700 : [2, 1, «семьсот»],
800 : [2, 1, «восемьсот»],
900 : [2, 1, «девятьсот»]
};
var mapOrders = [
{ _Gender : true, _arrStates : [«рубль», «рубля», «рублей»] },
{ _Gender : false, _arrStates : [«тысяча», «тысячи», «тысяч»] },
{ _Gender : true, _arrStates : [«миллион», «миллиона», «миллионов»] },
{ _Gender : true, _arrStates : [«миллиард», «миллиарда», «миллиардов»],
{ _Gender : true, _arrStates : [«триллион», «триллиона», «триллионов»] } ];
var objKop = { _Gender : false, _arrStates : [«копейка», «копейки», «копеек»] };
function Value(dVal, bGender) {
var xVal = mapNumbers[dVal];
if (xVal[1] == 1) {
return xVal[2];
} else {
return xVal[2 + (bGender ? 0 : 1)];
}
}
function From0To999(fValue, oObjDesc, fnAddNum, fnAddDesc)
{ var nCurrState = 2;
if (Math.floor(fValue/100) > 0) {
var fCurr = Math.floor(fValue/100)*100;
fnAddNum(Value(fCurr, oObjDesc._Gender));
nCurrState = mapNumbers[fCurr][0];
fValue -= fCurr;
}
if (fValue < 20) {
if (Math.floor(fValue) > 0) {
fnAddNum(Value(fValue, oObjDesc._Gender));
nCurrState = mapNumbers[fValue][0];
}
} else {
var fCurr = Math.floor(fValue/10)*10;
fnAddNum(Value(fCurr, oObjDesc._Gender));
nCurrState = mapNumbers[fCurr][0];
fValue -= fCurr;
if (Math.floor(fValue) > 0) {
fnAddNum(Value(fValue, oObjDesc._Gender));
nCurrState = mapNumbers[fValue][0];
}
}
fnAddDesc(oObjDesc._arrStates[nCurrState]);
}
function FloatToSamplesInWordsRus(fAmount)
{
var fInt = Math.floor(fAmount + 0.005);
var fDec = Math.floor(((fAmount — fInt) * 100) + 0.5);
var arrRet = [];
var iOrder = 0;
var arrThousands = [];
for (; fInt > 0.9999; fInt/=1000) {
arrThousands.push(Math.floor(fInt % 1000));
}
if (arrThousands.length == 0) {
arrThousands.push(0);
}
function PushToRes(strVal) {
arrRet.push(strVal); }
for (var iSouth = arrThousands.length-1; iSouth >= 0; —iSouth) {
if (arrThousands[iSouth] == 0) {
continue;
}
From0To999(arrThousands[iSouth], mapOrders[iSouth], PushToRes, PushToRes); }
if (arrThousands[0] == 0) {
// Handle zero amount
if (arrThousands.length == 1) {
PushToRes(Value(0, mapOrders[0]._Gender)); }
var nCurrState = 2;
PushToRes(mapOrders[0]._arrStates[nCurrState]);
}
if (arrRet.length > 0) {
// Capitalize first letter
arrRet[0] = arrRet[0].match(/^(.)/)[1].toLocaleUpperCase() + arrRet[0].match(/^.(.*)$/)[1]; }
arrRet.push((fDec < 10) ? («0» + fDec) : («» + fDec));
From0To999(fDec, objKop, function() {}, PushToRes);
return arrRet.join(» «);
}

Далее сохраняем и задаем название проекта:

Чтобы перевести числовую сумму в текстовый эквивалент, необходимо в таблице воспользоваться функцией =FloatToSamplesInWordsRus() и в скобках указать адрес ячейки, в которой у нас хранится числовая сумма.
Введем формулу со ссылкой на сумму:

=FloatToSamplesInWordsRus(A57)
Получим искомое значение:

Дальше прописываем формулы для реквизитов:

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

Функция ЕСЛИ проверяет ячейку на совпадение с задаваемыми условиями и возвращает одно значение в случае совпадения и другое в противном случае.
Вид функции: =ЕСЛИ(условие; значение если истина; значение если ложь)
В нашем случае функция будет иметь следующий вид:
=ЕСЛИ(C8=«ИП»;«ИП»;ЕСЛИ(C8=«общество с ограниченной ответственностью»;«ООО»;C8))

Вставим ее рядом с полем «Юридический статус» на листе «Данные»:

Вернемся к реквизитам.
Теперь в поле наименования можно ввести формулу со ссылкой на две ячейки листа «Данные»:
=СЦЕПИТЬ(‘Данные’!D8;» «;‘Данные’!C9)
И прописываем ссылки на остальные реквизиты. Получаем искомый результат:

Осталось заполнить место для подписи фамилией и инициалами. Для этого воспользуемся функцией ЛЕВСИМВ
Функция ЛЕВСИМВ отображает заданное количество знаков с левого края значения ячейки.
Вид функции: =ЛЕВСИМВ(значение; количество знаков)
Для того, что бы получить нужное нам значение, нужно воспользоваться функцией СЦЕПИТЬ в связке с ЛЕВСИМВ.
Таким образом формула будет иметь вид (рис.26):
=СЦЕПИТЬ(ЛЕВСИМВ(‘Данные’!C12;1);».»;ЛЕВСИМВ(‘Данные’!C13;1);». «;‘Данные’!C11)

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

Делаем фон однотонно – белым:

Теперь, не снимая выделения с табличной области, сделаем границы ячейки белыми:

Удаляем ненужные столбцы и строки:

Проверяем расположение границ при выводе на печать:

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

Есть замечательный сервис DaData.ru, который умеет не только исправлять контактные данные типа ФИО, адреса, телефона и т.п., удалять дубликаты, но и ищет реквизиты организаций и ИП.

Данный сервис предоставляет доступ к API и дает бесплатно до 10 тыс. запросов в день по API-ключу. Этим мы и воспользуемся, чтобы реализовать автоматическое заполнение реквизитов по ИНН.

Получение API-ключа на Dadata.ru

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

Dadata личный кабинет API ключ

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

Javascript для получения и заполнение реквизитов по ИНН

Создаем форму, в которой будет происходить заполнение реквизитов:

<div class="well well-sm col-md-6">
  <div class="view">&nbsp;</div>
  <div class="view"><p>Пожалуйста, заполняйте поля как можно более подробней. Это поможет нам быстрее и точнее отреагировать на ваше сообщение.</p></div>
  <form action="/ method="POST">
  <div class="form-group">
  <label for="company">Название компании* (реквизиты заполнятся автоматически):</label>
  <input class="form-control" type="text" name="company" id="company" value="" placeholder="Введите название, адрес, ИНН или ОГРН" required />
  </div>
  <div class="form-group">
  <label for="inn">ИНН:</label>
  <input class="form-control" type="text" name="inn" id="inn" value="" placeholder="Например, 1111111111"  readonly required />
  </div>
  <div class="form-group">
  <label for="kpp">КПП:</label>
  <input class="form-control" type="text" name="kpp" id="kpp" value="" placeholder="Например, 111111111"  readonly />
  </div>
  <div class="form-group">
  <label for="ogrn">ОГРН:</label>
  <input class="form-control" type="text" name="ogrn" id="ogrn" value="" placeholder="Например, 1111111111111"  readonly required />
  </div>
  <div class="form-group">
  <label for="address">Адрес:</label>
  <input class="form-control" type="text" name="address" id="address" value="" placeholder="Невский пр., 1" required />
  </div>
  <div class="form-group">
  <label for="tel">Телефон для связи*:</label>
  <input class="form-control" type="text" name="tel" id="tel" value="" placeholder="Например, +7 812 111 1111" required />
  </div>
  <div class="form-group">
  <label for="email">Ваш email*:</label>
  <input class="form-control" type="text" name="email" id="email" value="" placeholder="Например, [email protected]" required />
  </div>
  <div class="form-group">
  <label for="url">Сайт:</label>
  <input class="form-control" type="text" name="url" id="url" value="" placeholder="Например, pogrommist.ru" />
  </div>
  <div class="form-group">
  <label for="comment">Дополнительные сведения:</label>
  <textarea class="form-control" type="text" name="comment" id="comment" rows="4" /></textarea>
  </div>
  <div class="form-group">
  <div class="g-recaptcha" data-sitekey="тут ключ для капчи"></div>
  </div>
  <div class="form-group">
  <button type="submit" name="addevent" class="btn btn-default">Отправить</button>
  </div>
  </form>
</div>

Выглядеть наша форма будет примерно так:

Автоматическое заполнение реквизитов по ИНН

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

<link href="https://cdn.jsdelivr.net/jquery.suggestions/17.2/css/suggestions.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<!--[if lt IE 10]>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.1/jquery.xdomainrequest.min.js"></script>
<![endif]-->
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery.suggestions/17.2/js/jquery.suggestions.min.js"></script>

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

<script>
function join(arr) {
  var separator = arguments.length > 1 ? arguments[1] : ", ";
  return arr.filter(function(n){return n}).join(separator);
}

function typeDescription(type) {
  var TYPES = {
    'INDIVIDUAL': 'Индивидуальный предприниматель',
    'LEGAL': 'Организация'
  }
  return TYPES[type];
}

function showSuggestion(suggestion) {
  console.log(suggestion);
  var data = suggestion.data;
  if (!data)
    return;

  $("#type").text(
  typeDescription(data.type) + " (" + data.type + ")"
  );

  if (data.name)
    //$("#company").val(join([data.opf && data.opf.short || "", data.name.short || data.name.full], " "));

    $("#inn").val(data.inn);
    $("#kpp").val(data.kpp);

    $("#ogrn").val(data.ogrn);

  if (data.address)
    $("#address").val(data.address.value);
  }

  $("#company").suggestions({
  token: "Здесь должен быть ваш API-ключ",
  type: "PARTY",
  count: 5,
  onSelect: showSuggestion
  });
</script>

При заполнении первой графы будут предложены 5 подсказок, за это отвечает переменная «count». Максимально можно выводить до 20 подсказок. При выборе одной из них в нашем варианте будут заполняться поля «Название компании», «ИНН», «ОГРН» и «адрес».

Автоматическое заполнение реквизитов по ИНН

Какие данные еще можно получить?

Название Описание
value Наименование компании одной строкой (как показывается в списке подсказок)
unrestricted_value Наименование компании одной строкой (полное)
data.address.value Адрес одной строкой:

  • адрес организации для юридических лиц;
  • город проживания для индивидуальных предпринимателей.

Стандартизован, поэтому может отличаться от записанного в ЕГРЮЛ.

data.address.unrestricted_value Адрес одной строкой (полный, от региона)
Стандартизован, поэтому может отличаться от записанного в ЕГРЮЛ.
data.address.data Гранулярный адрес. Может отсутствовать
data.address.data.source Адрес одной строкой как в ЕГРЮЛ
data.branch_count Количество филиалов
data.branch_type Тип подразделения

MAIN   — головная организация
BRANCH — филиал
data.inn ИНН
data.kpp КПП
data.ogrn ОГРН
data.ogrn_date Дата выдачи ОГРН
data.hid Уникальный идентификатор в Дадате
data.management.name ФИО руководителя
data.management.post Должность руководителя
data.name.full_with_opf Полное наименование с ОПФ
data.name.short_with_opf Краткое наименование с ОПФ
data.name.latin Наименование на латинице
data.name.full Полное наименование
data.name.short Краткое наименование
data.okpo Код ОКПО (не заполняется)
data.okved Код ОКВЭД
data.okved_type Версия справочника ОКВЭД (2001 или 2014)
data.okveds Коды ОКВЭД дополнительных видов деятельности (не заполняется)
data.opf.code Код ОКОПФ
data.opf.full Полное название ОПФ
data.opf.short Краткое название ОПФ
data.opf.type Не используется
data.state.actuality_date Дата актуальности сведений
data.state.registration_date Дата регистрации
data.state.liquidation_date Дата ликвидации
data.state.status Статус организации

ACTIVE      — действующая
LIQUIDATING — ликвидируется
LIQUIDATED  — ликвидирована
data.type Тип организации

LEGAL      — юридическое лицо
INDIVIDUAL — индивидуальный предприниматель
data.capital Уставной капитал, для организаций (не заполняется)
data.citizenship Гражданство, для ИП (не заполняется)
data.authorities Руководители, доверенные лица, управляющие организации (не заполняется)
data.documents Документы (не заполняется)
data.licenses Лицензии (не заполняется)
data.phones Телефоны (не заполняется)
data.emails Адреса эл. почты (не заполняется)
data.source Не используется
data.qc Не используется

Данный сервис можно использовать для заполнения реквизитов контрагентов в 1С. Возможно в будущем я опишу как это реализовать в 1С:Бухгалтерия 3.0.

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

Плюсов в работе с google таблицами много, вот только те немногие которые мне очень понравились:

  1. Возможность легко расшарить документ
  2. Разграничение прав
  3. Бесплатно
  4. Разграничение прав вплоть до каждой ячейки!
  5. Поддержка макросов
  6. Возможность написания собственных скриптов
  7. Доступно с любой платформы, хоть с древней нокии можно открыть и посмотреть документ.

Про собственные скрипты остановимся поподробнее и напишем простой скрипт для автоматической установки даты в определенные ячейки.

Задача:

 Подскажите пожалуйста формулу для автоматической подстановки даты или времени в необходимую мне ячейку. к примеру. в ячейке А1 я пишу Иванов, в ячейке В1 автоматически подставляется текущая дата или время. далее пишу в ячейке А2 Петров, в ячейке В2 автоматически пишется дата текущая или время.

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

Google Таблица. Автоматическая подстановка даты и времени. Скрипт.

Если вкратце, то нужно создать функцию которая срабатывает в момент редактирования определенной ячейки. Для примера, предположим что нам нужно при добавлении записи в ячейку 17 автоматически подставлять текущую дату в ячейку номер 2, а так же текущее время в ячейку номер 3.  Ещё немного усложним задачу и сделаем проверку, если в соседней ячейке уже есть какая-то запись, то данные не обновлять и не менять дату и время.

function onEdit(e) {
var sheet = e.source.getActiveSheet();
var idCol = e.range.getColumn();
var idRow = e.range.getRow();
if ( idCol == 17 && sheet.getName() =='Страница1' ) {         // тут у меня имя листа, впишите сюда своё
var Value = e.range.offset(0, -13).getValues();            // Смотрим что в ячейке с лева на 12
if ( Value == "" ) {

var vartoday = getDate();
var varnow = getTime();


sheet.getRange(idRow, 2).setValue( vartoday );
sheet.getRange(idRow, 3).setValue(varnow);
}
}
}

// Returns YYYYMMDD-formatted date.
function getDate() {
var today = new Date();
today.setDate(today.getDate());
//return Utilities.formatDate(today, 'PST', 'yyyy.MM.dd');
return Utilities.formatDate(today, 'GMT+05:00', 'yyyy.MM.dd');
}

function getTime() {
var today = new Date();
today.setDate(today.getDate());
//return Utilities.formatDate(today, 'PST', 'yyyy.MM.dd');
return Utilities.formatDate(today, 'GMT+05:00', 'HH:mm');
}


Если кому-то не понятен сей скрипт, пишите в комменты, постараюсь помочь.

Пример работы с подсказками DaData в Google Taблицах

Как подключить скрипт к Гугл-таблице:

  1. Открыть таблицу.
  2. В меню выбрать Расширения > Apps Script
  3. Вставить код из файла suggest-google-sheets.js
  4. Вместо ВАШ_API_КЛЮЧ указать API-ключ из личного кабинета (https://dadata.ru/profile/#info)
  5. Сохранить.
  6. В тулбаре выбрать функцию guessParty и нажать на кнопку Выполнить.
  7. Гугл запросит «разрешения на доступ к вашим данным». Нажать «проверить разрешения», выбрать ваш гугл-аккаунт.
  8. Если появится окно «Эксперты Google не проверяли это приложение» — нажать на «Дополнительные настройки», затем «Перейти на страницу… (небезопасно)».
  9. Нажать на «Разрешить».
  10. Убедиться, что в журнале выполнения написано «Выполнение завершено» и нет ошибок.
  11. Вернуться к таблице.
  12. Указать в ячейке ИНН компании. Например, в ячейке A1 указать 7719402047.
  13. В другой ячейке вызвать функцию guessParty. Например, в ячейчке A2 указать =guessParty(A1)
  14. Увидите результат: название, ОГРН, ИНН, КПП, ОКВЭД и адрес компании.


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

// Замените на свой API-ключ из личного кабинета (https://dadata.ru/profile/#info)
var API_KEY = «ВАШ_API_КЛЮЧ»;
/***
/* Не меняйте код ниже этой строчки
***/
var FORMATTERS = {
party: formatParty,
bank: formatBank
}
function formatParty(suggestion) {
var party = suggestion.data;
return [
[«Название», party.name.short_with_opf],
[«ОГРН», party.ogrn],
[«ИНН», party.inn],
[«КПП», party.kpp],
[«ОКВЭД», party.okved],
[«Дата регистрации», party.state.registration_date],
[«Адрес», party.address.value]
];
}
function formatBank(suggestion) {
var bank = suggestion.data;
return [
[«Название», bank.name.payment],
[«БИК», bank.bic],
[«SWIFT», bank.swift],
[«Адрес», bank.address.value]
];
}
function guessParty(query) {
return guess(«party», query);
}
function guessBank(query) {
return guess(«bank», query);
}
function guess(type, query) {
if (API_KEY === «ВАШ_API_КЛЮЧ») {
return «Укажите ваш API-ключ в переменной API_KEY»;
}
var response = suggest(type, query);
if (response.suggestions.length > 0) {
return FORMATTERS[type](response.suggestions[0]);
} else {
return «Ничего не найдено»;
}
}
function suggest(type, query) {
var url = «https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/» + type;
var payload = ‘{«query»: «‘ + query + ‘»}’
var headers = {
«Authorization»: «Token « + API_KEY
};
var fetchArgs = {
method: «POST»,
contentType: «application/json»,
payload: payload,
headers: headers,
muteHttpExceptions: false
};
return JSON.parse(UrlFetchApp.fetch(url, fetchArgs));
}

Google Docs Editors Help

Sign in

Google Help

  • Help Center
  • Community
  • Google Docs Editors
  • Privacy Policy
  • Terms of Service
  • Submit feedback

Send feedback on…

This help content & information

General Help Center experience

  • Help Center
  • Community

Google Docs Editors

Понравилась статья? Поделить с друзьями:
  • Автомобиль за 4 часа проехал 190 км какова скорость автомобиля
  • Автомобиль проехал 20 км на юг а потом 28 3 км на северо запад
  • Автомобильный рынок на антонова овсеенко в самаре время работы
  • Автомобильный супермаркет в туле на станиславского часы работы
  • Агалатово сервис управляющая компания телефон аварийной службы