moysklad-sdk v0.3.132
Moysklad-Sdk
Библиотека для упрощения взаимодействия между МоимСкладом и другими приложениями. Поддерживает работу со всеми основными сущностями и предоставляет дополнительные методы.
- Создание новых документов
- Редактирование существующих документов
- Дополнительные методы для манипуляции с документами
Rich-query фильтрации на основе реплики в MongoDBLiveQueryWebsocket event listeners
TODO
- Установка библиотеки через
npm
- Разобраться, на чьей стороне (бек или сдк) заниматься преобразованием данных, парсингом и составлением фильтров. Принято решение сделать всю логику на стороне SDK, оставить прокси максимально безмозглым, чтобы не разносить логику по двум местам и иметь возможность всё дебажить прямо на клиенте.
- Добавить метод, отдающий структуру документа (fields, types, etc.)
- Кроссбраузерность и кроссплатформенность
Установка
Используя npm:
npm install moysklad-sdk
Подключение
import SDK, { initSDK } from 'moysklad-sdk';
// Вызывается один раз для всего проекта
initSDK({
// Опции подключения
secret: <SECRET_KEY>
});
// Синглтон экземпляр библиотеки
console.log('SDK', SDK);
Разработка
Запуск сборщика rollup в режиме watch
npm run dev
Компиляция в прод
npm run build
npm publish
Демо (Должен быть запущен Moysklad-Sync)
npm run demo
Примеры использования
Изменение существующего заказа покупателю.
const customerorder = await SDK.Entity.Customerorder.load({
name: 'Test order',
});
await customerorder.setStore({
name: 'Другой склад',
});
await customerorder.save();
Создание нового заказа покупателю.
const customerorder = await SDK.Entity.Customerorder.create({
name: 'New order',
});
await customerorder.setStore({
name: 'Другой склад',
});
await customerorder.save();
Поиск документов:
В качестве аргументов поиска может быть указано одно из следующих значений, в порядке приоритета:
- ID объекта
- Массив для агрегации
- Объект для фильтрации
Лимит поиска нужно обязательно указывать в явном виде.
// Поиск по ID
const organization = await SDK.Entity.Organization.load('07bbe005-8b17-11e7-7a34-5acf0019232a');
// Поиск с фильтрацией
const counterparty = await SDK.Entity.Counterparty.load({
name: 'Розничный покупатель',
});
// Поиск с агрегацией
const counterparty = await SDK.Entity.Counterparty.load([
{
$match: {
name: 'Розничный покупатель',
},
},
]);
// Поиск с фильтрацией по ссылке.
const customerorder = await SDK.Entity.Customerorder.loadList(
{
agent: counterparty,
},
{
limit: 10,
},
);
Объект у которого в фильтре передан объект, содержащий ...meta.href
будет автоматически сокращён по правилу:
Object.keys(filter).forEach(key => {
if (filter[key].meta && filter[key].meta.href) {
filter[`${key}.meta.href`] = filter[key].meta.href.split('?')[0];
delete filter[key];
}
});
filter = {
meta: {
href: 'https://online.moysklad.ru/api/remap/1.2/entity/store/<STORE_ID>?expand=parent',
type: 'store',
...
},
id: '<STORE_ID>',
name: 'xxxx',
...
}
filter = {
'meta.href': 'https://online.moysklad.ru/api/remap/1.2/entity/store/<STORE_ID>'
}
Таким образом можно передавать для фильтрации другие документы:
const targetStore = await SDK.Entity.Store.load({
name: 'Со склада',
});
const sourceStore = await SDK.Entity.Store.load({
name: 'На склад',
});
await SDK.Entity.Move.load({
targetStore,
sourceStore,
});
- Добавил декораторы свойств и reflect-metadata
- Глянуть на https://stackblitz.com/edit/typescript-teougc для продвинутых мета
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago