Coder Social home page Coder Social logo

1c-company / ssl-support Goto Github PK

View Code? Open in Web Editor NEW
94.0 94.0 15.0 6.64 MB

Расширение для 1C:EDT позволяющее разрабатывать конфигурации на основе библиотеки 1С:БСП (Библиотека Стандартных Подсистем, Standard Subsystems Library) с бОльшим комфортом.

License: Eclipse Public License 2.0

Shell 0.56% Java 74.11% 1C Enterprise 25.33%
1c-edt 1c-enterprise eclipse-plugin edt edt-plugin java

ssl-support's People

Contributors

almaznasibullin avatar artbear avatar dmitrybelov-e1c avatar doublesunrus avatar dzym avatar iartemv avatar maksimdzyuba avatar marmyshev avatar popoffvg avatar tretyakevich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ssl-support's Issues

ОбщегоНазначения.СкопироватьРекурсивно не учитывается второй параметр при вычислении типа

При вычислении типа возвращаемого значения для функции ОбщегоНазначения.СкопироватьРекурсивно не учитывается значение второго параметра.

При значении второго параметра Ложь тип возвращаемого значения должен быть иммутабельным (ФиксированнаяСтруктура, ФиксированныйМассив, ФиксированноеСоответствие)

01
02

Стандарт 669: Создание объекта типа "ОписаниеЗащитыОтОпасныхДействий".

Название проверки

Создание объекта типа "ОписаниеЗащитыОтОпасныхДействий".

Английское название проверки
??

Правило анализа кода/метаданных

При наличии подсистемы БСП создавать и использовать платформенный объект
ОписаниеЗащитыОтОпасныхДействий разрешено только в
функции ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений.

Создание объекта в других местах запрещено.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 669
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 555

Параметры проверки

  • NA

Текст ошибки

Создание объекта типа "ОписаниеЗащитыОтОпасныхДействий".

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт acc_77: Использование монопольного или оперативного обработчика обновления.

Название проверки

Использование монопольного или оперативного обработчика обновления.

Английское название проверки
??

Правило анализа кода/метаданных

Ограничения на использование монопольного и оперативного режимов обработчиков обновления

Область применения: управляемое приложение.

Действует для «корпоративных» конфигураций (например, 1С:ERP), и всех
входящих в них библиотек.

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

Вместо этого, большие объемы данных следует обновлять отложенно – см.
Параллельный режим отложенного обновления
(БСП)
. Исключением являются
случаи, описанные ниже.

2.1. Допустимо делать оперативную или монопольную обработку данных
только при соблюдении всех, перечисленных ниже условий:

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

2.2. Оперативный обработчик следует делать, если обновляемый объект
метаданных не будет реструктуризироваться в процессе применения
изменений конфигурации к информационной базе. В противном случае с точки
зрения пользователей нет разницы в работе оперативных и монопольных
обработчиков.

2.3. Допустимо делать оперативную обработку данных:

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

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

Приложение: список исключений

1. Библиотека стандартных подсистем

1.1. Выполняются оперативно, т.к. объем обрабатываемых данных небольшой
(обновление настроек программы):

· ВариантыОтчетов.ОперативноеОбновлениеРазделенныхДанныхКонфигурации
(*, Условно подключаемый в модели сервиса);

·
РаботаСФайламиСлужебный.ОбновитьСписокЗапрещенныхРасширенийВОбластиДанных
(2.3.2.70, Начальное заполнение);

· УдалениеПомеченныхОбъектовСлужебный.ВключитьУдалениеПомеченныхОбъектов
(2.3.5.52, Начальное заполнение);

· УправлениеСвойствами.ОбновитьНаименованияНаборовИСвойств (*, Условно
подключаемый).

1.2. Выполняются оперативно, т.к. обновляются неразделенные данные:

· ВариантыОтчетов.ОперативноеОбновлениеОбщихДанныхКонфигурации (*);

· ВариантыОтчетов.ОтложенноеОбновлениеОбщихДанныхКонфигурацииПолное (*,
только в модели сервиса, в «коробке» - отложенно);

· ДатыЗапретаИзмененияСлужебный.ОбновитьРазделыДатЗапретаИзменения (*);

·
ДатыЗапретаИзмененияСлужебный.ОчиститьПредопределенныеЭлементыРазделовДатЗапрета
(2.3.5.9);

· КалендарныеГрафики.ОбновитьДанныеПроизводственныхКалендарей (2.3.5.28,
Начальное заполнение);

· ПодключаемыеКоманды.ОперативноеОбновлениеОбщихДанныхКонфигурации (*);

·
ПользователиСлужебный.ДобавитьАдминистраторамПравоОткрытияВнешнихОтчетовИОбработок
(2.3.5.14);

· РаботаСФайламиСлужебный.ОбновитьСписокЗапрещенныхРасширений (2.3.4.5,
Начальное заполнение);

· РаботаСФайламиСлужебный.ОбновитьПутьТомаLinux (2.3.5.48).

1.3. Выполняются оперативно для удаления устаревших отложенных
обработчиков обновления (до начала отложенного обновления):

· ВариантыОтчетов.УдалитьУстаревшиеОбработчики (2.3.5.19);

1.4. Выполняются оперативно для планирования обновления областей данных
в модели сервиса (в коробке не выполняются):

· ОбменДаннымиВМоделиСервиса.ЗаполнитьОбработчикиРазделенныхДанных (*,
Управление обработчиками);

· УправлениеДоступомСлужебный.ЗаполнитьОбработчикиРазделенныхДанных (*,
Управление обработчиками);

· УправлениеСвойствамиСлужебный.ЗаполнитьОбработчикиРазделенныхДанных
(*, Управление обработчиками).

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

·
Обработки.ЗагрузкаКлассификатораБанков.УстановитьРасписаниеРегламентногоЗадания
(2.3.5.51, Начальное заполнение);

· Обработки.ЗагрузкаКурсовВалют.УстановитьРасписаниеРегламентногоЗадания
(2.3.5.51, Начальное заполнение);

· УдалениеПомеченныхОбъектовСлужебный.ВключитьУдалениеПомеченныхОбъектов
(2.3.5.52, Начальное заполнение);

·
УправлениеДоступомСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации
(*, Условно подключаемый);

·
УправлениеДоступомСлужебный.ОбновитьДанныеПрофиляОткрытиеВнешнихОтчетовИОбработок
(2.3.5.33);

·
УправлениеИтогамиИАгрегатамиСлужебный.ОбновитьИспользованиеРегламентныхЗаданий
(2.3.3.70, Начальное заполнение);

·
УправлениеПечатью.ДобавитьРольРедактированиеПечатныхФормВПрофилиСБазовымиПравами
(2.3.5.3).

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

  • в РИБ выполняется загрузка предопределенных элементов и
    идентификаторов объектов метаданных из главного узла
    (ОбменДаннымиСервер.ЗагрузитьПриоритетныеДанныеВПодчиненныйУзелРИБ)
  • Справочник.ИдентификаторыОбъектовМетаданных
  • РегистрСведений.ПараметрыРаботыПрограммы
  • РегистрСведений.ПраваРолей
  • РегистрСведений.ЗависимостиПравДоступа

1.7. Заполняются оперативно, чтобы не откладывать до входа пользователя
в сеанс:

  • Справочник.ИдентификаторыОбъектовРасширений
  • РегистрСведений.ИдентификаторыОбъектовВерсийРасширений
  • РегистрСведений.ПараметрыРаботыВерсийРасширений
  • Справочник.ПредопределенныеВариантыОтчетовРасширений
  • РегистрСведений.ПредопределенныеВариантыОтчетовВерсийРасширений

1.8.
СтандартныеПодсистемыСервер.УстановитьКонстантуНеИспользоватьРазделениеПоОбластямДанных
условно-монопольный: выполняется в монопольном режиме только если у
неразделенных констант

· ИспользоватьРазделениеПоОбластямДанных;

· НеИспользоватьРазделениеПоОбластямДанных;

· ЭтоАвтономноеРабочееМесто

установлены несинхронные значения.
Их значения влияют на те механизмы конфигурации, которые по-разному
работают в этих режимах.

1.9. ОбменДаннымиСервер.ВыполнитьОбновлениеПравилДляОбменаДанными:
выполняется оперативно при каждом обновлении при условии использования
синхронизации данных. Объем обрабатываемых данных не большой:
выполняется обновление кеша правил конвертации и правил регистрации.
Перенос выполнения данного обработчика на более поздний момент может
привести к негативным последствиям, связанным с применением неактуальных
(предназначенных для предыдущей версии) алгоритмов регистрации данных в
случае изменения или добавления данных:

· при выполнении других обработчиков обновления;

· при работе пользователей в программе.

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

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

1.11 ДатыЗапретаИзмененияСлужебный.ЗаменитьРазделыДатЗапретаНаНовые
(2.3.5.10) выполняется монопольно, так как до выполнения новые
пользователи могут получить доступ к закрытым периодам, а после
выполнения старые пользователи могут получить доступ к закрытым
периодам.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: acc_77
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 467

Параметры проверки

  • NA

Текст ошибки

Использование монопольного или оперативного обработчика обновления.

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт 540: Не заполнен параметр "РегламентноеЗадание" при вызове процедуры "ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();".

Название проверки

Не заполнен параметр "РегламентноеЗадание" при вызове процедуры "ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();".

Английское название проверки
??

Правило анализа кода/метаданных

6. Если регламентное задание попадает под требования, описанные в
пунктах 3.1, 4.2, 5 и используется подсистема «Регламентные задания»
БСП, то вначале процедур обработчиков таких заданий необходимо помещать
вызов:

ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.<ИмяЗадания>);

Первый параметр при этом заполнять обязательно.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 540
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 496

Параметры проверки

  • NA

Текст ошибки

Не заполнен параметр "РегламентноеЗадание" при вызове процедуры "ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();".

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Квази-интерфейсы для проверки правильности внедрения

Многие механизмы БСП требуют наличие методов в модулях форм и объектов с определенными вызовами и сигнатурами.
Есть идея, как это можно было бы универсально проверять без необходимости под каждый механизм делать свою проверку.
Речь идет о том, что нужно придумать некое описание, которое было бы похоже на то, что в java называется interface.
Описание состояло бы из двух частей.
Первая часть описывает, каким образом определить что объект использует механизм.
Вторая часть собственно будет содержать описание метода и тип формы, в которой этот метод должен быть.
Помимо этого в описании нужно будет указывать версию БСП, с которой этот интерфейс действует. Это позволит отслеживать изменения в интерфейсе автоматически и предлагать исправления для перехода с предыдущих версий.

Стандарт 771: Планом обмена поддерживается версия формата обмена EnterpriseData, не входящая в состав конфигурации.

Название проверки

Планом обмена поддерживается версия формата обмена EnterpriseData, не входящая в состав конфигурации.

Английское название проверки
??

Правило анализа кода/метаданных

Интеграция прикладных решений через формат EnterpriseData

Область применения: управляемое приложение.

1. Переходы с конфигурации на конфигурацию следует разрабатывать на
основе правил конвертации (ПК). Обмены между конфигурациями,
использующими Библиотеку стандартных подсистем (БСП), следует делать
на основе формата EnterpriseData, разрабатывать новые обмены на
основе ПК запрещается.

2. Актуальные версии EnterpriseData содержатся в последней
опубликованной версии конфигурации БСП в виде объектов метаданных
Пакет XDTO, именуемых следующим образом:
EnterpriseData_{X|XX}_{Y|YY}_{Z|ZZ}, где X, Y - это Major версия,
Z - это Minor версия.

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

Например, версии 1.0, 1.1 EnterpriseData были сняты с поддержки,
т.к. интервала 1.2-1.4 версий формата достаточно для обмена между
версиями прикладных решений из достаточно широкого диапазона.

3. При разработке новых версий прикладных решений нужно стремиться к
тому, чтобы в обменах данными поддерживались все актуальные версии
EnterpriseData. Это требование обеспечивает возможность асинхронного
выпуска новых версий прикладных решений для разработчиков, а также
возможность асинхронного перехода на них для пользователей. Исключение
составляет случай, описанный в пункте 4.

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

Пример:
При выпуске конфигурации, в которую встроена версия 2.4.1 БСП,
необходимо поддержать версии 1.2, 1.3 и 1.4 формата EnterpriseData.

4. Версия формата EnterpriseData не должна поддерживаться в обмене
данными, если она не соответствует требованиям к функциональности этого
обмена.

Пример:
Для интеграции двух конфигураций необходим обмен документами «Чек ККМ».
Поддержка передачи этих данных есть только в версии 1.4 формата,
следовательно поддерживаемые в этом обмене версии формата должны быть не
младше 1.4.

[TABLE]

См. также

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 771
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 518

Параметры проверки

  • NA

Текст ошибки

Планом обмена поддерживается версия формата обмена EnterpriseData, не входящая в состав конфигурации.

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт acc_67: Отложенный обработчик обновления в последовательном режиме для объекта одной подсистемы обрабатывает данные другой подсистемы.

Название проверки

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

Английское название проверки
??

Правило анализа кода/метаданных

Правило проверки регистрирует ошибки для отложенных обработчиков
обновления в последовательном режиме по следующим пунктам:

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

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

Например, если ранее в конфигурации были предусмотрены обработчики
обновления справочника Контрагенты для версий 1.5 и 2.0, то при
разработке версии 2.5 в новый обработчик обновления этого справочника
следует также поместить логику двух предыдущих, а их удалить. Тем самым,
для пользователей значительно ускорится переход через несколько версий
(с 1.0 на 2.5).

Для этого в логику запроса, отбирающего данные, подлежащие обработке,
следует включить все три условия по ИЛИ, а в алгоритме обновления
(реструктуризации) дополнительно определять степень обработки этих
данных.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: acc_67
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 1318

Параметры проверки

  • NA

Текст ошибки

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

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт acc_72: Отложенный обработчик обновления в параллельном режиме для объекта одной подсистемы обрабатывает данные другой подсистемы.

Название проверки

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

Английское название проверки
??

Правило анализа кода/метаданных

Правило проверки регистрирует ошибки для отложенных обработчиков
обновления в параллельном режиме по следующим пунктам:

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

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: acc_72
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 530

Параметры проверки

  • NA

Текст ошибки

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

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Пропуск объектов поставщика при проверках

Вижу регистрацию ошибок в объектах поставщика БСП. Т.к. ошибки такого рода нет смысла править (поскольку БСП это внешняя обновляемая библиотека, на поддержке) хотелось бы, чтобы они не проверялись - нужна какая-то настройка. Желательно, чтобы она хранилась в гит-хранилище, а не воркспейсе.

По команде "НайтиСсылки" метода смотреть также его участие как строкового литерала в обработчиках обновления

Добрый день. В edt есть команда "НайтиСсылки", вызывается по пкм на методе модуля - ищет все вхождения по имени текущего метода. Было бы удобно, если он искал также среди обработчиков переопределяемых модулей - например среди обработчиков обновления.

Поддержка функции ОбщегоНазначения.ОписаниеСвойствОбъекта()

Для функции ОбщегоНазначения.ОписаниеСвойствОбъекта() вычислять список полей из параметров (значение строкового литерала или локальная переменная сформированная в текущей процедуре) и возвращать таблицу с колонками из свойств объекта метаданных.

Код функции:

// Возвращает таблицу значений с описанием требуемых свойств всех реквизитов объекта метаданных.
// Получает значения свойств стандартных реквизитов и пользовательских реквизитов (созданных в режиме конфигуратора).
//
// Параметры:
//  ОбъектМетаданных  - ОбъектМетаданных - объект, для которого необходимо получить значение свойств реквизитов.
//                      Например: Метаданные.Документ.РеализацияТоваровИУслуг
//  Свойства - Строка - свойства реквизитов, перечисленные через запятую, значение которых необходимо получить.
//                      Например: "Имя, Тип, Синоним, Подсказка".
//
// Возвращаемое значение:
//  ТаблицаЗначений - описание требуемых свойств всех реквизитов объекта метаданных.
//
Функция ОписаниеСвойствОбъекта(ОбъектМетаданных, Свойства) Экспорт
	
	МассивСвойств = СтрРазделить(Свойства, ",");
	
	// Возвращаемое значение функции.
	ТаблицаОписанияСвойствОбъекта = Новый ТаблицаЗначений;
	
	// Добавляем в таблицу поля согласно именам переданных свойств.
	Для Каждого ИмяСвойства Из МассивСвойств Цикл
		ТаблицаОписанияСвойствОбъекта.Колонки.Добавить(СокрЛП(ИмяСвойства));
	КонецЦикла;
	
	// Заполняем строку таблицы свойствами реквизитов объекта метаданных.
	Для Каждого Реквизит Из ОбъектМетаданных.Реквизиты Цикл
		ЗаполнитьЗначенияСвойств(ТаблицаОписанияСвойствОбъекта.Добавить(), Реквизит);
	КонецЦикла;
	
	// Заполняем строку таблицы свойствами стандартных реквизитов объекта метаданных.
	Для Каждого Реквизит Из ОбъектМетаданных.СтандартныеРеквизиты Цикл
		ЗаполнитьЗначенияСвойств(ТаблицаОписанияСвойствОбъекта.Добавить(), Реквизит);
	КонецЦикла;
	
	Возврат ТаблицаОписанияСвойствОбъекта;
	
КонецФункции

Поддержка функции ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру()

Возвращать типизированные свойства структуры по именам колонок строки ТЗ

// Преобразует строку таблицы значений в структуру.
// Свойства структуры и их значения совпадают с колонками переданной строки.
//
// Параметры:
//  СтрокаТаблицыЗначений - СтрокаТаблицыЗначений - строка таблицы значений.
//
// Возвращаемое значение:
//  Структура - преобразованная строка таблицы значений.
//
Функция СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицыЗначений) Экспорт
	
	Структура = Новый Структура;
	Для каждого Колонка Из СтрокаТаблицыЗначений.Владелец().Колонки Цикл
		Структура.Вставить(Колонка.Имя, СтрокаТаблицыЗначений[Колонка.Имя]);
	КонецЦикла;
	
	Возврат Структура;
	
КонецФункции

Стандарт 771: Планом обмена не поддерживается более высокая версия формата обмена EnterpriseData.

Название проверки

Планом обмена не поддерживается более высокая версия формата обмена EnterpriseData.

Английское название проверки
??

Правило анализа кода/метаданных

Интеграция прикладных решений через формат EnterpriseData

Область применения: управляемое приложение.

1. Переходы с конфигурации на конфигурацию следует разрабатывать на
основе правил конвертации (ПК). Обмены между конфигурациями,
использующими Библиотеку стандартных подсистем (БСП), следует делать
на основе формата EnterpriseData, разрабатывать новые обмены на
основе ПК запрещается.

2. Актуальные версии EnterpriseData содержатся в последней
опубликованной версии конфигурации БСП в виде объектов метаданных
Пакет XDTO, именуемых следующим образом:
EnterpriseData_{X|XX}_{Y|YY}_{Z|ZZ}, где X, Y - это Major версия,
Z - это Minor версия.

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

Например, версии 1.0, 1.1 EnterpriseData были сняты с поддержки,
т.к. интервала 1.2-1.4 версий формата достаточно для обмена между
версиями прикладных решений из достаточно широкого диапазона.

3. При разработке новых версий прикладных решений нужно стремиться к
тому, чтобы в обменах данными поддерживались все актуальные версии
EnterpriseData. Это требование обеспечивает возможность асинхронного
выпуска новых версий прикладных решений для разработчиков, а также
возможность асинхронного перехода на них для пользователей. Исключение
составляет случай, описанный в пункте 4.

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

Пример:
При выпуске конфигурации, в которую встроена версия 2.4.1 БСП,
необходимо поддержать версии 1.2, 1.3 и 1.4 формата EnterpriseData.

4. Версия формата EnterpriseData не должна поддерживаться в обмене
данными, если она не соответствует требованиям к функциональности этого
обмена.

Пример:
Для интеграции двух конфигураций необходим обмен документами «Чек ККМ».
Поддержка передачи этих данных есть только в версии 1.4 формата,
следовательно поддерживаемые в этом обмене версии формата должны быть не
младше 1.4.

[TABLE]

См. также

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 771
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 519

Параметры проверки

  • NA

Текст ошибки

Планом обмена не поддерживается более высокая версия формата обмена EnterpriseData.

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт 771: Планом обмена не поддерживается более низкая версия формата обмена EnterpriseData.

Название проверки

Планом обмена не поддерживается более низкая версия формата обмена EnterpriseData.

Английское название проверки
??

Правило анализа кода/метаданных

Интеграция прикладных решений через формат EnterpriseData

Область применения: управляемое приложение.

1. Переходы с конфигурации на конфигурацию следует разрабатывать на
основе правил конвертации (ПК). Обмены между конфигурациями,
использующими Библиотеку стандартных подсистем (БСП), следует делать
на основе формата EnterpriseData, разрабатывать новые обмены на
основе ПК запрещается.

2. Актуальные версии EnterpriseData содержатся в последней
опубликованной версии конфигурации БСП в виде объектов метаданных
Пакет XDTO, именуемых следующим образом:
EnterpriseData_{X|XX}_{Y|YY}_{Z|ZZ}, где X, Y - это Major версия,
Z - это Minor версия.

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

Например, версии 1.0, 1.1 EnterpriseData были сняты с поддержки,
т.к. интервала 1.2-1.4 версий формата достаточно для обмена между
версиями прикладных решений из достаточно широкого диапазона.

3. При разработке новых версий прикладных решений нужно стремиться к
тому, чтобы в обменах данными поддерживались все актуальные версии
EnterpriseData. Это требование обеспечивает возможность асинхронного
выпуска новых версий прикладных решений для разработчиков, а также
возможность асинхронного перехода на них для пользователей. Исключение
составляет случай, описанный в пункте 4.

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

Пример:
При выпуске конфигурации, в которую встроена версия 2.4.1 БСП,
необходимо поддержать версии 1.2, 1.3 и 1.4 формата EnterpriseData.

4. Версия формата EnterpriseData не должна поддерживаться в обмене
данными, если она не соответствует требованиям к функциональности этого
обмена.

Пример:
Для интеграции двух конфигураций необходим обмен документами «Чек ККМ».
Поддержка передачи этих данных есть только в версии 1.4 формата,
следовательно поддерживаемые в этом обмене версии формата должны быть не
младше 1.4.

[TABLE]

См. также

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 771
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 520

Параметры проверки

  • NA

Текст ошибки

Планом обмена не поддерживается более низкая версия формата обмена EnterpriseData.

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт 760: Регламентное задание включено в состав разделителя.

Название проверки

Регламентное задание включено в состав разделителя.

Английское название проверки
??

Правило анализа кода/метаданных

  1. В прикладных решениях, ориентированных на работу в режиме сервиса по
    Технологии 1cFresh, не должно быть регламентных заданий, которые
    включены в состав любого из разделителей. Это ограничение обусловлено
    тем, что при большом количестве областей данных в одной информационной
    базе разделенные регламентные задания могут вызвать перегрузку рабочих
    процессов, обслуживающих данную информационную базу, и серьезно
    затруднить работу пользователей сервиса.

2. Из документации БСП
(http://its.1c.ru/db/bspdoc#content:454:1:issogl2_последовательное_выполнение_регламентных_и_фоновых_заданий_с_помощью_очереди_заданий):

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

Т.о. если у регламентного задания включено свойство "Использование", и
оно отсутствует в массиве, который возвращает функция
ОчередьЗаданий.ШаблоныЗаданийОчереди(), то это ошибка.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 760
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 454

Параметры проверки

  • NA

Текст ошибки

Регламентное задание включено в состав разделителя.

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт 770: Обнаружен вызов метода "Выполнить" вместо "ОбщегоНазначения.ВыполнитьВБезопасномРежиме()".

Название проверки

Обнаружен вызов метода "Выполнить" вместо "ОбщегоНазначения.ВыполнитьВБезопасномРежиме()".

Английское название проверки
??

Правило анализа кода/метаданных

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

УстановитьБезопасныйРежим(Истина);
Выполнить Алгоритм;

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

УстановитьБезопасныйРежим(Истина);

Для каждого ИмяРазделителя Из РазделителиКонфигурации() Цикл
УстановитьБезопасныйРежимРазделенияДанных(ИмяРазделителя, Истина);
КонецЦикла;

Выполнить Алгоритм;

При использовании в конфигурации Библиотеки стандартных подсистем,
следует использовать:

  • ОбщегоНазначения.ВыполнитьВБезопасномРежиме() вместо Выполнить;
  • ОбщегоНазначения.ВычислитьВБезопасномРежиме() вместо Вычислить;
  • ОбщегоНазначения.ВыполнитьМетодКонфигурации() вместо формирования
    строки вызова метода модуля и передачи ее в Выполнить;
  • ОбщегоНазначения.ВыполнитьМетодОбъекта() вместо формирования строки
    вызова метода объекта и передачи ее в Выполнить.

При использовании в конфигурации Библиотеки стандартных подсистем
версии, меньшей чем 2.4.1, следует использовать:

  • РаботаВБезопасномРежиме.ВыполнитьВБезопасномРежиме() вместо
    Выполнить;
  • РаботаВБезопасномРежиме.ВычислитьВБезопасномРежиме() вместо
    Вычислить;
  • РаботаВБезопасномРежиме.ВыполнитьМетодКонфигурации() вместо
    формирования строки вызова метода модуля и передачи ее в
    Выполнить;
  • РаботаВБезопасномРежиме.ВыполнитьМетодОбъекта() вместо формирования
    строки вызова метода объекта и передачи ее в Выполнить.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 770
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 487

Параметры проверки

  • NA

Текст ошибки

Обнаружен вызов метода "Выполнить" вместо "ОбщегоНазначения.ВыполнитьВБезопасномРежиме()".

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Поддержка функции ОбщегоНазначения(Клиент).ПредопределенныйЭлемент

Для функции нужно возвращать реальный тип.

// Возвращает ссылку предопределенного элемента по его полному имени.
// Предопределенные элементы могут содержаться только в следующих объектах:
//   - справочники;
//   - планы видов характеристик;
//   - планы счетов;
//   - планы видов расчета.
// После изменения состава предопределенных следует выполнить метод
// ОбновитьПовторноИспользуемыеЗначения(), который сбросит кэш ПовтИсп в текущем сеансе.
//
// См. ОбщегоНазначения.ПредопределенныйЭлемент
//
// Параметры:
//   ПолноеИмяПредопределенного - Строка - полный путь к предопределенному элементу, включая его имя.
//     Формат аналогичен функции глобального контекста ПредопределенноеЗначение().
//     Например:
//       "Справочник.ВидыКонтактнойИнформации.EmailПользователя"
//       "ПланСчетов.Хозрасчетный.Материалы"
//       "ПланВидовРасчета.Начисления.ОплатаПоОкладу".
//
// Возвращаемое значение: 
//   ЛюбаяСсылка - ссылка на предопределенный элемент.
//   Неопределено - если предопределенный элемент есть в метаданных, но не создан в ИБ.
//
Функция ПредопределенныйЭлемент(ПолноеИмяПредопределенного) Экспорт
	
	Если ОбщегоНазначенияСлужебныйКлиентСервер.ИспользоватьСтандартнуюФункциюПолученияПредопределенного(
		ПолноеИмяПредопределенного) Тогда 
		
		Возврат ПредопределенноеЗначение(ПолноеИмяПредопределенного);
	КонецЕсли;
	
	ПоляПредопределенного = ОбщегоНазначенияСлужебныйКлиентСервер.ИмяПредопределенногоПоПолям(ПолноеИмяПредопределенного);
	
	ПредопределенныеЗначения = СтандартныеПодсистемыКлиентПовтИсп.СсылкиПоИменамПредопределенных(
		ПоляПредопределенного.ПолноеИмяОбъектаМетаданных);
	
	Возврат ОбщегоНазначенияСлужебныйКлиентСервер.ПредопределенныйЭлемент(
		ПолноеИмяПредопределенного, ПоляПредопределенного, ПредопределенныеЗначения);
	
КонецФункции

Для функции можно поддержать помощник ввода строкового литерала

Поддержка фукнции ОбщегоНазначения.ПроверитьПроведенностьДокументов()

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

// Проверяет статус проведения переданных документов и возвращает
// те из них, которые не проведены.
//
// Параметры:
//  Документы - Массив Из ДокументСсылка - документы, статус проведения которых необходимо проверить.
//
// Возвращаемое значение:
//  Массив Из ДокументСсылка - непроведенные документы.
//
Функция ПроверитьПроведенностьДокументов(Знач Документы) Экспорт
	
	Результат = Новый Массив;
	
	ШаблонЗапроса = 	
		"ВЫБРАТЬ
		|	ПсевдонимЗаданнойТаблицы.Ссылка КАК Ссылка
		|ИЗ
		|	&ИмяДокумента КАК ПсевдонимЗаданнойТаблицы
		|ГДЕ
		|	ПсевдонимЗаданнойТаблицы.Ссылка В(&МассивДокументов)
		|	И НЕ ПсевдонимЗаданнойТаблицы.Проведен";
	
	ТекстОбъединитьВсе =
		"
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|";
		
	ИменаДокументов = Новый Массив;
	Для Каждого Документ Из Документы Цикл
		МетаданныеДокумента = Документ.Метаданные();
		Если ИменаДокументов.Найти(МетаданныеДокумента.ПолноеИмя()) = Неопределено
			И Метаданные.Документы.Содержит(МетаданныеДокумента)
			И МетаданныеДокумента.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
				ИменаДокументов.Добавить(МетаданныеДокумента.ПолноеИмя());
		КонецЕсли;
	КонецЦикла;
	
	ТекстЗапроса = "";
	Для Каждого ИмяДокумента Из ИменаДокументов Цикл
		Если Не ПустаяСтрока(ТекстЗапроса) Тогда
			ТекстЗапроса = ТекстЗапроса + ТекстОбъединитьВсе;
		КонецЕсли;
		ТекстПодзапроса = СтрЗаменить(ШаблонЗапроса, "&ИмяДокумента", ИмяДокумента);
		ТекстЗапроса = ТекстЗапроса + ТекстПодзапроса;
	КонецЦикла;
		
	Запрос = Новый Запрос;
	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("МассивДокументов", Документы);
	
	Если Не ПустаяСтрока(ТекстЗапроса) Тогда
		Результат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

Стандарт 540: В начале процедуры обработки регламентного задания отсутствует вызов процедуры "ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();".

Название проверки

В начале процедуры обработки регламентного задания отсутствует вызов процедуры "ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();".

Английское название проверки
??

Правило анализа кода/метаданных

6. Если регламентное задание попадает под требования, описанные в
пунктах 3.1, 4.2, 5 и используется подсистема «Регламентные задания»
БСП, то вначале процедур обработчиков таких заданий необходимо помещать
вызов:

ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.<ИмяЗадания>);

Первый параметр при этом заполнять обязательно.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 540
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 302

Параметры проверки

  • NA

Текст ошибки

В начале процедуры обработки регламентного задания отсутствует вызов процедуры "ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();".

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт acc_67: В отложенном обработчике обновления обнаружен неуникальный комментарий.

Название проверки

В отложенном обработчике обновления обнаружен неуникальный комментарий.

Английское название проверки
??

Правило анализа кода/метаданных

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

  • не указан идентификатор или комментарий;
  • идентификатор или комментарий не уникален.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: acc_67
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 546

Параметры проверки

  • NA

Текст ошибки

В отложенном обработчике обновления обнаружен неуникальный комментарий.

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт 669: Вызов функции БСП "ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()".

Название проверки

Вызов функции БСП "ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()".

Английское название проверки
??

Правило анализа кода/метаданных

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

Примеры недопустимого выполнения «внешнего» кода в небезопасном режиме:

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

При использовании в конфигурации Библиотеки стандартных подсистем
(БСП) внешний код допустимо подключать только через соответствующие
подсистемы БСП:

· как расширения конфигурации – с помощью средств подсистемы «Базовая
функциональность»;

· как внешние отчеты и обработки – через «Дополнительные отчеты и
обработки»;

· в виде внешних компонент – через подсистему «Внешние компоненты»;

· для запуска внешних программ – см. Безопасность запуска
приложений.

При этом указанное в этом пункте требование будет выполнено.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 669
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 556

Параметры проверки

  • NA

Текст ошибки

Вызов функции БСП "ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()".

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт 784: Отсутствует обработчик начального заполнения предопределенных элементов (ПриНачальномЗаполненииЭлементов и др.).

Название проверки

Отсутствует обработчик начального заполнения предопределенных элементов (ПриНачальномЗаполненииЭлементов и др.).

Английское название проверки
??

Правило анализа кода/метаданных

При использовании в конфигурации Библиотеки стандартных подсистем не
следует создавать собственные обработчики начального заполнения.
Первоначальные данные заполнения нужно размещать в модуле менеджера
объекта в процедуре ПриНачальномЗаполненииЭлементов. Тогда для
объектов, зарегистрированных в
процедуре ПриОпределенииНастроек общего
модуля ОбновлениеИнформационнойБазыПереопределяемый, эти процедуры
будут вызваны автоматически. 

При добавлении нового или изменении существующего элемента следует
создать собственный обработчик обновления перехода на версию и
продублировать изменения в
процедуре ПриНачальномЗаполненииЭлементов модуля менеджера объекта.
Подробнее см. документацию к БСП.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 784
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 1385

Параметры проверки

  • NA

Текст ошибки

Отсутствует обработчик начального заполнения предопределенных элементов (ПриНачальномЗаполненииЭлементов и др.).

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Поддержка функции ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве()

Вовращать типизированный массив с типом первого параметра.

// Создает массив и помещает в него переданное значение.
//
// Параметры:
//  Значение - Произвольный - любое значение.
//
// Возвращаемое значение:
//  Массив - массив из одного элемента.
//
Функция ЗначениеВМассиве(Значение) Экспорт
	
	Массив = Новый Массив;
	Массив.Добавить(Значение);
	
	Возврат Массив;
	
КонецФункции

Поддержка функции ОбщегоНазначенияКлиентСервер.СвернутьМассив()

Возвращать типизированный массив как входящий тип

// Возвращает копию исходного массива с уникальными значениями.
//
// Параметры:
//  Массив - Массив - массив произвольных значений.
//
// Возвращаемое значение:
//  Массив - массив уникальных элементов.
//
Функция СвернутьМассив(Знач Массив) Экспорт
	Результат = Новый Массив;
	ДополнитьМассив(Результат, Массив, Истина);
	Возврат Результат;
КонецФункции

Поддержка функции ОбщегоНазначенияКлиентСервер.РазностьМассивов()

Необходимо возвращать тип первого параметра

// Возвращает разность массивов. Разностью двух массивов является массив, содержащий
// все элементы первого массива, не существующие во втором массиве.
//
// Параметры:
//  Массив - Массив - массив элементов, из которого необходимо выполнить вычитание;
//  МассивВычитания - Массив - массив элементов, который будет вычитаться.
// 
// Возвращаемое значение:
//  Массив - разностью двух массивов.
//
// Пример:
//	//А = [1, 3, 5, 7];
//	//В = [3, 7, 9];
//	Результат = РазностьМассивов(А, В);
//	//Результат = [1, 5];
//
Функция РазностьМассивов(Знач Массив, Знач МассивВычитания) Экспорт
	
	Результат = Новый Массив;
	Для Каждого Элемент Из Массив Цикл
		Если МассивВычитания.Найти(Элемент) = Неопределено Тогда
			Результат.Добавить(Элемент);
		КонецЕсли;
	КонецЦикла;
	Возврат Результат;
	
КонецФункции

Поддержка функции ОбщегоНазначения.ТаблицаЗначенийВМассив()

Необходимо формировать возвращаемый тип в формате:

// Преобразует таблицу значений в массив структур.
// Может использоваться для передачи на клиент данных в том случае, если таблица
// значений содержит только такие значения, которые могут
// быть переданы с сервера на клиент.
//
// Полученный массив содержит структуры, каждая из которых повторяет
// структуру колонок таблицы значений.
//
// Не рекомендуется использовать для преобразования таблиц значений
// с большим количеством строк.
//
// Параметры:
//  ТаблицаЗначений - ТаблицаЗначений - исходная таблица значений.
//
// Возвращаемое значение:
//  Массив - коллекция строк таблицы в виде структур.
//
Функция ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт
	
	Массив = Новый Массив();
	СтруктураСтрокой = "";
	НужнаЗапятая = Ложь;
	Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл
		Если НужнаЗапятая Тогда
			СтруктураСтрокой = СтруктураСтрокой + ",";
		КонецЕсли;
		СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя;
		НужнаЗапятая = Истина;
	КонецЦикла;
	Для Каждого Строка Из ТаблицаЗначений Цикл
		НоваяСтрока = Новый Структура(СтруктураСтрокой);
		ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
		Массив.Добавить(НоваяСтрока);
	КонецЦикла;
	Возврат Массив;

КонецФункции

на основе известных колонок таблицы значений из коллекции Колонки.

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

Поддержка функции ОбщегоНазанчения.ФиксированныеДанные()

В зависимости от типа входящих данных - возвращать такие же типы "фиксированные"

// Фиксирует данные типов Структура, Соответствие, Массив с учетом вложенности.
//
// Параметры:
//  Данные - Структура
//         - Соответствие
//         - Массив - коллекции, значения которых являются примитивными типами,
//           хранилищем значения или не могут быть изменены. Поддерживаются типы значений:
//           Булево, Строка, Число, Дата, Неопределено, УникальныйИдентификатор, Null, Тип,
//           ХранилищеЗначения, ОбщийМодуль, ОбъектМетаданных, ТипЗначенияXDTO, ТипОбъектаXDTO,
//           ЛюбаяСсылка.
//
//  ВызыватьИсключение - Булево - начальное значение Истина. Когда установлено Ложь, тогда в случае наличия
//                                нефиксируемых данных исключение не будет вызвано, при этом данные будут
//                                зафиксированы на сколько возможно.
//
// Возвращаемое значение:
//  ФиксированнаяСтруктура, ФиксированноеСоответствие, ФиксированныйМассив - фиксированные данные, аналогичные
//  переданным в параметре Данные.
// 
Функция ФиксированныеДанные(Данные, ВызыватьИсключение = Истина) Экспорт
	
	Если ТипЗнч(Данные) = Тип("Массив") Тогда
		Массив = Новый Массив;
		
		Для каждого Значение Из Данные Цикл
			
			Если ТипЗнч(Значение) = Тип("Структура")
			 ИЛИ ТипЗнч(Значение) = Тип("Соответствие")
			 ИЛИ ТипЗнч(Значение) = Тип("Массив") Тогда
				
				Массив.Добавить(ФиксированныеДанные(Значение, ВызыватьИсключение));
			Иначе
				Если ВызыватьИсключение Тогда
					ПроверкаФиксированностиДанных(Значение, Истина);
				КонецЕсли;
				Массив.Добавить(Значение);
			КонецЕсли;
		КонецЦикла;
		
		Возврат Новый ФиксированныйМассив(Массив);
		
	ИначеЕсли ТипЗнч(Данные) = Тип("Структура")
	      ИЛИ ТипЗнч(Данные) = Тип("Соответствие") Тогда
		
		Если ТипЗнч(Данные) = Тип("Структура") Тогда
			Коллекция = Новый Структура;
		Иначе
			Коллекция = Новый Соответствие;
		КонецЕсли;
		
		Для каждого КлючИЗначение Из Данные Цикл
			Значение = КлючИЗначение.Значение;
			
			Если ТипЗнч(Значение) = Тип("Структура")
			 ИЛИ ТипЗнч(Значение) = Тип("Соответствие")
			 ИЛИ ТипЗнч(Значение) = Тип("Массив") Тогда
				
				Коллекция.Вставить(
					КлючИЗначение.Ключ, ФиксированныеДанные(Значение, ВызыватьИсключение));
			Иначе
				Если ВызыватьИсключение Тогда
					ПроверкаФиксированностиДанных(Значение, Истина);
				КонецЕсли;
				Коллекция.Вставить(КлючИЗначение.Ключ, Значение);
			КонецЕсли;
		КонецЦикла;
		
		Если ТипЗнч(Данные) = Тип("Структура") Тогда
			Возврат Новый ФиксированнаяСтруктура(Коллекция);
		Иначе
			Возврат Новый ФиксированноеСоответствие(Коллекция);
		КонецЕсли;
		
	ИначеЕсли ВызыватьИсключение Тогда
		ПроверкаФиксированностиДанных(Данные);
	КонецЕсли;
	
	Возврат Данные;
	
КонецФункции

Стандарт 760: Регламентное задание с включенным использованием отсутствует в процедуре "ОчередьЗаданийПереопределяемый.ПриПолученииСпискаШаблонов".

Название проверки

Регламентное задание с включенным использованием отсутствует в процедуре "ОчередьЗаданийПереопределяемый.ПриПолученииСпискаШаблонов".

Английское название проверки
??

Правило анализа кода/метаданных

  1. В прикладных решениях, ориентированных на работу в режиме сервиса по
    Технологии 1cFresh, не должно быть регламентных заданий, которые
    включены в состав любого из разделителей. Это ограничение обусловлено
    тем, что при большом количестве областей данных в одной информационной
    базе разделенные регламентные задания могут вызвать перегрузку рабочих
    процессов, обслуживающих данную информационную базу, и серьезно
    затруднить работу пользователей сервиса.

2. Из документации БСП
(http://its.1c.ru/db/bspdoc#content:454:1:issogl2_последовательное_выполнение_регламентных_и_фоновых_заданий_с_помощью_очереди_заданий):

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

Т.о. если у регламентного задания включено свойство "Использование", и
оно отсутствует в массиве, который возвращает функция
ОчередьЗаданий.ШаблоныЗаданийОчереди(), то это ошибка.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 760
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 455

Параметры проверки

  • NA

Текст ошибки

Регламентное задание с включенным использованием отсутствует в процедуре "ОчередьЗаданийПереопределяемый.ПриПолученииСпискаШаблонов".

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Поддержка функции ОбщегоНазначения.СкопироватьРекурсивно()

Для функции ОбщегоНазначения.СкопироватьРекурсивно() сделать возврат входящего типа 1 параметра. Аналогично для ОбщегоНазначенияКлиент.СкопироватьРекурсивно

// Создает полную копию структуры, соответствия, массива, списка или таблицы значений, рекурсивно,
// с учетом типов дочерних элементов. При этом содержимое значений объектных типов
// (СправочникОбъект, ДокументОбъект и т.п.) не копируются, а возвращаются ссылки на исходный объект.
//
// Параметры:
//  Источник - Структура
//           - ФиксированнаяСтруктура
//           - Соответствие
//           - ФиксированноеСоответствие
//           - Массив
//           - ФиксированныйМассив
//           - СписокЗначений - объект, который необходимо скопировать.
//  ФиксироватьДанные - Булево
//                    - Неопределено - если Истина - фиксировать,
//                          если Ложь - снять фиксацию, если Неопределено - не изменять.
//
// Возвращаемое значение:
//  Структура - , ФиксированнаяСтруктура,
//  Соответствие
//  ФиксированноеСоответствие
//  Массив
//  ФиксированныйМассив
//  СписокЗначений - копия объекта, переданного в параметре Источник.
//
Функция СкопироватьРекурсивно(Источник, ФиксироватьДанные = Неопределено) Экспорт
	
	Перем Приемник;
	
	ТипИсточника = ТипЗнч(Источник);
	
	Если ТипИсточника = Тип("ТаблицаЗначений") Тогда
		Возврат Источник.Скопировать();
	КонецЕсли;
	
	Если ТипИсточника = Тип("Структура")
		Или ТипИсточника = Тип("ФиксированнаяСтруктура") Тогда
		Приемник = СкопироватьСтруктуру(Источник, ФиксироватьДанные);
	ИначеЕсли ТипИсточника = Тип("Соответствие")
		Или ТипИсточника = Тип("ФиксированноеСоответствие") Тогда
		Приемник = СкопироватьСоответствие(Источник, ФиксироватьДанные);
	ИначеЕсли ТипИсточника = Тип("Массив")
		Или ТипИсточника = Тип("ФиксированныйМассив") Тогда
		Приемник = СкопироватьМассив(Источник, ФиксироватьДанные);
	ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда
		Приемник = СкопироватьСписокЗначений(Источник, ФиксироватьДанные);
	Иначе
		Приемник = Источник;
	КонецЕсли;
	
	Возврат Приемник;
	
КонецФункции

Поддержка функций ДлительныеОперации.ВыполнитьВФоне, ДлительныеОперации.ВыполнитьПроцедуру, ДлительныеОперации.ВыполнитьФункцию

В качестве первого параметра методы ДлительныеОперации.ВыполнитьВФоне, ДлительныеОперации.ВыполнитьПроцедуру, ДлительныеОперации.ВыполнитьФункцию принимают имя выполняемого метода.

Обеспечить поддержку перехода к определению метода по гиперссылке и подсказку при вводе метода.

Стандарт 640: Модуль не входит в подсистему, указанную в функции "ПодсистемаСуществует()".

Название проверки

Модуль не входит в подсистему, указанную в функции "ПодсистемаСуществует()".

Английское название проверки
??

Правило анализа кода/метаданных

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

Процедура А(П1, П2) в общем модуле МодульА.

Неверно:

Вызовы:
МодульА.А(1)
МодульА.А(1, 2, 3)

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 640
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 1386

Параметры проверки

  • NA

Текст ошибки

Модуль не входит в подсистему, указанную в функции "ПодсистемаСуществует()".

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт 689: Ошибка выполнения проверки: не удалось получить версию БСП.

Название проверки

Ошибка выполнения проверки: не удалось получить версию БСП.

Английское название проверки
??

Правило анализа кода/метаданных

Сравниваются ограничения разных ролей для одного и того объекта, если
права на этот объект одинаковые. Если ограничения
различны, регистрируется ошибка.

Проверяются ограничения для прав "Добавление" и "Изменение" у одной роли
для одного объекта. Если ограничения различны, регистрируется ошибка.

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 689
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 442

Параметры проверки

  • NA

Текст ошибки

Ошибка выполнения проверки: не удалось получить версию БСП.

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Поддержка функции ОбщегоНазначения.ВыгрузитьКолонку()

Для функции нужно возвращать типизированный массив.

// Создает массив и копирует в него значения, содержащиеся в колонке объекта, для
// которого доступен обход посредством оператора Для каждого … Из.
//
// Параметры:
//  КоллекцияСтрок           - ТаблицаЗначений
//                           - ДеревоЗначений
//                           - СписокЗначений
//                           - ТабличнаяЧасть
//                           - Соответствие
//                           - Структура - коллекция, колонку которой нужно выгрузить в массив.
//                                         А так же другие объекты, для которых доступен обход
//                                         посредством оператора Для каждого … Из … Цикл.
//  ИмяКолонки               - Строка - имя поля коллекции, значения которого нужно выгрузить.
//  ТолькоУникальныеЗначения - Булево - если Истина, то в массив будут включены
//                                      только различающиеся значения.
//
// Возвращаемое значение:
//  Массив - значения колонки.
//
Функция ВыгрузитьКолонку(КоллекцияСтрок, ИмяКолонки, ТолькоУникальныеЗначения = Ложь) Экспорт

	МассивЗначений = Новый Массив;
	
	УникальныеЗначения = Новый Соответствие;
	
	Для каждого СтрокаКоллекции Из КоллекцияСтрок Цикл
		Значение = СтрокаКоллекции[ИмяКолонки];
		Если ТолькоУникальныеЗначения И УникальныеЗначения[Значение] <> Неопределено Тогда
			Продолжить;
		КонецЕсли;
		МассивЗначений.Добавить(Значение);
		УникальныеЗначения.Вставить(Значение, Истина);
	КонецЦикла; 
	
	Возврат МассивЗначений;
	
КонецФункции

Поддержка функции ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры

Для функции возвращать типизированный результат по типу ключа структуры или по типу значения по умолчанию.

Для второго параметра сделать поддержку помощника ввода

// Возвращает значение свойства структуры.
//
// Параметры:
//   Структура - Структура
//             - ФиксированнаяСтруктура - объект, из которого необходимо прочитать значение ключа.
//   Ключ - Строка - имя свойства структуры, для которого необходимо прочитать значение.
//   ЗначениеПоУмолчанию - Произвольный - возвращается когда в структуре нет значения по указанному
//                                        ключу.
//       Для скорости рекомендуется передавать только быстро вычисляемые значения (например примитивные типы),
//       а инициализацию более тяжелых значений выполнять после проверки полученного значения (только если это
//       требуется).
//
// Возвращаемое значение:
//   Произвольный - значение свойства структуры. ЗначениеПоУмолчанию если в структуре нет указанного свойства.
//
Функция СвойствоСтруктуры(Структура, Ключ, ЗначениеПоУмолчанию = Неопределено) Экспорт
	
	Если Структура = Неопределено Тогда
		Возврат ЗначениеПоУмолчанию;
	КонецЕсли;
	
	Результат = ЗначениеПоУмолчанию;
	Если Структура.Свойство(Ключ, Результат) Тогда
		Возврат Результат;
	Иначе
		Возврат ЗначениеПоУмолчанию;
	КонецЕсли;
	
КонецФункции

Поддержка контент ассиста для функций ЗначенияРеквизитовОбъекта и ЗначенияРеквизитовОбъектов

Поддержка ввода имен реквизитов для функций ОбщегоНазначения.ЗначенияРеквизитовОбъектов и ОбщегоНазначения.ЗначенияРеквизитовОбъекта

Восстановить документацию на основе https://github.com/1C-Company/ssl-support/tree/763609caf73f3750071aa334c9e2269622cd9f27

Проверка стандарта 697: Прямое обращение к предопределенным элементам

Есть стандарт:
https://its.1c.ru/db/v8std#content:697:hdoc

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

  • в коде
  • в тексте запросов
  • в параметрах СКД

Ошибочная выдача сообщения "Возможно, строковый литерал содержит ошибку"

Добрый день. Установил 0.4.0 для 1C:EDT 2021.1, очистил проект. Вижу после этого кучу ошибок вида "Возможно строковый литерал содержит ошибку", для функций
ОбщегоНазначения.ЗначениеРеквизитаОбъекта,
ОбщегоНазначения.ЗначенияРеквизитовОбъектов
Платформа 8.3.14.2095

Поддержка функции ОбщегоНазначения.СтруктураПоМенеджеруЗаписи

Возвращать типизированную структуру с типами по метаднным.

// Создает структуру, содержащую имена и значения измерений, ресурсов и реквизитов
// переданного менеджера записи регистра сведений.
//
// Параметры:
//  МенеджерЗаписи     - РегистрСведенийМенеджерЗаписиИмяРегистраСведений - менеджер записи, из которого надо получить структуру.
//  МетаданныеРегистра - ОбъектМетаданныхРегистрСведений - метаданные регистра сведений.
//
// Возвращаемое значение:
//  Структура - коллекция измерений ресурсов и реквизитов, переданного менеджеру записи.
//
Функция СтруктураПоМенеджеруЗаписи(МенеджерЗаписи, МетаданныеРегистра) Экспорт
	
	ЗаписьКакСтруктура = Новый Структура;
	
	Если МетаданныеРегистра.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда
		ЗаписьКакСтруктура.Вставить("Период", МенеджерЗаписи.Период);
	КонецЕсли;
	Для Каждого Поле Из МетаданныеРегистра.Измерения Цикл
		ЗаписьКакСтруктура.Вставить(Поле.Имя, МенеджерЗаписи[Поле.Имя]);
	КонецЦикла;
	Для Каждого Поле Из МетаданныеРегистра.Ресурсы Цикл
		ЗаписьКакСтруктура.Вставить(Поле.Имя, МенеджерЗаписи[Поле.Имя]);
	КонецЦикла;
	Для Каждого Поле Из МетаданныеРегистра.Реквизиты Цикл
		ЗаписьКакСтруктура.Вставить(Поле.Имя, МенеджерЗаписи[Поле.Имя]);
	КонецЦикла;
	
	Возврат ЗаписьКакСтруктура;
	
КонецФункции

Стандарт 768: Программная установка свойств динамического списка выполняется без помощи процедуры "ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка()".

Название проверки

Программная установка свойств динамического списка выполняется без помощи процедуры "ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка()".

Английское название проверки
??

Правило анализа кода/метаданных

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

ПРАВИЛЬНО:

Полноценный запрос:

ВЫБРАТЬ
НоменклатураПереопределяемый.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК НоменклатураПереопределяемый

НЕПРАВИЛЬНО:

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

ВЫБРАТЬ
ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Ссылка

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

ПРАВИЛЬНО:

ВЫБРАТЬ
НоменклатураПереопределяемый.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК НоменклатураПереопределяемый

НЕПРАВИЛЬНО:

ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура

1.3. Установка текста запроса и основной таблицы должна выполняться до
установки значений параметров запроса, чтобы не снижалась
производительность. При наличии БСП, следует использовать процедуру
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(). Это необходимо
для повышения производительности и возможности автоматического сбора
переопределяемых текстов запросов динамических списков.

ПРАВИЛЬНО:

СвойстваСписка =
ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ОсновнаяТаблица = "Справочник.Номенклатура";
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список,
СвойстваСписка);

НЕПРАВИЛЬНО:

Список.ТекстЗапроса = ТекстЗапроса;
Список.Параметры.УстановитьЗначениеПараметра("Параметр1", 42);
Список.ОсновнаяТаблица = ОсновнаяТаблица;

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

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 768
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 484

Параметры проверки

  • NA

Текст ошибки

Программная установка свойств динамического списка выполняется без помощи процедуры "ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка()".

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт 760: Обращение к менеджеру регламентных заданий при наличии подсистемы "Технология сервиса".

Название проверки

Обращение к менеджеру регламентных заданий при наличии подсистемы "Технология сервиса".

Английское название проверки
??

Правило анализа кода/метаданных

4. В прикладных решениях, ориентированных на работу в режиме сервиса по
Технологии 1cFresh, не должно быть участков, где из программного кода
напрямую выполняется управление регламентными заданиями. Для управления
регламентными заданиями необходимо использовать программный интерфейс
БСП, реализованный в модуле РегламентныеЗаданияСервер.

Неправильно:

// Ищем задание по наименованию.
Отбор = Новый Структура();
Отбор.Вставить(“Метаданные”, “ПроверкаЦен”);
Задания = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор);

// Проверяем, что задание найдено.
Если Задания.Количество() <> 1 Тогда
 // Запись в журнал ошибки опущена.
 Возврат;
КонецЕсли;

// Включаем найденное задание.
НашеЗадание = Задания[0];
НашеЗадание.Использование = Истина;
НашеЗадание.Записать();

Правильно:

// Ищем задание по наименованию.
Отбор = Новый Структура();
Отбор.Вставить(“Метаданные”, “ПроверкаЦен”);
Задания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор);

// Проверяем, что задание найдено.
Если Задания.Количество() <> 1 Тогда
 // Запись в журнал ошибки опущена.
 Возврат;
КонецЕсли;

// Включаем найденное задание.
НашеЗадание = Задания[0];
Параметры = Новый Структура();
Параметры.Вставить(“Использование”, Истина);
РегламентныеЗаданияСервер.ИзменитьЗадание(НашеЗадание.УникальныйИдентификатор,
Параметры);

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 760
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 453

Параметры проверки

  • NA

Текст ошибки

Обращение к менеджеру регламентных заданий при наличии подсистемы "Технология сервиса".

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт acc_72: Для объекта метаданных назначено несколько отложенных обработчиков обновления в параллельном режиме.

Название проверки

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

Английское название проверки
??

Правило анализа кода/метаданных

Правило проверки регистрирует ошибки для отложенных обработчиков
обновления в параллельном режиме по следующим пунктам:

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

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: acc_72
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 529

Параметры проверки

  • NA

Текст ошибки

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

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Стандарт 690: В обработчике обновления информационной базы при записи объекта не используется метод "Библиотеки стандартных подсистем".

Название проверки

В обработчике обновления информационной базы при записи объекта не используется метод "Библиотеки стандартных подсистем".

Английское название проверки
??

Правило анализа кода/метаданных

3.2.3. Таким образом, в коде обработчика обновления вместо

ДокументОбъект.Записать();

должно быть:

ДокументОбъект.ОбменДанными.Загрузка = Истина; // отключить всю
бизнес-логику при записи
ДокументОбъект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); 
ДокументОбъект.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
ДокументОбъект.Записать();

При использовании в конфигурации Библиотеки стандартных подсистем (БСП)
версии 2.1.4 и выше следует использовать
процедуру ЗаписатьДанные общего
модуля ОбновлениеИнформационнойБазы:

ОбновлениеИнформационнойБазы.ЗаписатьДанные(ДокументОбъект);

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 690
  • Код проверки: ??my-check-id
  • Тип ошибки: ERROR SECURITY PERFORMANCE WARNING PORTABILITY LIBRARY_DEVELOPMENT_AND_USAGE CODE_STYLE UI_STYLE SPELLING
  • Критичность: BLOCKER CRITICAL MAJOR MINOR TRIVIAL
  • Код ошибки АПК: 1363

Параметры проверки

  • NA

Текст ошибки

В обработчике обновления информационной базы при записи объекта не используется метод "Библиотеки стандартных подсистем".

Пример некорректного решения

  • NA

Описание, почему так делать нельзя

Пример корректного решения

  • NA

Дополнительные материалы

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.