Первые шаги с NetSuite

Установка Eclipse IDE

Для комфортной работы вам понадобится Eclipse IDE, потому что под него NetSuite сделал специальный плагин, который позволяет работать с его файлами и автокомплитом команд и пр.
Если у вас Windows, то установка похожая, только надо предварительно установить Java, вот инструкция на англ:

1.       Download and install 64-bit Java
a.       I went for the latest and greatest full blown JDK (Java SE 8u40): http://www.oracle.com/technetwork/java/javase/downloads/index.html
2.       Download and install the latest “regular” version of Eclipse (Eclipse IDE for Java Developers – Luna release (4.4.2)): https://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/lunasr2

У меня Xubuntu, я пишу инструкции для неё:
Следуем инструкции по установке Eclipse отсюда http://rdpzycho.blogspot.ru/2014/06/installing-eclipse-44-luna-on-xubunt... (у меня 15.10, все установилось так же), а именно:
http://www.eclipse.org/downloads/

tar -xvf ~/Downloads/eclipse-standard-luna-R-linux-gtk_64.tar.gz
sudo mv eclipse /usr/local/eclipse-luna
sudo ln -s /usr/local/eclipse-luna/eclipse /usr/local/bin/eclipse-luna
sudo nano /usr/share/applications/eclipse-luna.desktop

Вставил то же самый код для ссылки:

[Desktop Entry]
Name=Eclipse Luna
Comment=IDE
Exec=eclipse-luna
Icon=/usr/local/eclipse-luna/icon.xpm
Terminal=false
Type=Application
Categories=Development;

Сохранил, сразу же открыл whisker меню (я его называю "пуск"), раздел "Разработка", там появилась ссылка на Eclipse, запустил.

Update march, 2017, Ubuntu 16.04:
Just do the following instead of all that wrote in the article above:
sudo apt-get install default-jdk

Внимение!
Нельзя устанавливать свежую версию eclipse (выше neon1) - плагин Netsuite уже не совместим с ними.
У меня получилось только завести его с версией eclipse luna.
Точно помню, что получалось с версией neon1, но сейчас не могу ее найти, только neon3, который уже не совместим, к сожалению.
https://www.eclipse.org/downloads/packages/release/Luna/SR2

Установка плагина NetSuite

Предложили указать папку для workspace, я так понял там будет храниться код моих проектов, я оставил по умолчанию, в домашней директории.
Запустился Eclipse.
В нём я выбрал Help -> Install New Software
Нажал кнопку “Add…”, ввёл Name “SuiteCloud IDE Update Site” и Location http://system.netsuite.com/download/ide/update_e4 , нажал "ОК", потом выбрал галкой этот “SuiteCloud IDE Update Site” и нажал Далее, он мне предложил согласиться с лицензиями, и затем нажал Финиш. Плагин скачался и установился (заняло какое-то время), потом спросили что есть опасность неподписанногоконтента, сказал что ничего страшного, попросили перезапустить Eclipse, сказал Yes. После перезапуска появился Configuration Wizard, в котором надо указать логин и пароль от вашего sandbox-аккаунта (на котором будет вестись вся разработка, должны быть выданы вам при регистрации в NetSuite), и вы сможете начать работу.

Взаимодействие с сервером

Если вы подключились к разработке проекта, у которого уже есть какие-то скрипты, написанные другими программистами, то вам нужно получить эти скрипты. Для этого вам нужно сделать правый клик на Демо проект, NetSuite -> Autheticate with Master password, вводите пароль, затем снова правй клик Демо проект, NetSuite -> Download File(s) to Project, выбираете единственный проект, к которому у вас подключен аккаунт, автоматически подставится роль "Администратор", жмем Get file list, видим содержимое всей папки FileCabinet со всеми скриптами. Я еще ставлю точку напротив "Использовать следующий проект для импорта", пишу название нового проекта. Иначе Еклипс для каждого файла будет создавать проект и это очень накладно.
Если вы создали какой-то скрипт или модифицировали существующий, то вам нужно кликнуть правой кнопкой на него, выбрать NetSuite -> Upload to Project, затем зайти через веб-интерфейс в Netsuite и на вкладке Setup включить вновь созданный вами плагин (для существующих делать этого не нужно).

Мой план изучения NetSuite

Я решил, что будет полезно в целях обучения сделать следующие вещи с помощью SuiteScript:
- Создать отдельную страницу с формой поиска по клиентам
- Добавить ссылку на эту страницу в главное меню NetSuite
- Добавить эту форму в какой-нибудь workflow

Для выполнения первого пункта (создание отдельной страницы) я сделал следущее:
открыл документацию netsuite SuiteScriptRefAndGuide.pdf на странице 202 (а всего там 1139 страниц >.<)
(p.s. Оказывается есть такое же пошаговый мануал который я пишу здесь для себя, только в оригинальном мануале - его можно найти на странице 1079. Можете следовать ему если что-то непонятно у меня)
Прочитал про Suitlets, добавил новую папку у себя в проекте, добавил новый файл в эту папку, назвал его tmp.js, туда вставил код примера из документации, сохранил, правой кнопкой на мою папку - Upload selected files, выбрал что заливать надо в Suitescript/Suitlets (система требовала именно две части пути).
Потом открыл страницу 79 документации и прочитал как запускать скрипты вообще.
В веб-интерфейсе нетсьюта открыл Customization - Scripting - Scripts - New, Suitelet
name: Capital Brends - Customer Search Page
id: customscript_cb_customr_srch
Desc: A search for for lookup Netsuite customer records
file: CustomersSearchSuitlet.js
func: gettingStartedPetrovSuitelet
libraries: оставил пустым
Сохранил
Нажал на кнопку Deply script
Дальше читаю стр 87 о деплое скриптов
в общем выбрал тот же scriptid: customscript_cb_customr_srch, действие: GET, поставил галки чтобы все могли открывать страницу.
Рядом с под-закладкой Audience есть еще несколько под-закладок, вторая из них - Links. Там выбрал Classc center, затем надо выбрать пункт меню первого уровня - я выбрал Links, дальше пункт второго уровня, я выбрал relationships, назвал Customers search, поставил перед пунктом Customers.
Сохранил.
Сохранил.
На открывшейся странице теперь есть url моей страницы: /app/site/hosting/scriptlet.nl?script=626&deploy=1
Так же появился новый пункт меню Lists - Relationships - Customers search.
Нажимаем на него, у нас открывается наша демо форма. Теперь наконец-то можно над ней работать.

Интересный факт: когда вы сделали какое-то изменение в js-файле того suitelet'а, который вы разрабатываете, вы можете нажать ctrl+U для заливки его на сервер.

Структура страницы

Страница может состоять лишь из одного главного объекта (Form или List) и отрендеренного через response.writePage(object), или же из кастомного html кода вообще, который отрендерен через response.write(html).
Если вам надо вывести два объекта на странице, например сверху - форма, а ниже - список, то нужно к созданному объекту Form добавить subList через функцию addSubList, и затем уже добавить содержимое этого List, например, результат поиска или что-то такое. Подробнее - читайте про функцию формы addSubList и его типы. Например, я для реализации формы поиска объектов Customer выбрал тип subList в качестве staticlist, это нередактируемый список, но при этом пришлось разбираться, как вывести колонку с ссылками на редактирование каждой записи. Потому что для обычного объекта List есть специальная функция для этого (addEditColumn), а вот для объекта subList такой функции нет. Решение нашел в одном из примеров. Оказывается, можно использовать функцию column.setURL(nlapiResolveURL('RECORD','salesorder'));

Ниже прикреплены все файлы документации.
1. SuiteScriptDev&RefGuide.pdf - основной документ для понимания SuiteScript. Больше тысячи страниц! Рекомендуется читать последовательно, иначе в голове будет каша. Читается легко, многое пролистывается. Потом я часто возращался к описаниям объектов и их свойств.
2. SuiteScriptReference.pdf - в нем я нашел описание всех TaskLinks (нужны для создания ссылок, например чтобы создать ссылку на редактирование объекта Customer надо вызывать column.setURL(nlapiResolveURL('TASKLINK','EDIT_CUSTJOB'));
3. SuiteBuilderGuide.pdf - практически бесполезный файл о том, как делать многие вещи мышкой в NetSuite
4. Еще есть отдельные SuiteFlow и SuiteTalk, но я пока в них не разобрался.

Update 2017:
Есть основные типы Suitescripts, их надо знать и понимать.
Client Scripts - типа нейтивного javascript, т.е. выполняются в браузере на стороне клиента. Прикрепляются к record type.
User Event Scripts - бекенд, вроде node.js. Прикрепляются к record type.
Suitelet - отдельная страница, на которой может быть как форма, так и просто html-контент. Имеет свой адрес, доступный в основном изнутри Netsuite.
ScheduledScript - бекенд скрипты, выполняющиеся по крону (регулярно)
WorkflowAction - бекенд скрипт, который можно запустить из Workflow. Workflow это правила (алгоритм), которые ты устанавливаешь мышкой через UI. Например, показывать кнопку на странице определенной record type, и по нажатию на кнопку запускать свой кастомный workflow action.

Про всё остальное лень писать, в основном, надо пользоваться двумя референсами:
1. В главном меню нетсьюта заходишь в Support - Open Suite Answers, в поиске вводишь alphabet, жмешь на первую ссылку (alphabetized index), там документация по всем доступным функциям suitescript в нетсьюте.
2. Для просмотра доступных system fields of record types and search filters надо пользоваться вот этой ссылкой, в ней описаны все системные record types: https://system.netsuite.com/help/helpcenter/en_US/RecordsBrowser/2012_2/...

Прикреплённые файлы: 

Comments

Add new comment