1. Вопросы
1.1. Telegram группа для вопросов @moysklad_forms
1.1.1. Все предложения по шпаргалке или новые формулы пишите в группу. Буду стараться обновлять данные.
1.2. Telegram: @wmakeev
2. Общее
2.1. Отладка формул
3. Штрих-коды / ценники / этикетки
3.1. Генерация штрих-кода (на стороне сервера)
3.1.1. barcode4j.generateCode
3.1.1.1. Настройка вывода штрих-кода
3.1.1.1.1. шаблон
3.1.1.2. Подбор качества штрих-кода (dpi)
3.1.1.3. Описание модуля на сайте разработчика
3.1.2. Шаблоны для печати этикеток
3.1.2.1. Готовые шаблоны для печати этикеток
3.1.2.2. Пример этикетки 46x25
3.1.2.3. Шаблон для печати этикеток из отчета "Остатки"
3.1.2.4. Шаблон для печати штрих-кодов на товары и их серийные номера (форма для документа с позициями)
3.2. Генерация штрих-кода (на стороне Excel)
3.2.1. шрифт штрих-кода EAN13
3.2.2. пример использования
3.3. Ограничения Excel
3.4. Работа с ценами
3.4.1. Доступ к типам цен из документа
3.4.1.1. ${position.good.salePrices.priceList[1].currency.name}
3.4.1.2. ${position.good.salePrices.first().priceType.name}
3.4.1.3. ${position.good.salePrices.findPrice("Цена продажи!").value}
3.4.2. Формула из карточки товара (ценники)
3.4.2.1. ${formatter.printShortAmount(posrow[0].salePrices.findPrice(priceTypeId).priceValue)}
4. Официальная справка МойСклад
4.1. Общая информация о шаблонах печатных форм
4.2. Создание шаблонов печатных форм (основные формулы)
5. Связи между документами
5.1. Как получить документы по связям
5.2. Доступ к связанным документам из отгрузки
5.3. Список отгрузок из заказа
5.4. Названия полей со связанными документами можно найти в Модели по ссылке.
5.4.1. Как найти нужный документ?
5.5. Примеры
5.5.1. Заказ поставщику
5.5.1.1. ${o.getCustomerOrders().iterator().next().sum.sum}
6. Разное
6.1. Объектная модель печатных форм (не закончено!)
6.1.1. не разобрано
6.1.1.1. position
6.1.1.1.1. tail
6.1.1.2. operation
6.1.1.2.1. project
6.1.1.3. Отчеты
6.1.1.3.1. Глобальные объекты со значениями фильтра отчета
6.1.1.4. Характеристики товара
6.1.1.5. Good
6.1.1.5.1. ${goods[0].salePrices.findPrice(priceTypeId).currencyRef.name}
6.1.2. Отчеты
6.1.2.1. BaseLegendTO
6.1.2.1.1. {name, description, externalCode, id}
6.1.2.1.2. Документ
6.1.2.1.3. Agent
6.1.3. Документы
6.2. Разобрать
6.2.1. ${formatter.evaluateJexl(row.payments, "payments", "var ret='';var i=0; for (var s: payments){if (i>0){ret=ret+', ';} ret=ret+s.name; i=i+1;} return ret;")}
7. Отчеты
7.1. Циклы
7.1.1. Загрузка документов
7.1.1.1. ${formatter.loadOperations(rows)}
7.1.1.1.1. Список сущностей отчета (напр. CustomerOrder)
7.1.1.2. ${formatter.loadOperationsWithFilters(rows, "Время доставки:с 11.00 до 15.00,Доставка:300 руб")}
7.1.1.3. ${formatter.loadStocksWithGoodsList(rows)}
7.1.1.4. ${formatter.loadGrouppedOperations(rows)}
7.1.2. Группировка
7.1.3. Нумерация строк по порядку
7.2. Итоги
7.2.1. $[SUM(G14)@0]
7.3. Перемещение
7.4. Выражения
7.5. Решения
7.5.1. Вывод позиций документов
7.5.1.1. Заказ покупателя
7.5.1.1.1. <jx:forEach items="${row.shipments}" var="shipment"
7.5.1.2. Перемещение
7.6. Возможные ошибки
7.6.1. Формула в одну строку
8. Вспомогательные методы formatter'а
8.1. countPlaces
8.2. cost
8.2.1. report-Demand profit.xls
8.3. createDate
8.4. currentUser
8.4.1. uid
8.4.2. firstName
8.4.3. secondName
8.4.4. shortFIO
8.5. currentMoment
8.5.1. ${formatter.getExcelDate(formatter.currentMoment)}
8.6. findAttribute
8.6.1. Наименование - Тип поля
8.6.1.1. Строка - valueString
8.6.1.2. Текст/Ссылка - valueText
8.6.1.3. Дата - timeValue
8.6.1.4. Флажок - booleanValue
8.6.1.5. Целое число - longValue
8.6.1.6. Дробное число - doubleValue
8.6.1.7. Селекторы (справочники)
8.6.1.7.1. пользовательский - entityValue.name
8.6.1.7.2. сотрудники - employeeValue.name
8.6.1.7.3. контрагенты - agentValue.name
8.6.1.7.4. серии - consignmentValue.name
8.6.1.7.5. тоары - goodValue.name
8.6.1.7.6. склады - placeValue.name
8.6.1.7.7. проекты - projectValue.name
8.6.1.7.8. договоры - contractValue.name
8.7. firstNotEmpty
8.8. getExcelDate
8.9. getMonthName
8.10. getGoods
8.11. getServices
8.12. getCurrency
8.13. goodsAmount
8.14. generateList
8.15. localize
8.16. round
8.17. printIf
8.17.1. ${formatter.printIf(not empty(position.code),"Арт. " + position.code)}
8.17.2. В качестве альтернативы лучше использовать тернарный оператор (см. примечание)
8.18. printIfElse
8.18.1. formatter.printIfElse(empty([...]), [true], [false])
8.18.2. В качестве альтернативы лучше использовать тернарный оператор (см. примечание)
8.19. printAgentName
8.20. printAmount
8.20.1. formatter.printAmount(123) → 'Один рубль 23 копейки'
8.20.2. formatter.printAllWordsAmount(123) → 'Один рубль двадцать три копейки'
8.21. printShortAmount(price)
8.21.1. formatter.printShortAmount(goods[0].salePrices.findPrice(priceTypeId).priceValue)
8.22. printShortAmountWithChange(price)
8.22.1. ${formatter.printShortAmountWithChange(position.salePrices.findPrice(priceTypeId).priceValue)}
8.23. printTags
8.24. splitByLines(text, maxLines, lineLength)
8.24.1. ${formatter.splitByLines(goods[1].name, 6, 5)}
8.25. splitGoodList(positions, N)
8.25.1. <jx:forEach items="${formatter.splitGoodList(positions, 3)}" var="goods">
8.26. stock(position)
8.27. shipped(position)
8.28. imageAttribute
8.28.1. печать организации
8.28.2. .getGoodImageElseNotFound
8.29. Подгрузка сущности
8.29.1. loadAgent
8.29.2. loadGood
8.29.3. loadConsignment
8.29.4. loadOperations
8.29.4.1. loadGrouppedOperations
8.29.5. loadStock
8.29.5.1. loadStocksWithGoodsList
8.30. Время и дата
8.30.1. createDate
8.30.2. getExcelDate
8.30.2.1. Дата в отдельной ячейке
8.30.3. currentMoment
9. Форматирование данных
9.1. Дата
9.1.1. Примеры
9.1.1.1. ${formatter.format("%1$td.%1$tm.%1$tY %1$tH:%1$tM", formatter.getExcelDate(row.moment))}
9.1.1.2. ${formatter.format("%1$td.%1$tm.%1$tY %1tR", o.moment)}
9.1.2. Документация
9.1.2.1. Java
9.1.2.2. Android
9.1.3. [поле_формата_дата].getTime()
9.1.3.1. Вывод даты с корректировкой на некий период времени
9.1.4. Excel шаблон с примерами формул
9.2. Деньги
9.2.1. Примеры
9.2.1.1. на сумму ${formatter.format("%.2f", o.sum.sum / 100)} руб
9.2.1.2. 3 руб. 00 коп.
9.2.1.2.1. ${formatter.format("%1$4.0f руб. %2$02.0f коп.", [сумма] / 100, [сумма] % 100)}
9.2.2. Отбрасывание копеек
9.2.2.1. formatter.round(o.sum.sumInCurrency/100)*100
10. POI
10.1. Объекты
10.1.1. Sheet
10.1.1.1. getRow()
10.1.2. Row
10.1.2.1. getCell()
10.1.3. Cell
10.1.3.1. setCellValue()
10.2. Доступные объекты
10.2.1. Лист
10.2.1.1. ${sheet}
10.2.2. Текущая строка
10.2.2.1. ${hssfRow}
10.3. Примеры формул
10.3.1. ${sheet.getRow(0).getCell(1).setCellValue(sheet.getRow(0).getCell(0).getNumericCellValue())}
10.3.2. ${hssfRow.getHeight()}
10.3.3. ${sheet.setRowBreak(hssfRow.getRowNum())}
11. Формулы
11.1. Теги
11.1.1. jx:forEach
11.1.1.1. groupBy
11.1.1.1.1. groupOrder
11.1.1.1.2. Aggregate functions
11.1.1.1.3. Пример формы с группировкой и сводными расчетами (aggregate functions)
11.1.1.1.4. Пользовательские атрибуты
11.1.1.1.5. Группировка по дате
11.1.1.1.6. Позиции
11.1.1.1.7. Сложности
11.1.1.2. select
11.1.1.2.1. Пример фильтрации по строке
11.1.1.3. varStatus
11.1.1.4. Загрузка документов
11.1.2. jx:outline
11.1.3. jx:if
11.2. Запись формул Excel
11.2.1. Соответствие англоязычных и русскоязычных формул в Excel
11.2.1.1. ВПР - VLOOKUP
11.2.1.2. Excel файл с соответствием формул RU-ENG
11.2.2. Ошибки
11.2.2.1. Формула не проходит
11.3. Полезные формулы
11.3.1. Округление вверх
11.3.2. Вставка гиперссылки
11.3.2.1. пример
11.3.3. Работа со строками
11.3.3.1. Выделение части строки - substring
11.3.3.2. Методы объекта строки
11.3.3.2.1. name.[формула] ➝ [результат]
11.3.3.2.2. name = "NA-ord-16991"
11.3.3.2.3. name.charAt(2) ➝ A
11.3.3.2.4. name.concat(' some') ➝ NA-ord-16991 some
11.3.3.2.5. name.contains('NA') ➝ true
11.3.3.2.6. name.replaceFirst('\d', '0') ➝ NA-ord-06991
11.3.3.2.7. name.replaceAll('\d', '0') ➝ NA-ord-00000
11.3.3.2.8. name.replace('NA', 'FOO') ➝ FOO-ord-16991
11.3.3.2.9. (name.split('-'))[0] ➝ NA
11.3.3.2.10. name.toLowerCase() ➝ na-ord-16991
11.3.3.2.11. name.toUpperCase() ➝ NA-ORD-16991
11.3.3.2.12. name.concat(' ').trim() ➝ NA-ord-16991
11.3.3.2.13. name.toCharArray().get(0) ➝ N
11.3.4. Последнее событие
11.4. Функции
11.4.1. empty(...) → bool
11.4.1.1. Отрицание not empty(...)
11.4.2. .size( )
11.5. Свойства
11.5.1. [entity].type
11.6. Общие замечания
11.6.1. Доступ к массивам
11.6.1.1. formatter.loadAgent(row.id).tags[0]
11.6.1.2. (formatter.loadAgent(row.id).tags)[0]
11.6.1.3. formatter.loadAgent(row.id).tags.get(0)
11.6.1.4. o.getCustomerOrders().iterator().next().name
11.6.2. Управляющие символы
11.7. Разъяснить
11.7.1. Акт сверки D11
12. Модель
12.1. Формулы для изучение методов объектов печатных форм
12.1.1. Судя по всему сейчас эта возможность не доступна
12.1.2. test-java-entity-class.xls
12.1.2.1. test-java-entity-class-TEST.xls
12.1.3. test-java-entity-superclass.xls
12.1.3.1. test-java-entity-superclass-TEST.xls
12.1.4. test-java-formatter.xls
12.1.4.1. test-java-formatter-TEST.xls