Ошибка нужно быть владельцем расширения

Инструкция по созданию патчей (оперативных исправлений ошибок)

1. Патчи следует выпускать для оперативного исправления критичных ошибок в прикладных решениях и библиотеках, не дожидаясь выпуска очередного исправительного релиза («минуя» длительную процедуру выпуска и встраивания библиотек – в случае ошибок в библиотеках).

Критичность определяется ответственным за прикладное решение (библиотеку).

2. Технически патч – это расширение конфигурации, которое имеет небольшой размер (по сравнению с файлом поставки или обновления конфигурации), и установка которого не требует длительного обновления и блокировки работы пользователей. Для применения патча достаточно перезапустить сеанс.

Установка и удаление патчей реализована в 1С:Библиотека стандартных подсистем, а в 1С:Библиотека интернет-поддержки предусмотрена автоматическая загрузка патчей с портала 1C:Обновление программ. Вариант установки патчей (ручной или автоматический) в «коробках» контролирует администратор, а в модели сервиса – администратор сервиса (требуется подключение экземпляра облачного решения 1C:Fresh к порталу 1С:ИТС). Для «коробок» и облачных решений без подключения к интернету также возможно загружать интересующие патчи с портала 1C:Обновление программ на флешку и устанавливать с нее.

3. Создавать патчи можно с помощью конфигуратора или автоматически по исправленным в хранилище ошибкам с помощью 1С:Система проектирования прикладных решений (СППР). С помощью СППР патчи формируются автоматически по закладкам в репозитории git, рассчитывается применимость патча к версиям конфигурации (а для библиотек – к версиям всех прикладных решений, в которые она встроена); автоматизирована публикация и отзыв патчей, есть подписание патчей для базовых версий, а также целый ряд других полезных сервисов.

Создание патчей с помощью конфигуратора

Сначала исходную ошибку, которую требуется закрыть патчем, необходимо исправить и протестировать штатным образом. Изменения по исправлению ошибки поместить в рабочее хранилище проекта.

Затем открыть конфигуратором информационную базу одной из прошлых версий, в которой имеется исправляемая ошибка, и перенести изменения по ошибке в расширение конфигурации.

Для этого создать новое расширение конфигурации (если изменять ранее созданное расширение для другой ошибки, то это приведет к исключению при одновременном подключении этих расширений) и выполнить действия:

  1. Указать свойства расширения:
    • Имя – «EF_<произвольный_номер_ошибки>». Например, EF_00_00268773.
    • Префикс имен – берется из свойства имя.
    • Основные роли – снять флаг.
    • Основной язык – снять флаг.
    • В группе Совместимость – снять флаги у всех свойств.
    • Режим совместимости — указывать равный или ниже тому, что у конфигурации, для которого оно создается.
  2. Не удалять объект метаданных Язык – Русский.
  3. Перенести изменения в расширение-патч.
    • Для процедур и функций – встать на любой строчке и нажать ALF+SHIFT+F2, в диалоговом окне «Тип выбора» указать «Вызывать вместо».
    • В метод патча перенести текущую реализацию со всеми необходимыми изменениями.
  4. Создать и заполнить макет, который описывает содержимое патча и информацию о нем:
    • Добавить общий макет, имя которого совпадает с именем расширения. Например, EF_00_00268773.
    • Заполнить содержимое макета по примеру:

    Копировать в буфер обмена

<Patch xmlns=»http://www.v8.1c.ru/ssl/patch» xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»>
<Name>EF_00_00268773</Name>
<Description>В веб-клиенте при сохранении некоторых печатных форм может быть недоступен выбор папки сохранения.</Description>
<UUID>abfde8f7-7ac4-43a9-9521-d291d0d0d6c3</UUID>
<ModifiedMetadata>ОбщаяФорма.СохранениеПечатнойФормы.ПриСозданииНаСервере</ModifiedMetadata>
<AppliedFor>
<ConfigurationName>СтандартныеПодсистемы</ConfigurationName>
<Versions>3.1.2.229,3.1.2.245</Versions>
</AppliedFor>
</Patch>

  • Name – должно совпадать с именем патча из расширения
  • Description – описание для пользователя, будет отображаться в списке установленных патчей.
  • UUID – уникальный идентификатор патча. Требуется создать новый, получив методом платформы Новый УникальныйИдентификатор.
  • ModifiedMetadata – изменяемые объекты метаданных.
  • AppliedFor – блок, в котором описывается к каким конфигурациям подходит данный патч.
  • ConfigurationName – имя конфигурации, берется из описания подсистемы в модуле ОбновлениеИнформационнойБазы<Сокращение>.
  • Versions – список версий конфигурации через запятую, для которой применим патч.
  • Рекомендуется при проверке патча проверять, что данный макет корректно читается и в нем нет ошибок – для этого нужно перейти к списку установленных исправлений (Администрирование – Обслуживание – Установленные исправления).

При переносе исправления ошибки в расширение следует учитывать следующее. Новые процедуры и функции следует добавлять в расширение с префиксом патча, например, вместо

«ИмяМоейПроцедуры» следует указывать

«EF_<произвольный_номер_ошибки>_ИмяМоейПроцедуры».

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

Создание патчей с помощью Системы проектирования прикладных решений (СППР)

Первичная настройка

  1. Развернуть сервер репозиториев git (например, GitLab) и указать его адрес в карточке проекта в СППР.
  2. Переключиться на закладку Общая информация проекта и заполнить поля Имя конфигурации – то, что указано в модуле ОбновлениеИнформационнойБазы<Сокращение> и Идентификатор программы – идентификатор в сервисах Интернет-поддержки пользователей. Если СППР будет использоваться только для создания патчей, без их публикации, то идентификатор программы заполнять не обязательно.
  3. В карточке версии:
    • на закладке Наследование ошибок и патчи включить флажок «Автоматически создавать патчи по публикуемым ошибкам»;
    • заполнить поле Версия платформы. Значение должно совпадать с режимом совместимости платформы для данной версии конфигурации.

Создание патчей для ошибок

  1. Исправить ошибку в хранилище проекта.
  2. В карточке ошибки в СППР внизу на закладке Исправление включить флажок Создать патч по исправлению ошибки .
  3. Описание патча автоматически заполнится из публикуемого описания ошибки.
  4. Дождаться готовности патча, проверить его на версии, в которой ошибка была привнесена, и нажать Проверен в карточке патча (для каждой версии, если патч создается сразу для нескольких версий проекта).
  5. Сформированный патч сохранить по кнопке Сохранить патч… и передать пользователям.
  6. Если СППР подключен к базе публикации, то нажать Опубликовать . После чего патч будет отправлен в базу публикации и вскоре окажется доступен для автоматической загрузки с портала 1C:Обновление программ.

Отзыв патчей с портала 1C:Обновление программ

В случае если ошибка исправлена неверно, требуется отозвать патч и выпустить новый. Но не следует перевыпускать патч или выпускать патч на патч.
При публикации патча из СППР необходимо:

  1. Открыть карточку интересующего патча.
  2. В меню Еще списка версий патча нажать Отозвать. После чего информация об отзыве патча будет отправлена на портал 1C:Обновление программ.

Если патч публиковался вручную на портале 1C:Обновление программ, то отзыв так же выполняется вручную.

После доисправления ошибки появится возможность вновь опубликовать патч для нее.

Если патч не удалось создавать автоматически

Не во всех случаях возможно создать патч автоматически, например:

  • изменения по ошибке пересекаются с другим исправлением и патч нельзя применить ни к одной из опубликованных сборок конфигурации;
  • содержит изменения, которые не касаются кода и на данный момент не поддерживаются автогенератором патчей в СППР;
  • особенности или ограничения автогенератора патчей.

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

Рекомендации и ограничения технологии патчей

Патчи подходят для исправления ошибок:

  • в программных модулях (общих модулях, модулях форм, модулей менеджеров, объектов, наборов записей и пр.)
  • в «коробочных» версиях, в модели сервиса и в базовых версиях;
  • в типовых (на полной поддержке), доработанных типовых и нетиповых конфигурациях (которые включают публикуемые библиотеки).

Патчи не подходят:

  • для исправления обработчиков обновления, которые портят данные;
  • для изменения пользовательских данных;
  • для добавления реквизитов, справочников, перечислений и других объектов метаданных, хранящих данные.

Один патч должен «точечно» исправлять только одну ошибку

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

Патчи не должны создаваться «внахлест»

Если для исправления двух разных ошибок требуется исправить одну и ту же процедуру (функцию), то следует создать два патча и ограничить их область применимости (по версиям).

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

Тщательно проверять патчи

Поскольку патч публикуется максимально оперативно, то рекомендуется дополнительно проверять патч отдельно от проверки исправления ошибки:

  • в опубликованной версии конфигурации (библиотеки) – сначала убедиться, что ошибка воспроизводится;
  • затем установить патч и убедиться, что ошибка исправлена.

Не следует полагаться только на успешное подключение патча к конфигурации, или что патч успешно собран автоматически (есть также ограничения технологии патчей и платформы).

Проверка патча важна в полном объеме, во всех ветках, для которых он будет публиковаться.

Кроме того, для проверки патчей настоятельно рекомендуется:

  • аудит исправления ошибки другим разработчиком;
  • перекрестная проверка исправления тестировщиком или другим разработчиком.

Если проверка исправления ошибки требует регламентного тестирования (например, обязательно подтверждение исправления регрессионными тестами и т.п.), то патч также не следует публиковать до того, как исправление ошибки пройдет все предусмотренные этапы проверки.

Патч рекомендуется публиковать только после выполнения перечисленных этапов проверки.

Подпись патчей для базовых версий конфигураций

<путь к платформе> DESIGNER /IBConnectionString <строка подключения> /SignCfg <путь к подписанному патчу> -Type File -digisign <путь к закрытому ключу (*.pem)> -File <путь к исходному патчу>

УНФ базовая и расширения

Подскажите, разрешено ли подключать к базовой УНФ расширения (допустим через «все функции»)? Не нарушу ли я лицензию 1С? А то конфигуратором лазить нельзя, а расширения к нему приравниваются?

В базовых версиях прикладных решений работа с расширениями не поддерживается. (с) https://its.1c.ru/db/v8311doc#bookmark:dev:TI000001923

Если у тебя расширение доступно — значит у тебя лицензия на платформу не базовая, а ПРОФ.

(11) всё-таки _расширения_ работают на платформе _проф_
И им в этом случае как бы и все равно, а в какой же базе работает это расширение. Базовая база? Ну и 1С предоставляет свою поддержку для базовой версии.

Можно предположить, что со временем эту фичу уберут, когда базовая база способна работать на платформе с проф лицензией, что значительно расширяет ее возможности.

И это не единственная такая прикольная фича у платформы 1С. Можно и возможности серверного режима получать абсолютно ничего не взламывая, просто использовать и все штатными средствами.
Причем, теперь уже два варианта для получения режима сервера доступны, а раньше был только один. Причем, прямо «из коробки»

Ошибка применения расширения конфигурации

Не получается адаптация конфигурации «1С:Розница 2.2» Вот с этого сайта http://online-modul.ru/kkt_server.html#driver .
Пытаюсь подключить две розници с разными базами к одному ККМ атол 30ф. На рознице 2.3 которая не подключена к ккм. адаптация проходит хорошо, а на рознице 2.2 к которой ккм подключен физически выдает эти ошибки

(Критичная) : Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

: Ошибка при вызове метода контекста (Записать): Ошибка применения расширения конфигурации: Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

В чем может быть проблема?

  • Скопировать ссылку
  • Перейти

  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти

Не получается адаптация конфигурации «1С:Розница 2.2» Вот с этого сайта http://online-modul.ru/kkt_server.html#driver .
Пытаюсь подключить две розници с разными базами к одному ККМ атол 30ф. На рознице 2.3 которая не подключена к ккм. адаптация проходит хорошо, а на рознице 2.2 к которой ккм подключен физически выдает эти ошибки

(Критичная) : Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

: Ошибка при вызове метода контекста (Записать): Ошибка применения расширения конфигурации: Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

В чем может быть проблема?
(2)Там есть файл для 2.2 и 2.3. только 2.2 почему то ругается

i was trying to restore database on amazon rds.. i am getting error message like:

ERROR:  must be owner of extension plpgsql CREATE EXTENSION
ERROR:  must be owner of extension dblink  CREATE EXTENSION
ERROR:  must be owner of extension pgcrypto

Any idea how to solve this issue ?.

Abel Callejo's user avatar

Abel Callejo

13.5k10 gold badges67 silver badges82 bronze badges

asked Jul 9, 2017 at 5:00

Shamseer PC's user avatar

7

I believe both of those extensions are supported by RDS.
See:

$SHOW rds.extensions;

Retrieved from this link

As for enabling the syntax should be along the lines of

#enable_extension "dblink";

As Craig Ringer mentioned rds_super isn’t a real superuser. So, you can’t create the extensions. However, you should be able to enable them.

As in this example

So, you can ignore the errors, but need to manually enable whatever extensions you need. Also I think pl/pgsql may be already there. Try

$dx

answered Jan 25, 2020 at 3:30

Francisco1844's user avatar

Francisco1844Francisco1844

1,1183 gold badges12 silver badges22 bronze badges

Я использую PostgreSQL v9.0.1 с Rails (и он deps) @v2.3.8, благодаря использованию полнотекстовой возможности postgres, у меня есть таблица, которая определяется как:

CREATE TABLE affiliate_products (
    id integer NOT NULL,
    name character varying(255),
    model character varying(255),
    description text,
    price numeric(9,2),
    created_at timestamp without time zone,
    updated_at timestamp without time zone,
    textsearch_vector tsvector,
);

Обратите внимание на последнюю строку, это гарантирует, что активная запись не сможет обработать ее со стандартным самозагрузчиком схемы, поэтому мне нужно установить config.active_record.schema_format = :sql в ./config/environment.rb; и используйте rake db:test:clone_structure вместо rake db:test:clone.

Ничего из этого не слишком примечательно, только неудобно — однако rake db:test:clone_structure не работает с ошибкой:

ERROR: must be owner of language plpgsql

Из-за строки #16 в моем результате ./db/development_schema.sql:

CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql;

В PostgreSQL v9.0+ язык plpsql устанавливается суперпользователем в исходный шаблон, который затем доступен для вновь созданной схемы.

Я не могу запускать тесты в этом проекте, не решая этого, и даже редактирование ./db/development_schema.sql вручную бесполезно, поскольку оно регенерируется каждый раз, когда я запускаю rake db:test:clone_structure (и игнорируется rake db:test:clone).

Надеюсь, кто-то может пролить свет на это?

Примечание. Я использовал как жемчуг pg 0.9.0, так и драгоценный камень postgres в версии 0.7.9.2008.01.28 — оба отображают идентичное поведение.

Мои товарищи по команде запускают PostgreSQL v8.4, где языковая установка — это ручной шаг.

4b9b3361

Ответ 1

Решение было следующим:

В моей установке есть стандартные шаблоны template0 и template1 — по крайней мере, поскольку я понимаю, что postgres будет искать наивысший номер templateN при создании новой базы данных, если только не указан шаблон.

В этом случае в качестве template0 включен plpgsql, так же как и template1… идея заключается в том, что вы настроите template1 для набора ваших потребностей по умолчанию для вашего сайта, а в случае, если вы все взорвите, вы должны восстановить template1 из template0.

Поскольку мое специфическое требование для сайта заключалось в установке plpgsql как части автоматической сборки моего веб-приложения (шаг, который мы должны были поддерживать, чтобы поддерживать совместимость с 8.4) — решение было простым: удалите plpgsql из template1 и предупреждение/ошибка исчезла.

В случае изменения значений по умолчанию для сайта, и нам нужно будет вернуться к поведению по умолчанию, мы просто удалим template1 и заново создадим его (что будет использовать template0)

Ответ 2

У меня была та же проблема. Я исправил свой шаблон с помощью команд ниже

psql template1
template1=# alter role my_user_name with superuser;

читайте больше на http://gilesbowkett.blogspot.com/2011/07/error-must-be-owner-of-language-plpgsql.html

Ответ 3

Для новых читателей я прочитал это более старое сообщение после того, как столкнулся с этой ошибкой в ​​одном из моих собственных проектов. Я сильно чувствую, что предоставление PostgreSQL роли суперпользователя — ужасная идея, и изменение шаблона также не является идеальным. Поскольку ссылки на команды PSQL, которые добавлены db:structure:dump, не нужны в базе данных приложений Rails, я написал специальную задачу rake, которая учитывает проблемные строки в struct.sql. Я публиковал этот код в Github как Gist на https://gist.github.com/rietta/7898366.

Ответ 4

Я столкнулся с этой ошибкой при попытке сделать RAILS_ENV=development bundle exec rake db:reset. Я смог выполнить то же самое (для моих целей), сделав вместо этого RAILS_ENV=development bundle exec rake db:drop db:create db:migrate.

Ответ 5

Я просто фильтрую выражения расширения plpgsql из файла struct.sql post-dump:

# lib/tasks/db.rake

namespace :db do
  desc "Fix 'ERROR:  must be owner of extension plpgsql' complaints from Postgresql"
  task :fix_psql_dump do |task|
    filename = ENV['DB_STRUCTURE'] || File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, "structure.sql")
    sql = File.read(filename)
    sql.sub!(/(CREATE EXTENSION IF NOT EXISTS plpgsql)/, '-- 1')
    sql.sub!(/(COMMENT ON EXTENSION plpgsql)/, '-- 1')
    File.open(filename, 'w') do |f|
      f.write(sql)
    end
    task.reenable
  end
end

Rake::Task["db:structure:dump"].enhance do
  Rake::Task["db:fix_psql_dump"].invoke
end

For people using Google Cloud Platform, any error will stop the import process.
Personally I encountered two different errors depending on the pg_dump command I issued :

1- The input is a PostgreSQL custom-format dump. Use the pg_restore command-line client to restore this dump to a database.

Occurs when you’ve tried to dump your DB in a non plain text format. I.e when the command lacks the -Fp or —format=plain parameter. However, if you add it to your command, you may then encounter the following error :

2- SET SET SET SET SET SET CREATE EXTENSION ERROR: must be owner of extension plpgsql

This is a permission issue I have been unable to fix using the command provided in the GCP docs, the tips from this current thread, or following advice from Google Postgres team here. Which recommended to issue the following command :

pg_dump -Fp --no-acl --no-owner -U myusername myDBName > mydump.sql

The only thing that did the trick in my case was manually editing the dump file and commenting out all commands relating to plpgsql.

I hope this helps GCP-reliant souls.

Update :

It’s easier to dump the file commenting out extensions, especially since some dumps can be huge :
pg_dump ... | grep -v -E '(CREATE EXTENSION|COMMENT ON)' > mydump.sql

Which can be narrowed down to plpgsql :
pg_dump ... | grep -v -E '(CREATE EXTENSION IF NOT EXISTS plpgsql|COMMENT ON EXTENSION plpgsql)' > mydump.sql

Я использую PostgreSQL v9.0.1 с Rails (и он deps) @v2.3.8, благодаря использованию полнотекстовой возможности postgres, у меня есть таблица, которая определяется как:

CREATE TABLE affiliate_products (
    id integer NOT NULL,
    name character varying(255),
    model character varying(255),
    description text,
    price numeric(9,2),
    created_at timestamp without time zone,
    updated_at timestamp without time zone,
    textsearch_vector tsvector,
);

Обратите внимание на последнюю строку, это гарантирует, что активная запись не сможет обработать ее со стандартным самозагрузчиком схемы, поэтому мне нужно установить config.active_record.schema_format = :sql в ./config/environment.rb; и используйте rake db:test:clone_structure вместо rake db:test:clone.

Ничего из этого не слишком примечательно, только неудобно — однако rake db:test:clone_structure не работает с ошибкой:

ERROR: must be owner of language plpgsql

Из-за строки #16 в моем результате ./db/development_schema.sql:

CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql;

В PostgreSQL v9.0+ язык plpsql устанавливается суперпользователем в исходный шаблон, который затем доступен для вновь созданной схемы.

Я не могу запускать тесты в этом проекте, не решая этого, и даже редактирование ./db/development_schema.sql вручную бесполезно, поскольку оно регенерируется каждый раз, когда я запускаю rake db:test:clone_structure (и игнорируется rake db:test:clone).

Надеюсь, кто-то может пролить свет на это?

Примечание. Я использовал как жемчуг pg 0.9.0, так и драгоценный камень postgres в версии 0.7.9.2008.01.28 — оба отображают идентичное поведение.

Мои товарищи по команде запускают PostgreSQL v8.4, где языковая установка — это ручной шаг.

Ответ 1

Решение было следующим:

В моей установке есть стандартные шаблоны template0 и template1 — по крайней мере, поскольку я понимаю, что postgres будет искать наивысший номер templateN при создании новой базы данных, если только не указан шаблон.

В этом случае в качестве template0 включен plpgsql, так же как и template1… идея заключается в том, что вы настроите template1 для набора ваших потребностей по умолчанию для вашего сайта, а в случае, если вы все взорвите, вы должны восстановить template1 из template0.

Поскольку мое специфическое требование для сайта заключалось в установке plpgsql как части автоматической сборки моего веб-приложения (шаг, который мы должны были поддерживать, чтобы поддерживать совместимость с 8.4) — решение было простым: удалите plpgsql из template1 и предупреждение/ошибка исчезла.

В случае изменения значений по умолчанию для сайта, и нам нужно будет вернуться к поведению по умолчанию, мы просто удалим template1 и заново создадим его (что будет использовать template0)

Ответ 2

У меня была та же проблема. Я исправил свой шаблон с помощью команд ниже

psql template1
template1=# alter role my_user_name with superuser;

читайте больше на http://gilesbowkett.blogspot.com/2011/07/error-must-be-owner-of-language-plpgsql.html

Ответ 3

Для новых читателей я прочитал это более старое сообщение после того, как столкнулся с этой ошибкой в ​​одном из моих собственных проектов. Я сильно чувствую, что предоставление PostgreSQL роли суперпользователя — ужасная идея, и изменение шаблона также не является идеальным. Поскольку ссылки на команды PSQL, которые добавлены db:structure:dump, не нужны в базе данных приложений Rails, я написал специальную задачу rake, которая учитывает проблемные строки в struct.sql. Я публиковал этот код в Github как Gist на https://gist.github.com/rietta/7898366.

Ответ 4

Я столкнулся с этой ошибкой при попытке сделать RAILS_ENV=development bundle exec rake db:reset. Я смог выполнить то же самое (для моих целей), сделав вместо этого RAILS_ENV=development bundle exec rake db:drop db:create db:migrate.

Ответ 5

Я просто фильтрую выражения расширения plpgsql из файла struct.sql post-dump:

# lib/tasks/db.rake

namespace :db do
  desc "Fix 'ERROR:  must be owner of extension plpgsql' complaints from Postgresql"
  task :fix_psql_dump do |task|
    filename = ENV['DB_STRUCTURE'] || File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, "structure.sql")
    sql = File.read(filename)
    sql.sub!(/(CREATE EXTENSION IF NOT EXISTS plpgsql)/, '-- 1')
    sql.sub!(/(COMMENT ON EXTENSION plpgsql)/, '-- 1')
    File.open(filename, 'w') do |f|
      f.write(sql)
    end
    task.reenable
  end
end

Rake::Task["db:structure:dump"].enhance do
  Rake::Task["db:fix_psql_dump"].invoke
end

Инструкция по созданию патчей (оперативных исправлений ошибок)

1. Патчи следует выпускать для оперативного исправления критичных ошибок в прикладных решениях и библиотеках, не дожидаясь выпуска очередного исправительного релиза («минуя» длительную процедуру выпуска и встраивания библиотек – в случае ошибок в библиотеках).

Критичность определяется ответственным за прикладное решение (библиотеку).

2. Технически патч – это расширение конфигурации, которое имеет небольшой размер (по сравнению с файлом поставки или обновления конфигурации), и установка которого не требует длительного обновления и блокировки работы пользователей. Для применения патча достаточно перезапустить сеанс.

Установка и удаление патчей реализована в 1С:Библиотека стандартных подсистем, а в 1С:Библиотека интернет-поддержки предусмотрена автоматическая загрузка патчей с портала 1C:Обновление программ. Вариант установки патчей (ручной или автоматический) в «коробках» контролирует администратор, а в модели сервиса – администратор сервиса (требуется подключение экземпляра облачного решения 1C:Fresh к порталу 1С:ИТС). Для «коробок» и облачных решений без подключения к интернету также возможно загружать интересующие патчи с портала 1C:Обновление программ на флешку и устанавливать с нее.

3. Создавать патчи можно с помощью конфигуратора или автоматически по исправленным в хранилище ошибкам с помощью 1С:Система проектирования прикладных решений (СППР). С помощью СППР патчи формируются автоматически по закладкам в репозитории git, рассчитывается применимость патча к версиям конфигурации (а для библиотек – к версиям всех прикладных решений, в которые она встроена); автоматизирована публикация и отзыв патчей, есть подписание патчей для базовых версий, а также целый ряд других полезных сервисов.

Создание патчей с помощью конфигуратора

Сначала исходную ошибку, которую требуется закрыть патчем, необходимо исправить и протестировать штатным образом. Изменения по исправлению ошибки поместить в рабочее хранилище проекта.

Затем открыть конфигуратором информационную базу одной из прошлых версий, в которой имеется исправляемая ошибка, и перенести изменения по ошибке в расширение конфигурации.

Для этого создать новое расширение конфигурации (если изменять ранее созданное расширение для другой ошибки, то это приведет к исключению при одновременном подключении этих расширений) и выполнить действия:

  1. Указать свойства расширения:
    • Имя – «EF_<произвольный_номер_ошибки>». Например, EF_00_00268773.
    • Префикс имен – берется из свойства имя.
    • Основные роли – снять флаг.
    • Основной язык – снять флаг.
    • В группе Совместимость – снять флаги у всех свойств.
    • Режим совместимости — указывать равный или ниже тому, что у конфигурации, для которого оно создается.
  2. Не удалять объект метаданных Язык – Русский.
  3. Перенести изменения в расширение-патч.
    • Для процедур и функций – встать на любой строчке и нажать ALF+SHIFT+F2, в диалоговом окне «Тип выбора» указать «Вызывать вместо».
    • В метод патча перенести текущую реализацию со всеми необходимыми изменениями.
  4. Создать и заполнить макет, который описывает содержимое патча и информацию о нем:
    • Добавить общий макет, имя которого совпадает с именем расширения. Например, EF_00_00268773.
    • Заполнить содержимое макета по примеру:

    Копировать в буфер обмена

<Patch xmlns=»http://www.v8.1c.ru/ssl/patch» xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»>
<Name>EF_00_00268773</Name>
<Description>В веб-клиенте при сохранении некоторых печатных форм может быть недоступен выбор папки сохранения.</Description>
<UUID>abfde8f7-7ac4-43a9-9521-d291d0d0d6c3</UUID>
<ModifiedMetadata>ОбщаяФорма.СохранениеПечатнойФормы.ПриСозданииНаСервере</ModifiedMetadata>
<AppliedFor>
<ConfigurationName>СтандартныеПодсистемы</ConfigurationName>
<Versions>3.1.2.229,3.1.2.245</Versions>
</AppliedFor>
</Patch>

  • Name – должно совпадать с именем патча из расширения
  • Description – описание для пользователя, будет отображаться в списке установленных патчей.
  • UUID – уникальный идентификатор патча. Требуется создать новый, получив методом платформы Новый УникальныйИдентификатор.
  • ModifiedMetadata – изменяемые объекты метаданных.
  • AppliedFor – блок, в котором описывается к каким конфигурациям подходит данный патч.
  • ConfigurationName – имя конфигурации, берется из описания подсистемы в модуле ОбновлениеИнформационнойБазы<Сокращение>.
  • Versions – список версий конфигурации через запятую, для которой применим патч.
  • Рекомендуется при проверке патча проверять, что данный макет корректно читается и в нем нет ошибок – для этого нужно перейти к списку установленных исправлений (Администрирование – Обслуживание – Установленные исправления).

При переносе исправления ошибки в расширение следует учитывать следующее. Новые процедуры и функции следует добавлять в расширение с префиксом патча, например, вместо

«ИмяМоейПроцедуры» следует указывать

«EF_<произвольный_номер_ошибки>_ИмяМоейПроцедуры».

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

Создание патчей с помощью Системы проектирования прикладных решений (СППР)

Первичная настройка

  1. Развернуть сервер репозиториев git (например, GitLab) и указать его адрес в карточке проекта в СППР.
  2. Переключиться на закладку Общая информация проекта и заполнить поля Имя конфигурации – то, что указано в модуле ОбновлениеИнформационнойБазы<Сокращение> и Идентификатор программы – идентификатор в сервисах Интернет-поддержки пользователей. Если СППР будет использоваться только для создания патчей, без их публикации, то идентификатор программы заполнять не обязательно.
  3. В карточке версии:
    • на закладке Наследование ошибок и патчи включить флажок «Автоматически создавать патчи по публикуемым ошибкам»;
    • заполнить поле Версия платформы. Значение должно совпадать с режимом совместимости платформы для данной версии конфигурации.

Создание патчей для ошибок

  1. Исправить ошибку в хранилище проекта.
  2. В карточке ошибки в СППР внизу на закладке Исправление включить флажок Создать патч по исправлению ошибки .
  3. Описание патча автоматически заполнится из публикуемого описания ошибки.
  4. Дождаться готовности патча, проверить его на версии, в которой ошибка была привнесена, и нажать Проверен в карточке патча (для каждой версии, если патч создается сразу для нескольких версий проекта).
  5. Сформированный патч сохранить по кнопке Сохранить патч… и передать пользователям.
  6. Если СППР подключен к базе публикации, то нажать Опубликовать . После чего патч будет отправлен в базу публикации и вскоре окажется доступен для автоматической загрузки с портала 1C:Обновление программ.

Отзыв патчей с портала 1C:Обновление программ

В случае если ошибка исправлена неверно, требуется отозвать патч и выпустить новый. Но не следует перевыпускать патч или выпускать патч на патч.
При публикации патча из СППР необходимо:

  1. Открыть карточку интересующего патча.
  2. В меню Еще списка версий патча нажать Отозвать. После чего информация об отзыве патча будет отправлена на портал 1C:Обновление программ.

Если патч публиковался вручную на портале 1C:Обновление программ, то отзыв так же выполняется вручную.

После доисправления ошибки появится возможность вновь опубликовать патч для нее.

Если патч не удалось создавать автоматически

Не во всех случаях возможно создать патч автоматически, например:

  • изменения по ошибке пересекаются с другим исправлением и патч нельзя применить ни к одной из опубликованных сборок конфигурации;
  • содержит изменения, которые не касаются кода и на данный момент не поддерживаются автогенератором патчей в СППР;
  • особенности или ограничения автогенератора патчей.

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

Рекомендации и ограничения технологии патчей

Патчи подходят для исправления ошибок:

  • в программных модулях (общих модулях, модулях форм, модулей менеджеров, объектов, наборов записей и пр.)
  • в «коробочных» версиях, в модели сервиса и в базовых версиях;
  • в типовых (на полной поддержке), доработанных типовых и нетиповых конфигурациях (которые включают публикуемые библиотеки).

Патчи не подходят:

  • для исправления обработчиков обновления, которые портят данные;
  • для изменения пользовательских данных;
  • для добавления реквизитов, справочников, перечислений и других объектов метаданных, хранящих данные.

Один патч должен «точечно» исправлять только одну ошибку

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

Патчи не должны создаваться «внахлест»

Если для исправления двух разных ошибок требуется исправить одну и ту же процедуру (функцию), то следует создать два патча и ограничить их область применимости (по версиям).

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

Тщательно проверять патчи

Поскольку патч публикуется максимально оперативно, то рекомендуется дополнительно проверять патч отдельно от проверки исправления ошибки:

  • в опубликованной версии конфигурации (библиотеки) – сначала убедиться, что ошибка воспроизводится;
  • затем установить патч и убедиться, что ошибка исправлена.

Не следует полагаться только на успешное подключение патча к конфигурации, или что патч успешно собран автоматически (есть также ограничения технологии патчей и платформы).

Проверка патча важна в полном объеме, во всех ветках, для которых он будет публиковаться.

Кроме того, для проверки патчей настоятельно рекомендуется:

  • аудит исправления ошибки другим разработчиком;
  • перекрестная проверка исправления тестировщиком или другим разработчиком.

Если проверка исправления ошибки требует регламентного тестирования (например, обязательно подтверждение исправления регрессионными тестами и т.п.), то патч также не следует публиковать до того, как исправление ошибки пройдет все предусмотренные этапы проверки.

Патч рекомендуется публиковать только после выполнения перечисленных этапов проверки.

Подпись патчей для базовых версий конфигураций

<путь к платформе> DESIGNER /IBConnectionString <строка подключения> /SignCfg <путь к подписанному патчу> -Type File -digisign <путь к закрытому ключу (*.pem)> -File <путь к исходному патчу>

УНФ базовая и расширения

Подскажите, разрешено ли подключать к базовой УНФ расширения (допустим через «все функции»)? Не нарушу ли я лицензию 1С? А то конфигуратором лазить нельзя, а расширения к нему приравниваются?

В базовых версиях прикладных решений работа с расширениями не поддерживается. (с) https://its.1c.ru/db/v8311doc#bookmark:dev:TI000001923

Если у тебя расширение доступно — значит у тебя лицензия на платформу не базовая, а ПРОФ.

(11) всё-таки _расширения_ работают на платформе _проф_
И им в этом случае как бы и все равно, а в какой же базе работает это расширение. Базовая база? Ну и 1С предоставляет свою поддержку для базовой версии.

Можно предположить, что со временем эту фичу уберут, когда базовая база способна работать на платформе с проф лицензией, что значительно расширяет ее возможности.

И это не единственная такая прикольная фича у платформы 1С. Можно и возможности серверного режима получать абсолютно ничего не взламывая, просто использовать и все штатными средствами.
Причем, теперь уже два варианта для получения режима сервера доступны, а раньше был только один. Причем, прямо «из коробки»

Ошибка применения расширения конфигурации

Не получается адаптация конфигурации «1С:Розница 2.2» Вот с этого сайта http://online-modul.ru/kkt_server.html#driver .
Пытаюсь подключить две розници с разными базами к одному ККМ атол 30ф. На рознице 2.3 которая не подключена к ккм. адаптация проходит хорошо, а на рознице 2.2 к которой ккм подключен физически выдает эти ошибки

(Критичная) : Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

: Ошибка при вызове метода контекста (Записать): Ошибка применения расширения конфигурации: Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

В чем может быть проблема?

  • Скопировать ссылку
  • Перейти

  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти

Не получается адаптация конфигурации «1С:Розница 2.2» Вот с этого сайта http://online-modul.ru/kkt_server.html#driver .
Пытаюсь подключить две розници с разными базами к одному ККМ атол 30ф. На рознице 2.3 которая не подключена к ккм. адаптация проходит хорошо, а на рознице 2.2 к которой ккм подключен физически выдает эти ошибки

(Критичная) : Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

: Ошибка при вызове метода контекста (Записать): Ошибка применения расширения конфигурации: Для работы с базовой версией расширение должно быть подписано тем же ключом, что и конфигурация.

В чем может быть проблема?
(2)Там есть файл для 2.2 и 2.3. только 2.2 почему то ругается

I have been trying to import a postgres dump (with psql dbname < dump.sql and its variants, specifying hostname and username and so on), but I have been unsuccessful with it so far.

I am new to Postgres, so I may have been missing the obvious here. Based on the output of importing commands, the extension plpgsql probably doesn’t exist. Am I expected to set up the plpgsql extension before I import?

Here are the first few lines of the output:

SET
ERROR:  unrecognized configuration parameter "lock_timeout"
SET
SET
SET
SET
CREATE EXTENSION
ERROR:  must be owner of extension plpgsql
ERROR:  could not open extension control file "/usr/share/postgresql/9.1/extension/hstore.control": No such file or directory
ERROR:  extension "hstore" does not exist
SET
SET
SET
ERROR:  relation "active_admin_comments" already exists
ERROR:  role "finalstep" does not exist
ERROR:  relation "active_admin_comments_id_seq" already exists
ERROR:  role "finalstep" does not exist
ALTER SEQUENCE
ERROR:  relation "admin_users" already exists
ERROR:  role "finalstep" does not exist

Later down the road, it looks like it’s trying to execute some of the content as sql queries (the content contains mathml tags):

ERROR:  syntax error at or near "</"
LINE 1: </mo> <msqrt>
        ^
ERROR:  syntax error at or near "&"
LINE 1: &nbsp;
        ^
ERROR:  syntax error at or near "</"
LINE 1: </mi> <mi>&alpha;

Any pointers? My Postgres version is 9.1 (it was 9.3 initially, but I downgraded it to 9.1 after seeing the error messages).

Когда я создаю базу данных на Ruby, основываясь на инструкции Heroku, я должен выполнить следующую команду:

героку запустить грабли db:мигрировать

Поэтому, когда я это сделал, мои записи, хранящиеся на моем локальном компьютере, не были перенесены в Heroku. Итак, после поиска способа, как я могу это сделать, я увидел этот метод.

  1. Сброс файла базы данных.
  2. Настройка героку
  3. heroku pg:push mylocaldb HEROKU_POSTGRESQL_MAGENTA —app sushi sushi = имя моего приложения в Heroku.

Когда я попытался это сделать, произошла следующая ошибка: ошибка ввода TOC, ошибка владельца расширения plpqsql.

...
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2257; 0 0 COMMENT EXTENSION plpgsql 
pg_restore: [archiver (db)] could not execute query: ERROR:  must be owner of extension plpgsql
    Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';

..
WARNING: errors ignored on restore: 1

Я делаю файл базы данных

pg_dump databasenamehere > databasedumpfile

И я нашел «databasenamehere» в /config/database.yml,,, имя разработки.

Это постоянно происходит, и я не знаю, что делать.. :(

Как я могу решить эту проблему?

Есть ли хороший способ поместить записи в HEROKU?

Кроме того, почему rake:db:migrate не переместил записи в героку? (думая, что это вопрос новичка)

Я пытаюсь восстановить дамп данных postgres для моего приложения Django. Дамп данных был извлечен из Heroku, а pg_restore latest.dump -d mydb -U postgres был запущен на Azure VM с Linux на нем.

Пользователь на Heroku называется uauv8b9v4. На Azure нет подобного пользователя. Поэтому, когда я запускал pg_restore на Azure, у меня в тонне role does not exist ошибок. Например:

pg_restore: [archiver (db)] Error from TOC entry 241; 1259 44416 TABLE links_grouptraffic uauv8b9v4
pg_restore: [archiver (db)] could not execute query: ERROR:  role "uauv8b9v4" does not exist
    Command was: ALTER TABLE public.links_grouptraffic OWNER TO uauv8b9v4;

Теперь доступ к моему приложению Django на example.cloudapp.net просто показывает следующую ошибку:

Exception Type: DatabaseError Exception Value:

permission denied for relation links_link

Exception Location: /home/myuser/.virtualenvs/myenv/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py in execute, line 54

Обратите внимание, что я получил точно такое же разрешение, которое было отклонено, если я запустил pg_restore с -Ox; это не помогает.

Затем я сбросил базу данных и запустил CREATE USER uauv8b9v4 with password 'password'; , CREATE DATABASE mydb; и GRANT ALL PRIVILEGES ON DATABASE mydb to uauv8b9v4; , Я подумал, что если я запустил pg_restore latest.dump -d MYDB -U uauv8b9v4, моя проблема будет решена.

Вместо этого я получил 3 ошибки:

1) Должен быть владельцем расширения plpgsql:

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2584; 0 0 COMMENT EXTENSION plpgsql 
pg_restore: [archiver (db)] could not execute query: ERROR:  must be owner of extension plpgsql
    Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';

2) Разрешение отклонено для создания расширения «pg_stat_statements»:

pg_restore: [archiver (db)] Error from TOC entry 249; 3079 16622 EXTENSION pg_stat_statements 
pg_restore: [archiver (db)] could not execute query: ERROR:  permission denied to create extension "pg_stat_statements"
HINT:  Must be superuser to create this extension.
    Command was: CREATE EXTENSION IF NOT EXISTS pg_stat_statements WITH SCHEMA public;

3) Расширение «pg_stat_statements» не существует:

pg_restore: [archiver (db)] Error from TOC entry 2585; 0 0 COMMENT EXTENSION pg_stat_statements 
pg_restore: [archiver (db)] could not execute query: ERROR:  extension "pg_stat_statements" does not exist
    Command was: COMMENT ON EXTENSION pg_stat_statements IS 'track execution statistics of all SQL statements executed';

Попытка доступа к моему веб-сайту по-прежнему дает мне первоначальное permission denied ошибке.

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

Проблема уже решена здесь и здесь, но без какого-либо результата для меня, чтобы работать с.

Я выполняю резервное копирование с использованием, как требуется в документации Heroku.

pg_dump -Fc --no-acl --no-owner --no-privileges  -h [HOST] -U [DB_USER] [DB_NAME] > backup.dump

Когда я восстанавливаю вот так (размер файла ~100МБ):

heroku pg:backups --app [APP_NAME] restore 'https://[DUMP_URL]' [HEROKU_DATABASE_URL]

Я получаю сообщение об ошибке после того, как процесс загрузки останавливается на 19,4 МБ и состояние логов:

$ heroku pg:backups --app [APP_NAME] info r081
=== Backup info: r081
Database:    BACKUP
Started:     2016-04-29 10:10:37 +0000
Finished:    2016-04-29 10:11:31 +0000
Status:      Failed
Type:        Manual
Backup Size: 19.4MB
=== Backup Logs
2016-04-29 10:10:39 +0000: pg_restore: connecting to database for restore
2016-04-29 10:10:41 +0000: pg_restore: creating SCHEMA public
2016-04-29 10:10:41 +0000: pg_restore: creating EXTENSION plpgsql
2016-04-29 10:10:41 +0000: pg_restore: creating COMMENT EXTENSION plpgsql
2016-04-29 10:10:41 +0000: pg_restore: [archiver (db)] Error while PROCESSING TOC:
2016-04-29 10:10:41 +0000: pg_restore: [archiver (db)] Error from TOC entry 2474; 0 0 COMMENT EXTENSION plpgsql
2016-04-29 10:10:41 +0000: pg_restore: [archiver (db)] could not execute query: ERROR:  must be owner of extension plpgsql
2016-04-29 10:10:41 +0000: Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
2016-04-29 10:10:41 +0000: 
2016-04-29 10:10:41 +0000: 
2016-04-29 10:10:41 +0000: 
2016-04-29 10:10:41 +0000: pg_restore: creating SEQUENCE answer_seq
[...]
2016-04-29 10:10:48 +0000: pg_restore: executing SEQUENCE SET category_seq
2016-04-29 10:10:49 +0000: pg_restore: processing data for table "file"
2016-04-29 10:11:31 +0000: out of memory
2016-04-29 10:11:31 +0000: waiting for restore to complete
2016-04-29 10:11:31 +0000: restore done
2016-04-29 10:11:31 +0000: waiting for download to complete
2016-04-29 10:11:31 +0000: download done

Сначала я подумал, что это может быть связано с файлом таблицы, который содержит BLOBS. Но я не могу понять, почему это должно быть проблемой. Самый большой файл — 4 МБ. В журналах также указывается, что только 19,4 из 100 МБ были импортированы.

Я использую следующую версию toolkelt heroku:

heroku-toolbelt/3.43.0 (x86_64-linux-gnu) ruby/2.1.5
heroku-cli/4.30.0-2dfc0f4 (amd64-linux) go1.6.2
=== Installed Plugins
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
heroku-pg-extras
heroku-pipelines@1.1.5
[email protected]
[email protected]
[email protected]

  • Ошибка нттр при обращении к серверу что делать
  • Ошибка нттр при обращении к серверу 1с как устранить ошибку
  • Ошибка нттр 503 что значит
  • Ошибка нттр 500 что делать
  • Ошибка нттр 403 что это