Как настроить выгрузку в Excel
Если вы работаете на тарифе Стандарт и Эксперт, то можете выгружать закупки в таблицу Excel на страницах Поиск, Шаблоны, Избранное и Аналитика.
Как настроить выгрузку
На странице, с которой вы хотите выгрузить таблицу, нажмите на значок “Настройка”. Он всегда находится рядом с кнопкой “Выгрузить в Excel”.

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

В выгрузке на тарифе Эксперт больше информации для аналитической работы: контакты организатора закупки, названия и ИНН всех участников закупки, ценовые предложения участников, процент снижения, адрес и телефон победителя, адрес и телефон поставщика.
Где искать ссылки на ЭТП и в ЕИС
Ссылка в ЕИС для закупок по 44-ФЗ и 223-ФЗ зашита в номер закона в колонке Тип торгов, для коммерческих закупок ссылки не будет.
Ссылка на ЭТП, где проходит закупка, видна в колонке ЭТП. Для бумажных процедур по 44-ФЗ и 223-ФЗ ссылок в колонке не будет.
Как сделать выгрузку (экспорт) заказов в таблицу Excel
При необходимости, вы можете выгрузить из KeyCRM информацию о заказах в файл. В этой статье рассмотрим как это сделать.
Автор Владислав Пономарь
Обновлено 1 год назад
С помощью экспорта можно выгрузить всю информацию о ваших заказах, который можно использовать в бухгалтерии, логистике или просто хранить на вашем компьютере.
Настройка шаблона для экспорта
При создании кабинета у вас появится стандартный шаблон для экспорта, который по умолчанию выгружает абсолютно все поля из заказов. Но вы также можете создать свои шаблоны для выгрузки, где сможете выбрать только те поля, которые вам необходимы.
Таких шаблонов можно создать любое количество, под каждую задачу. Формат файла для выгрузки xlsx или csv.
Экспорт заказов из кабинета
Чтобы экспортировать все заказы — нажмите на значок треугольника и выберите «Весь список». После чего у вас появится кнопка «Отмеченные: ххх» — нажмите на неё, переводите курсор на «Экспорт в файл» и выберите нужный шаблон.
Чтобы экспортировать определенные заказы, отсортируйте их с помощью наших фильтров и выполните те же действия, что описаны выше.
Выгружаем данные в Excel. Цивилизованно
Есть в IT-отрасли задачи, которые на фоне успехов в big data, machine learning, blockchain и прочих модных течений выглядят совершенно непривлекательно, но на протяжении десятков лет не перестают быть актуальными для целой армии разработчиков. Речь пойдёт о старой как мир задаче формирования и выгрузки Excel-документов, с которой сталкивался каждый, кто когда-либо писал приложения для бизнеса.

Какие возможности построения файлов Excel существуют в принципе?
- VBA-макросы. В наше время по соображениям безопасности идея использовать макросы чаще всего не подходит.
- Автоматизация Excel внешней программой через API. Требует наличия Excel на одной машине с программой, генерирующей Excel-отчёты. Во времена, когда клиенты были толстыми и писались в виде десктопных приложений Windows, такой способ годился (хотя не отличался скоростью и надёжностью), в нынешних реалиях это с трудом достижимый случай.
- Генерация XML-Excel-файла напрямую. Как известно, Excel поддерживает XML-формат сохранения документа, который потенциально можно сгенерировать/модифицировать с помощью любого средства работы с XML. Этот файл можно сохранить с расширением .xls, и хотя он, строго говоря, при этом не является xls-файлом, Excel его хорошо открывает. Такой подход довольно популярен, но к недостаткам следует отнести то, что всякое решение, основанное на прямом редактировании XML-Excel-формата, является одноразовым «хаком», лишенным общности.
- Наконец, возможна генерация Excel-файлов с использованием open source библиотек, из которых особо известна Apache POI. Разработчики Apache POI проделали титанический труд по reverse engineering бинарных форматов документов MS Office, и продолжают на протяжении многих лет поддерживать и развивать эту библиотеку. Результат этого reverse engineering-а, например, используется в Open Office для реализации сохранения документов в форматах, совместимых с MS Office.
Но у прямого использования Apache POI есть и недостатки. Во-первых, это Java-библиотека, и если ваше приложение написано не на одном из JVM-языков, вы ей вряд ли сможете воспользоваться. Во-вторых, это низкоуровневая библиотека, работающая с такими понятиями, как «ячейка», «колонка», «шрифт». Поэтому «в лоб» написанная процедура генерации документа быстро превращается в обильную «лапшу» трудночитаемого кода, где отсутствует разделение на модель данных и представление, трудно вносить изменения и вообще — боль и стыд. И прекрасный повод делегировать задачу самому неопытному программисту – пусть ковыряется.
Но всё может быть совершенно иначе. Проект Xylophone под лицензией LGPL, построенный на базе Apache POI, основан на идее, которая имеет примерно 15-летнюю историю. В проектах, где я участвовал, он использовался в комбинации с самыми разными платформами и языками – а счёт разновидностей форм, сделанных с его помощью в самых разнообразных проектах, идёт, наверное, уже на тысячи. Это Java-проект, который может работать как в качестве утилиты командной строки, так и в качестве библиотеки (если у вас код на JVM-языке — вы можете подключить её как Maven-зависимость).
Xylophone реализует принцип отделения модели данных от их представления. В процедуре выгрузки необходимо сформировать данные в формате XML (не беспокоясь о ячейках, шрифтах и разделительных линиях), а Xylophone, при помощи Excel-шаблона и дескриптора, описывающего порядок обхода вашего XML-файла с данными, сформирует результат, как показано на диаграмме:

Шаблон документа (xls/xlsx template) выглядит примерно следующим образом:

Как правило, заготовку такого шаблона предоставляет сам заказчик. Вовлечённый заказчик с удовольствием принимает участие в создании шаблона: начиная с выбора нужной формы из «Консультанта» или придумывания собственной с нуля, и заканчивая размерами шрифтов и ширинами разделительных линий. Преимущество шаблона в том, что мелкие правки в него легко вносить уже тогда, когда отчёт полностью разработан.
Когда «оформительская» работа выполнена, разработчику остаётся
- Создать процедуру выгрузки необходимых данных в формате XML.
- Создать дескриптор, описывающий порядок обхода элементов XML-файла и копирования фрагментов шаблона в результирующий отчёт
- Обеспечить привязку ячеек шаблона к элементам XML-файла с помощью XPath-выражений.
Если бы в форме, которую мы создаём, не было повторяющихся элементов с разным количеством (таких, как строки накладной, которых разное количество у разных накладных), то дескриптор выглядел бы следующим образом:
Здесь root – название корневого элемента нашего XML-файла с данными, а диапазон A1:Z100 – это прямоугольный диапазон ячеек из шаблона, который будет скопирован в результат. При этом, как можно видеть из предыдущей иллюстрации, подстановочные поля, значения которых заменяются на данные из XML-файла, имеют формат ~ (тильда, фигурная скобка, XPath-выражение относительно текущего элемента XML, закрывающая фигурная скобка).
Что делать, если в отчёте нам нужны повторяющиеся элементы? Естественным образом их можно представить в виде элементов XML-файла с данными, а помочь проитерировать по ним нужным образом помогает дескриптор. Повторение элементов в отчёте может иметь как вертикальное направление (когда мы вставляем строки накладной, например), так и горизонтальное (когда мы вставляем столбцы аналитического отчёта). При этом мы можем пользоваться вложенностью элементов XML, чтобы отразить сколь угодно глубокую вложенность повторяющихся элементов отчёта, как показано на диаграмме:

Красными квадратиками отмечены ячейки, которые будут являться левым верхним углом очередного прямоугольного фрагмента, который пристыковывает генератор отчёта.
Есть и ещё один возможный вариант повторяющихся элементов: листы в книге Excel. Возможность организовать такую итерацию тоже имеется.
Рассмотрим чуть более сложный пример. Допустим, нам надо получить сводный отчёт наподобие следующего:

Пусть диапазон лет для выгрузки выбирает пользователь, поэтому в этом отчёте динамически создаваемыми являются как строки, так и столбцы. XML-представление данных для такого отчёта может выглядеть следующим образом:
testdata.xml
Мы вольны выбирать названия тэгов по своему вкусу, структура также может быть произвольной, но с оглядкой на простоту конвертации в отчёт. Например, выводимые на лист значения я обычно записываю в атрибуты, потому что это упрощает XPath-выражения (удобно, когда они имеют вид @имяатрибута ).
Шаблон такого отчёта будет выглядеть так (сравните XPath-выражения с именами атрибутов соответствующих тэгов):

Теперь наступает самая интересная часть: создание дескриптора. Т. к. это практически полностью динамически собираемый отчёт, дескриптор довольно сложен, на практике (когда у нас есть только «шапка» документа, его строки и «подвал») всё обычно гораздо проще. Вот какой в данном случае необходим дескриптор:
descriptor.xml
Полностью элементы дескриптора описаны в документации. Вкратце, основные элементы дескриптора означают следующее:
- element — переход в режим чтения элемента XML-файла. Может или являться корневым элементом дескриптора, или находиться внутри iteration . С помощью атрибута name могут быть заданы разнообразные фильтры для элементов, например
- name=»foo» — элементы с именем тэга foo
- name=»*» — все элементы
- name=»tagname[@attribute=’value’]» — элементы с определённым именем и значением атрибута
- name=»(before)» , name=»(after)» — «виртуальные» элементы, предшествующие итерации и закрывающие итерацию.
- mode=»horizontal» — режим вывода по горизонтали (по умолчанию — vertical)
- index=0 — ограничить итерацию только самым первым встреченным элементом
- sourcesheet —лист книги шаблона, с которого берётся диапазон вывода. Если не указывать, то применяется текущий (последний использованный) лист.
- range – диапазон шаблона, копируемый в результирующий документ, например “A1:M10”, или “5:6”, или “C:C”. (Применение диапазонов строк типа “5:6” в режиме вывода horizontal и диапазонов столбцов типа “C:C” в режиме вывода vertical приведёт к ошибке).
- worksheet – если определён, то в файле вывода создаётся новый лист и позиция вывода смещается в ячейку A1 этого листа. Значение этого атрибута, равное константе или XPath-выражению, подставляется в имя нового листа.
Ну что же, настало время скачать Xylophone и запустить формирование отчёта.
Возьмите архив с bintray или Maven Central (NB: на момент прочтения этой статьи возможно наличие более свежих версий). В папке /bin находится shell-скрипт, при запуске которого без параметров вы увидите подсказку о параметрах командной строки. Для получения результата нам надо «скормить» ксилофону все приготовленные ранее ингредиенты:xylophone -data testdata.xml -template template.xlsx -descr descriptor.xml -out report.xlsxОткрываем файл report.xlsx и убеждаемся, что получилось именно то, что нам нужно:

Так как библиотека ru.curs:xylophone доступна на Maven Central под лицензией LGPL, её можно без проблем использовать в программах на любом JVM-языке. Пожалуй, самый компактный полностью рабочий пример получается на языке Groovy, код в комментариях не нуждается:
@Grab('ru.curs:xylophone:6.1.3') import ru.curs.xylophone.XML2Spreadsheet baseDir = '.' new File(baseDir, 'testdata.xml').withInputStream < input ->new File(baseDir, 'report.xlsx').withOutputStream < output ->XML2Spreadsheet.process(input, new File(baseDir, 'descriptor.xml'), new File(baseDir, 'template.xlsx'), false, output) > > println 'Done.'У класса XML2Spreadsheet есть несколько перегруженных вариантов статического метода process , но все они сводятся к передаче всё тех же «ингредиентов», необходимых для подготовки отчёта.
Важная опция, о которой я до сих пор не упомянул — это возможность выбора между DOM и SAX парсерами на этапе разбора файла с XML-данными. Как известно, DOM-парсер загружает весь файл в память целиком, строит его объектное представление и даёт возможность обходить его содержимое произвольным образом (в том числе повторно возвращаясь в один и тот же элемент). SAX-парсер никогда не помещает файл с данными целиком в память, вместо этого обрабатывает его как «поток» элементов, не давая возможности вернуться к элементу повторно.
Использование SAX-режима в Xylophone (через параметр командной строки -sax или установкой в true параметра useSax метода XML2Spreadsheet.process ) бывает критически полезно в случаях, когда необходимо генерировать очень большие файлы. За счёт скорости и экономичности к ресурсам SAX-парсера скорость генерации файлов возрастает многократно. Это даётся ценой некоторых небольших ограничений на дескриптор (описано в документации), но в большинстве случаев отчёты удовлетворяют этим ограничениям, поэтому я бы рекомендовал использование SAX-режима везде, где это возможно.
Надеюсь, что способ выгрузки в Excel через Xylophone вам понравился и сэкономит много времени и нервов — как сэкономил нам.
И напоследок ещё раз ссылки:
- исходники — здесь: github.com/CourseOrchestra/xylophone
- документация — здесь: courseorchestra.github.io/xylophone
- все примеры кода из этой статьи — здесь: github.com/inponomarev/xylophone-example.
Выгрузка из Excel
Обработка предназначена для первоначального заполнения или дополнения базы данных в конфигурации «ДАЛИОН: Управление магазином» торговой организации, путем выгрузки в нее сведений из ранее существовавших файлов с аналогичной информацией, созданных в формате Excel.
Запускается обработка из пункта меню «Сервис/Обмен данными/Загрузка данных из табличного документа».
Возможно два режима загрузки, выбираемых из списка — «Загрузка в справочник» и «Загрузка в табличную часть».
Экранная форма обработки имеет две закладки: «Табличный документ» и «Настройка». Закладкой «Настройка» рекомендуется пользоваться только опытным пользователям.
Режим «Загрузка в справочник»
После того, как будет выбран режим «Загрузка в справочник», из выпадающего списка, содержащего все справочники, следует выбрать вид (название) справочника, в который будет загружаться информация. В рассматриваемом примере это справочник «Сотрудники». При выборе конкретного справочника колонки табличной части будут соответствовать реквизитам этого справочника. Далее, следует нажать экранную кнопку «Открыть файл ….» (находится слева вверху над табличной частью) и указать путь к файлу, из которого будет загружаться информация. Тип файла («Лист Excel») следует выбрать из выпадающего списка. По нажатию экранной кнопки «Открыть» информация будет перенесена в табличную часть обработки.
По кнопке «Контроль заполнения» можно проверить правильность заполнения файла для загрузки в систему. Если параметр в ячейке не соответствует параметру в ДАЛИОНе, системой будет выдано уведомление об ошибке, а проблемные ячейки будут помечены красным флажком.


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

Выгрузка во все остальные справочники производится аналогично описанному выше.
Режим «Загрузка в табличную часть»
Для того, чтобы загрузить данные из файла в формате «Excel» в табличную часть формируемого документа, необходимо выбрать режим «Загрузка в табличную часть». Пустой документ, табличная часть которого будет заполняться (в данном примере это «Ввод остатков товары»), следует создать заранее и выбрать его в поле «Ссылка». (Сначала, нажав на «Т», выбрать тип данных, а затем, нажав на «…» выбрать конкретный документ.). После этого из выпадающего списка выбирается табличная часть (в данном примере это «Товары»).
Затем, аналогично описанному выше, для загрузки справочников нажимается экранная кнопка «Открыть файл», и в той же последовательности информация переносится в табличную часть обработки.

По нажатию экранной кнопки «Загрузить», информация из файла в формате «Excel» будет загружена в созданный ранее пустой документ «Ввод остатков товары» в «ДАЛИОН: Управление магазином».