Куперс

Бухучет и анализ

Объединить 1С

Объединение таблиц в конструкторе запросов

рубрики: Конструктор запросов | Дата: 22 декабря, 2016

Когда нам надо расположить записи одной таблицы под записями другой, используется
объединение таблиц.

А сейчас рассмотрим как делается объединение таблиц средствами конструктора запросов 1С.

Допустим, что нам нужно создать вот такую простейшую таблицу:

Числа

Чтобы получить такую таблицу достаточно выполнить следующий запрос:

ВЫБРАТЬ 100 КАК Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 200

А теперь сформируем этот запрос используя конструктор запросов.

Открываем диалоговое окно конструктора и добавляем поле с числом 100.

Переходим на закладку Объединения/Псевдонимы и видим вот такую картину:

В командной панели нажимаем кнопку Добавить

после чего на закладке Таблицы и поля появляются дополнительные закладки сбоку: Запрос1 и Запрос2. Переходим на закладку Запрос2 и добавляем в поля число 200

На закладке Объединения/Псевдонимы при этом у нас в левой табличной части появилась еще одна строка Запрос2, а в правой — новая колонка Запрос2. Для полного счастья переименуем Поле1 в Числа

Если нам нужно при объединении отбросить дубли, т.е. вместо ОБЪЕДИНИТЬ ВСЕ использовать просто ОБЪЕДИНИТЬ, то для Запроса2 нужно поставить флажок Без дубликатов

Рассмотрим еще один момент. Добавим к таблице еще одно поле — ЧислоПрописью. Соответственно наша таблица примет вот такой вид:

Числа ЧислоПрописью
100 Сто
200 Двести

Соответственно для первого запроса мы в конструкторе вместо одного поля вводим два:

А теперь представим, что при вводе полей второго запроса мы перепутали их порядок:

Первое, что приходит в голову для исправления ситуации — это удалить поля и ввести их по новой в правильном порядке. И для нашего простейшего запроса это не составит никакого труда. Но на практике запросы бывают гораздо сложнее и такой способ исправления может оказаться очень трудоемким и сопровождаться большим количеством ошибок.
Поэтому воспользуемся более простым и правильным способом. Переходим на закладку Объединения/Псевдонимы, дважды щелкаем по полю с текстовым значением «Двести» и в раскрывающемся списке выбираем числовое значение 200.

Пользовательский репозиторий Arch (Arch User Repository, AUR) — это поддерживаемое сообществом хранилище ПО для пользователей Arch. Он содержит описания пакетов (файлы PKGBUILD), которые позволят вам скомпилировать пакет из исходников с помощью makepkg и затем установить его, используя pacman. AUR был создан, чтобы объединить и предоставить в общий доступ новые пакеты от сообщества и способствовать скорому включению популярных пакетов в репозиторий community. На этой странице вы можете узнать как получить доступ к AUR и как его использовать.

Большое количество пакетов, которые включаются в официальные репозитории, начинают свой путь с AUR. В AUR пользователи могут добавлять свои собственные сборки пакетов (PKGBUILD и другие необходимые файлы). Сообществу предоставлена возможность голосовать за эти пакеты или против них. Если пакет становится популярным, распространяется под подходящей лицензией и может быть собран без дополнительных сложностей, то, вероятно, он будет перенесен в репозиторий community (непосредственно доступный при помощи утилит pacman и abs).

Приступая к работе

Пользователи могут искать и скачивать файлы PKGBUILD через веб-интерфейс AUR. Эти файлы содержат информацию для сборки обычных пакетов, используя makepkg, которые можно устанавливать при помощи pacman.

  • Удостоверьтесь, что у вас установлена группа пакетов base-devel (pacman -S —needed base-devel)
  • Прочитайте эту статью до конца для получения дополнительной информации и краткого руководства по установке пакетов из AUR
  • Посетите веб-интерфейс AUR, чтобы узнать о новинках и событиях. Там же вы найдете статистику и свежий список недавно добавленных в AUR пакетов
  • Просмотрите раздел #Часто задаваемые вопросы
  • Вы можете также настроить /etc/makepkg.conf для включения оптимизации под ваш процессор перед тем, как начинать сборку пакетов из AUR. Значительное уменьшение времени компиляции может быть достигнуто на системах с многоядерными процессорами путем изменения значения переменной MAKEFLAGS. Также пользователи могут включить специфичные для конкретного оборудования оптимизации в gcc при помощи переменной CFLAGS. Для получения дополнительной информации смотрите статью makepkg

История

Вначале был сетевой каталог ftp://ftp.archlinux.org/incoming, куда люди вносили свой вклад путем простой выгрузки файлов PKGBUILD, а также необходимых дополнительных файлов и собранного пакета. Пакет и связанные с ним файлы оставались на сервере до тех пор, пока мейнтейнер пакета не проверял и не принимал программу для включения в официальный репозиторий.

После были созданы репозитории доверенных пользователей. Нескольким участникам сообщества было разрешено содержать свои собственные репозитории с общим доступом. AUR вырос на их основе с целью предоставить более гибкую и удобную систему. На самом деле, AUR-мэйнтейнеры до сих пор упоминаются как доверенные пользователи (TU, Trusted Users).

Между 2015-06-08 и 2015-08-08 состоялся переход AUR с версии 3.5.1 на 4.0.0, в связи с началом использования Git для работы с PKGBUILD.

Поиск

Поиск названий пакетов и в их описании идет при помощи оператора LIKE в БД MySQL. Это дает возможность создавать более гибкие запросы (к примеру, попробуйте поискать tool%like%grep вместо tool like grep). Если вам необходимо найти описание, в котором содержится символ %, экранируйте его так: \%.

Установка пакетов

Важно: В Arch Linux нет и никогда не будет официального механизма для установки собранных из AUR пакетов. Все пользователи AUR должны представлять себе, как происходит процесс сборки

Установка пакетов из AUR относительно проста. Необходимо:

  1. Скачать архив, содержащий PKGBUILD и, возможно, другие требуемые файлы, такие как юниты systemd и патчи (но, чаще всего, не сам исходный код)
  2. Извлечь архив (предпочтительно в каталог, предназначенный лишь для сборки из AUR) при помощи команды tar -xvf pkgname.tar.gz
  3. Выполнить makepkg -sri в каталоге с извлеченными файлами. Эта команда скачает код, разрешит зависимости при помощи pacman, скомпилирует, запакует и установит все получившиеся пакеты, после чего удалит те из них, которые были нужны только для сборки

Подготовка

Для начала убедитесь, что у вас установлены все необходимые утилиты:

# pacman -S —needed base-devel

Группы пакетов base-devel должно быть достаточно. Она включает в себя утилиту make и другие инструменты, необходимые для компиляции из исходников.

Важно: Предполагается, что группа base-devel у вас уже установлена, и поэтому пакеты из AUR не объявляют никакие пакеты из неё в качестве зависимостей, даже если сборка без них будет невозможна. Пожалуйста, убедитесь в том, что эта группа пакетов установлена, прежде чем сообщать об ошибках

Теперь выберите подходящий каталог для сборки. Каталог сборки — это просто место, в котором пакет будет создан или «собран», и им может быть любой каталог в системе. В примерах из следующих разделов в качестве каталога для сборки будет использоваться ~/builds.

Получение файлов

Найдите пакет в AUR. Это делается с помощью поиска (текстовое поле наверху главной страницы AUR). После перехода по одной из ссылок из списка найденных результатов откроется страница информации о выбранном пакете. Прочтите описание и убедитесь, что это то, что вы искали, обратите внимание на то, когда пакет последний раз обновлялся, и прочтите комментарии.

Существует три известных способа получить необходимые файлы без использования вспомогательных программ для работы с AUR:

  • Скачайте необходимые файлы для сборки. Для этого нажмите на ссылку «Загрузить снимок» под заголовком «Действия над пакетом» справа. Этот файл должен быть сохранен в каталог для сборки или скопирован туда после скачивания. В нашем примере архив будет называться foo.tar.gz (стандартный формат — имяпакета.tar.gz, если он был выгружен в AUR правильно)
  • Также вы можете скачать архив при помощи терминала, сперва перейдя в каталог сборки:

$ cd ~/builds $ curl -L -O https://aur.archlinux.org/cgit/aur.git/snapshot/foo.tar.gz

  • И ещё один вариант — клонировать Git-репозиторий, который указан в графе «URL для git clone» в разделе «Информация о пакете»:

$ cd ~/build-repos $ git clone https://aur.archlinux.org/foo.git

Сборка и установка пакета

Перейдите в каталог для сборки (если вы этого еще не сделали), и распакуйте скачанный ранее пакет:

$ cd ~/builds $ tar -xvf foo.tar.gz

После этого в каталоге сборки появится новая директория foo.

Примечание: Если вы клонировали git-репозиторий (git clone), процедура распаковки не требуется. Каталог foo уже был создан при клонировании Важно: Внимательно проверьте все файлы. Перейдите в новый каталог и просмотрите PKGBUILD и каждый файл .install на наличие сомнительных команд. Файлы PKGBUILD — это bash-скрипты, содержащие функции, которые будут выполнены при запуске makepkg, и эти функции могут содержать любые команды или синтаксис Bash. Таким образом, вполне возможно, что в PKGBUILD будут содержаться небезопасные команды, добавленные туда намеренно или по недосмотру. Поскольку makepkg использует fakeroot (и никогда не должен запускаться от имени суперпользователя), есть некоторый уровень защиты, но никогда не следует полагаться на это. Если у вас есть сомнения, не собирайте пакет, а обратитесь за советом на форум или в почтовую рассылку $ cd foo $ nano PKGBUILD $ nano foo.install

Соберите пакет. После ручной проверки целостности файлов запустите makepkg от имени обычного пользователя:

$ makepkg -sri

Опция -s/—syncdeps автоматически разрешит и установит перед сборкой все необходимые зависимости при помощи pacman, -r/—rmdeps удалит зависимости, необходимые только для сборки, а -i/—install установит получившийся пакет.

Примечание: Приведенный выше пример дает лишь поверхностное описание процесса сборки пакета. Настоятельно рекомендуем прочесть статьи makepkg (Русский) и Arch Build System (Русский), в которых представлена более подробная информация

Обратная связь

Веб-интерфейс AUR имеет возможность комментирования, благодаря которой пользователи могут сообщить мэйнтейнеру PKGBUILD о предложениях и улучшениях. Тем не менее, не стоит добавлять патчи или PKGBUILD в свои комментарии, так как они очень быстро устаревают и, в итоге, просто занимают место. Вместо этого отправляйте такие файлы на email мэйнтейнера или даже используйте pastebin.

Одним из самых простых действий для всех пользователей Arch Linux является обзор AUR и голосование за понравившиеся пакеты.

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

Распространение и поддержка пакетов

При помощи AUR, пользователи могут распространять свои файлы PKGBUILD. В репозитории не хранится каких-либо бинарных пакетов, но он позволяет пользователям выгружать файлы PKGBUILD, которые потом могут быть скачаны другими. Файлы PKGBUILD не проходят тщательную проверку (и не поддерживаются официально), поэтому вы используете их на свой страх и риск.

Отправка пакетов

Важно: Ожидается, что перед тем, как предоставлять пакеты, вы ознакомитесь со стандартами создания пакетов для Arch, а также всеми статьями, упомянутыми внизу страницы.

Правила отправки пакетов

При отправке пакетов в AUR придерживайтесь следующих правил:

  • Проверьте официальную базу данных пакетов на наличие этого пакета. Если для него существует любая версия, не выкладывайте пакет. Если официальный пакет устарел, пометьте его как устаревший. Если официальный пакет заброшен или не предоставляет какую-либо функцию, пожалуйста, создайте баг-репорт.
  • Проверьте AUR на наличие этого пакета. Если он в настоящее время поддерживается, о необходимых изменениях можно написать в комментариях, чтобы мейнтейнер обратил на это внимание. Если он не поддерживается, пакет может быть принят и вы можете его обновлять по мере необходимости. Не создавайте дублирующиеся пакеты.
  • Внимательно проверьте, что то, что вы отправляете, не содержит ошибок. При создании PKGBUILD обязательно прочтите и придерживайтесь стандартов для создания пакетов Arch. Это необходимо для нормального функционирования и успешной работы AUR. Уважайте личное время каждого пользователя и не тратьте его на исправление ваших ошибок в PKGBUILD.
  • Пакеты, содержащие бинарные файлы, либо оформленные небрежно могут быть удалены без предупреждения.
  • Если вы сомневаетесь в пакете (или в каком либо из шагов его создания), отправьте PKGBUILD в или на форум AUR для публичного обсуждения, прежде чем добавлять его непосредственно в AUR
  • Задайте себе вопрос — будет ли пакет еще кому-нибудь полезен?. Не очень ли он узкоспециализированный? Если он будет полезен более, чем ограниченной группе людей, пакет подходит для AUR.
  • AUR и официальные репозитории предназначены для пакетов, преимущественно устанавливающих программное обеспечение и содержимое, относящееся к нему, и включающих что-либо из следующего: исполняемый(е) или конфигурационный(е) файл(ы), online- или offline-документацию для конкретных программ или дистрибутива Arch Linux в целом; медиафайлы, используемые программным обеспечением напрямую.
  • Наберитесь немного опыта, прежде чем предоставлять пакеты в AUR. Изучите и соберите несколько пакетов других пользователей, прежде чем отправлять свои.

Создание нового пакета

Для получения возможности отправки пакета в AUR у пользователя должен быть ключ SSH. Содержимое публичного ключа .ssh/foo.pub необходимо скопировать в данные пользователя в Мою учётную запись. Вместо использования существующего SSH-ключа рекомендуется создать новый: в этом случае вы будете иметь возможность отозвать ключ, если что-то произойдёт.

Для подготовки к загрузке пакета просто клонируйте Git-репозиторий с необходимым именем:

$ git clone ssh://aur@aur.archlinux.org/foobar.git

Клонирование (clone) или отправка (push) в несуществующий репозиторий автоматически создаст его.

Теперь вы можете добавить необходимые файлы в локальную копию репозитория. При внесении изменений в репозитории обязательно включайте в корневой каталог файлы PKGBUILD и .SRCINFO. Для создания файла .SRCINFO можно использовать команду mksrcinfo из пакета pkgbuild-introspectionAUR.

Примечание: Файл .SRCINFO содержит исходные метаданные пакета. Для получения дополнительной информации смотрите раздел Arch User Repository#AUR metadata

Обновление/отправка пакета

Для отправки новой версии пакета в AUR добавьте новые PKGBUILD, .SRCINFO и, при необходимости, другие файлы (например, файл .install или локальные файлы патчей .patch) в staging area при помощи команды git add, создайте коммит с коментарием при помощи git commit, и после этого отправьте изменения в AUR при помощи git push.

Пример создания и отправки нового пакета:

$ mksrcinfo $ git add PKGBUILD .SRCINFO $ git commit -m ‘Initial import’ $ git push origin master Важно: Если вы не хотите публиковать ваши данные, не забудьте установить локальное имя пользователя и электронную почту с помощью git config user.name и git config user.email ! Намного труднее изменить опубликованную историю, смотрите: FS#45425. Проверяйте ваши коммиты до их отправки!

Для обновления пакета измените файл PKGBUILD и запустите следующие команды отслеживания изменений в репозитории Git:

$ mksrcinfo $ git commit -am ‘Update to 1.0.0-2’ $ git push

Для получения дополнительной информации смотрите статью Git.

Совет: Если вы забыли добавить в коммит файл .SRCINFO, и добавили его в последующем коммите, AUR откажет в записи пакета, потому что .SRCINFO должен присутствовать в каждом изменении. Чтобы решить эту проблему, можно использовать git rebase с параметром —root или git filter-branch с параметром —tree-filter.

Поддержка пакетов

  • Если вы занимаетесь поддержкой пакета и хотите обновить его PKGBUILD, просто отправьте пакет еще раз.
  • Поддерживайте обратную связь: следите за комментариями других пользователей и вносите улучшения, которые они предлагают. Относитесь к этому, как к процессу обучения!
  • Пожалуйста, не пишите комментариев, содержащих номер версии при каждом обновлении пакета. Благодаря этому раздел комментариев будет удобен для полезного содержимого, о котором упомянуто выше. Для проверки наличия обновлений гораздо лучше подходят инструменты для работы с AUR.
  • Не забрасывайте свои пакеты! Именно создатель пакета должен его сопровождать, проверять обновления и улучшать PKGBUILD.
  • Если вы по каким-то причинам больше не хотите продолжать поддерживать пакет, откажитесь от него (disown) в веб-интерфейсе AUR и/или отправьте сообщение в почтовую рассылку AUR.

Прочие запросы

  • Запросы на отказ от поддержки пакета или его удаление можно создать, нажав на ссылку «File Request» в меню «Действия над пакетом» справа. В этом случае автоматически будет отправлено уведомление текущему мэйнтейнеру пакета по электронной почте и в для обсуждения. После этого доверенные пользователи примут или отвергнут запрос
  • Запросы на отказ от поддержки пакета будут выполнены в течение двух недель, если текущий мэйнтейнер не вмешается
  • Было реализовано слияние пакетов: пользователи все равно должны повторно отправлять пакет под новым именем, но при этом могут сделать запрос слияние комментариев и голосов из старых пакетов.
  • Запросы на удаление должны содержать следующую информацию:
    • Причину удаления, хотя бы короткую запись
      Заметьте, что только лишь комментариев к пакету недостаточно для указания причины его удаления. Чтобы доверенные пользователи предприняли какие-либо действия, единственное место, куда следует отправлять данную информацию — почтовая рассылка aur-requests.
    • Информацию по поддержке: например, то, что содержимое пакета предоставляется другим пакетом, или то, что он был переименован с согласия владельца, и т.д.
    • Для запросов на слияние: имена нового и исходных пакетов.

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

Репозиторий git для пакетов AUR3

Несопровождаемые пакеты 08.08.2015 были удалены из AUR при переходе на использование Git.

Имеется Архив AUR на GitHub, содержащий все пакеты из AUR3 до перехода на AUR4.

Часто задаваемые вопросы

Что такое AUR?

AUR (Arch User Repository, пользовательский репозиторий Arch) — это место, куда пользователи Arch Linux могут загружать файлы PKGBUILD приложений, библиотек и т. д. и предоставлять к ним доступ всему сообществу. Попутно пользователи могут голосовать за понравившиеся им пакеты для перемещения их в репозиторий community, после чего пакеты станут доступны для пользователей в бинарном виде.

Какие типы пакетов разрешены в AUR?

Пакеты AUR — это просто «скрипты сборки» исполняемых файлов для последующей упаковки полученных бинарных файлов в пакет и установки при помощи pacman. Обычно разрешено все, что удовлетворяет вышеуказанным принципам полезности, инструкциям и лицензионным требованиям программного обеспечения. Но в некоторых случаях прямо указано, что запрещено создавать ссылки на скачивание, например, когда контент запрещен к распространению, вы можете использовать лишь само имя файла в качестве исходника. Это означает, что пользователь должен самостоятельно озаботиться в получении таких файлов. Если вы сомневаетесь в правовых аспектах, лучше сначала спросить.

Как я могу голосовать за пакеты в AUR?

Зарегистрируйтесь на веб-сайте AUR для получения доступа к опции «Проголосовать за пакет» во время просмотра пакетов. После регистрации доступно также голосование из командной строки при помощи пакета aurvoteAUR.

Кто такие доверенные пользователи/TU?

Доверенный пользователь (Trusted User, TU) — это пользователь, выбранный для сопровождения AUR и репозитория community. Они поддерживают популярные файлы PKGBUILD в community и работу AUR в целом.

В чем разница между AUR и репозиторием community?

AUR — это место, где хранятся все файлы PKGBUILD, присланные пользователями. Сами пакеты должны быть собраны вручную при помощи makepkg. Когда файлы PKGBUILD набирают достаточный интерес со стороны сообщества и поддержку доверенных пользователей, они собираются в пакеты, которые перемещаются в репозиторий community (поддерживаемый доверенными пользователями), из которого уже могут напрямую быть установлены при помощи pacman.

Что необходимо для перемещения PKGBUILD в репозиторий community?

Обычно необходимо как минимум 10 голосов для того, чтобы пакет мог быть перемещен в community. Однако, если доверенный пользователь захочет поддерживать пакет, он скорее всего сделает это сразу.

Получение пакетом минимально необходимого количества голосов — не единственное требование: у кого-либо из доверенных пользователей должно появиться желание поддерживать этот пакет. Доверенные пользователи не обязаны перемещать пакет в репозиторий community, даже если он имеет тысячи голосов.

В большинстве случаев очень популярные пакеты остаются в AUR по одной или нескольким из следующих причин:

  • В репозиториях Arch Linux уже содержится другая версия пакета
  • Пакет предназначен для AUR (например, это Инструмент для работы с AUR)
  • Прямое распространение запрещено лицензией

Смотрите также правила добавления пакетов в репозиторий community.

Как создать PKGBUILD?

Прочтите статью Создание пакетов. Перед тем, как создавать PKGBUILD проверьте, нет ли его в AUR, чтобы исключить дублирование.

Я пробую запустить «pacman -S foo», но получаю ошибку, хотя знаю, что этот пакет есть в репозитории community

Скорее всего, вы не разрешили использование репозитория community в /etc/pacman.conf. Просто раскомментируйте соответствующие строки.

Если community в вашем файле /etc/pacman.conf включен, попробуйте сперва запустить pacman -Syu, чтобы синхронизировать кэш пакетов и выполнить полное обновление системы, а затем снова попробуйте установить пакет foo.

Пакет из AUR устарел, что я могу сделать?

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

Я хочу предоставить свой PKGBUILD; кто-нибудь может проверить его на наличие ошибок?

Если вы хотите, чтобы пользователи проверили ваш PKGBUILD, отправьте его в почтовую рассылку aur-general. Получить помощь вы также можете в IRC-канале #archlinux на irc.freenode.net. Кроме того, вы можете использовать namcap для проверки PKGBUILD и собранного пакета на наличие ошибок.

Пакет foo из AUR не собирается, когда я запускаю makepkg; что мне делать?

Скорее всего, вы упустили какие-то детали.

  1. Запустите pacman -Syyu перед сборкой. Возможно, ваша система не обновлена.
  2. Убедитесь, что установлены группы пакетов «base» и «base-devel».
  3. Попробуйте запустить makepkg с опцией -s для проверки и установки необходимых зависимостей перед началом сборки.

Первым делом просмотрите PKGBUILD и прочтите комментарии на странице пакета в AUR. Возможно, причина несколько сложнее. Нестандартные установки CFLAGS, LDFLAGS и MAKEFLAGS могут вызывать ошибки. Также возможно, что ошибки содержит сам PKGBUILD. Если вы не можете исправить их самостоятельно, сообщите об этом пользователю, поддерживающему пакет — например, написав комментарий на странице в AUR.

Как ускорить повторную сборку?

Если вы часто компилируете код, используя gcc — скажем, пакет, использующий исходный код из репозиториев git или svn, вы можете найти полезной утилиту ccache (compiler cache).

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

Смотрите раздел #Установка пакетов.

Почему пакет пропал из AUR?

Пакет мог быть удалён, если он не удовлетворял правилам отправки пакетов. Для уточнения причины удаления смотрите архив aur-requests.

Если пакет присутствовал в AUR3, не обязательно, что он перешёл в AUR4. Вы можете попробовать найти его в репозитории git для пакетов AUR3.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх