|
|||
ASimonova
15.03.16 — 12:26 |
Добрый день! |
||
mehfk
1 — 15.03.16 — 12:29 |
Сервис — Параметры — Общие. С тебя 500 рублей в фонд Мисты. |
||
ASimonova
2 — 15.03.16 — 12:32 |
(1) спасибо! про 500 р, что, серьезно?? |
||
Cyberhawk
3 — 15.03.16 — 12:38 |
(2) Можно просто фотку свою в профиль вставить — тут для женщин это такая местная традиция |
||
ДенисЧ
4 — 15.03.16 — 12:45 |
Главное — никогда не узнавай слова «рефкторинг»… |
||
ДенисЧ
5 — 15.03.16 — 12:45 |
*а |
||
f_vadim
6 — 15.03.16 — 12:47 |
(3) тут традиция фотки выклянчивать, а не ставить |
||
Starhan
7 — 15.03.16 — 12:48 |
(0) еще вариант Ctrl+Break |
||
ASimonova
8 — 15.03.16 — 12:48 |
а почему такая реакция?) я не первый раз вопросы задаю, этот просто такой глупый что ли? |
||
f_vadim 9 — 15.03.16 — 12:50 |
(8) весна видимо |
Компьютер — устройство разработанное для ускорения и автоматизации человеческих ошибок.
Если при удалении реквизита или переименовании в конфигураторе запускается заполнение индекса (которое можно срубить контрл брейком) надо отключить проверку:
Сервис-Параметры-Общие-При удалении выполнять проверку в модулях
Также для отключения заполнения индекса поиска в 1С можно выполнить следующие шаги:
- Открыть конфигурацию 1С в режиме разработки.
- Выбрать нужную базу данных в списке баз.
- Нажать на кнопку «Настройки» в нижней части окна.
- В открывшемся окне выбрать вкладку «Индексы поиска».
- Снять флажок «Автоматически заполнять индексы поиска» и сохранить изменения.
После выполнения этих действий индексы поиска не будут автоматически заполняться при добавлении новых данных в базу. Однако, следует учитывать, что это может снизить производительность поиска в базе данных. Поэтому, перед отключением заполнения индекса поиска, рекомендуется оценить возможные последствия для производительности и принять решение на основе конкретных условий использования базы данных.
28.04.2014
Изменение кода модулей при переименовании объектов конфигурации
Реализовано в версии 8.3.6.1977.
Мы значительно автоматизировали модификацию прикладных решений в тех случаях, когда удаляются или переименовываются объекты конфигурации, их реквизиты, а так же элементы, реквизиты и параметры форм.
Платформа контролирует ссылочную целостность дерева объектов конфигурации. Она автоматически отслеживает ссылки на объекты (реквизиты и т.д.), и не позволяет удалять их тогда, когда они используются в других объектах. Точно так же переименование объектов (реквизитов и т.д.) конфигурации не нарушает существующие связи их с другими объектами конфигурации.
Однако имена объектов используются не только в структуре метаданных, но и в программном коде. И в случае удаления/переименования объектов вам приходится вручную вносить исправления в программный код. Такая работа требует внимательности и аккуратности, и по этой же причине она является источником ошибок.
Теперь этот процесс значительно автоматизирован. При удалении или переименовании объектов конфигурации платформа автоматически находит фрагменты кода, которые связаны с изменяемым объектом. Очевидные фрагменты платформа может переименовать самостоятельно, а в неочевидных случаях она предлагает принять решение вам.
Настройки
Использование этого механизма настраивается в параметрах конфигуратора. Теперь там появилась группа настроек Рефакторинг при изменениях в метаданных и формах:
Автоматический анализ текстов модулей вы можете настроить по-отдельности для каждого вида операций. При удалении, при переименовании, при изменениях, выполняемых в формах. Также вы можете настроить реакцию платформы в тех случаях, когда требуется ваше участие: Задавать вопрос, Продолжать операцию или Отменять операцию.
Терминология
Не всегда есть возможность автоматически определить, что данный фрагмент кода работает с конкретным объектом конфигурации.
Например, если в коде используется конструкция Справочники.Номенклатура, то мы со 100%-ой уверенностью можем сказать, что выполняется работа со справочником Номенклатура. Такие случаи называются фактическим использованием. Их платформа умеет обрабатывать автоматически, а в окне результатов поиска они помечаются пиктограммой i.
Наряду с этим есть случаи, когда только по фрагменту текста нельзя понять, с каким именно объектом конфигурации ведётся работа. Например, Параметр1.Номенклатура. Переменная Параметр1 может ссылаться и на справочник с реквизитом Номенклатура, и на данные строки табличной части, в которой есть колонка Номенклатура. Узнать это на 100% можно, только если вы самостоятельно проанализируете алгоритм. Такие случаи называются возможным использованием. Они требуют вашего вмешательства, и в окне результатов поиска они помечаются пиктограммой !.
Поиск ссылок
Если вы хотите заранее проанализировать последствия переименования или удаления объектов конфигурации, вы можете найти все ссылки на них в модулях:
Платформа перечислит все фрагменты кода, которые могут использовать выбранный объект. По двойному клику мыши она откроет соответствующий модуль и подсветит найденную строку:
Случаи возможного использования платформа помечает в общем списке пиктограммой ?:
Удаление
При удалении объекта конфигурации платформа автоматически покажет список фрагментов, которые могут использовать удаляемый объект:
Соответственно вы можете сначала удалить объект и потом исправить фрагменты кода. Или наоборот, сначала отказаться от удаления объекта, исправить все фрагменты кода, а затем удалить объект.
Переименование
При переименовании объектов платформа (если найдёт фрагменты кода) также сначала поинтересуется, хотите ли вы продолжать эту операцию:
Вы можете отказаться, и сначала исправить все фрагменты кода. А можете согласиться. Тогда платформа самостоятельно исправит случаи фактического использования и выведет общий список найденных фрагментов. В этом списке случаи возможного использования вам нужно будет исправить вручную, нажимая на ссылку Заменить…:
Чтобы ускорить ручное изменение фрагментов, вы можете выделить сразу несколько строк, а затем из контекстного меню выполнить команду Заменить…:
Надеемся, что новый механизм значительно сократит количество «ручной» работы и желаем вам удачного переименования и удаления объектов :).
Теги:
разработка
8.3.6
Обновлено: 23.03.2023
Эта статья продолжает цикл статей «Первые шаги в разработке на 1С». В ней на практических примерах рассматривается механизм предопределенных данных, в т.ч. и в распределенной информационной базе.
Применимость
В статье рассматривается платформа 1С:Предприятие версии 8.3.4.465. Материал актуален и для текущих релизов платформы.
Предопределенные элементы в «1С:Предприятие 8.3»
При реализации алгоритмов разработчики часто опираются на определенные данные – элементы справочников, планов счетов, планов видов расчета и т.д.
Во встроенном языке существуют методы для поиска данных, например, НайтиПоКоду() или НайтиПоНаименованию().
Однако алгоритмы, опирающиеся на код или наименование, зачастую являются ненадежными.
Поскольку в пользовательском режиме код или наименование элемента справочника могут быть изменены, что может привести к неработоспособности алгоритмов.
Именно для решения этой проблемы и предназначены предопределенные данные – данные, созданные в конфигураторе, обратиться к которым возможно по имени, не прибегая к предварительному поиску элемента.
Таким образом, у предопределенных данных есть две “стороны”: во-первых, существует список предопределенных элементов, созданный в конфигураторе, а, во-вторых, для данных информационной базы указывается, является ли конкретный элемент предопределенным.
Предопределенные элементы могут быть созданы у:
- справочников;
- планов счетов;
- планов видов характеристик;
- планов видов расчета.
В статье рассмотрены новшества, касающиеся предопределенных данных на платформе 8.3, а также особенности работы с ними в распределенных базах (как центральных, так и периферийных) и в информационных базах в режиме разделения данных.
Для примера, создадим в справочнике Организации предопределенный элемент ОсновнаяОрганизация:
Для увеличения нажмите на изображение.
Обращение к этому элементу из программного кода будет следующим:
В платформе 8.3 реализована возможность связать предопределенные данные с элементами соответствующего типа.
Для этого у объектов, которые могут иметь предопределенные элементы (они указаны выше), добавлено новое свойство ИмяПредопределенныхДанных. Оно отображается в списке стандартных реквизитов:
Выберем при помощи запроса все поля из справочника Организации:
Для увеличения нажмите на изображение.
На рисунке видно, что в поле ИмяПредопределенныхДанных указан именно тот идентификатор, который мы ввели в режиме конфигуратора.
Предопределенный элемент в списке отображается специальной пиктограммой:
Чтобы “отсоединить” элемент данных от элемента предопределенных данных, нужно присвоить свойству ИмяПредопределенныхДанных пустую строку и записать элемент:
&НаКлиенте
Процедура Отсоединить ( Команда )
ОтсоединитьНаСервере ();
КонецПроцедуры
Пиктограмма в списке изменилась:
Теперь предопределенный элемент существует только в конфигурации и в данных нет элемента, привязанного к идентификатору ОсновнаяОрганизация:
Для увеличения нажмите на изображение.
Обращение из программного кода к предопределенному элементу вызовет исключение:
Чтобы связать предопределенный элемент с новой записью, нужно присвоить свойству ИмяПредопределенныхДанных имя предопределенного элемента:
&НаКлиенте
Процедура Привязать ( Команда )
ПривязатьНаСервере ();
КонецПроцедуры
Мы значительно автоматизировали модификацию прикладных решений в тех случаях, когда удаляются или переименовываются объекты конфигурации, их реквизиты, а так же элементы, реквизиты и параметры форм.
Платформа контролирует ссылочную целостность дерева объектов конфигурации. Она автоматически отслеживает ссылки на объекты (реквизиты и т.д.), и не позволяет удалять их тогда, когда они используются в других объектах. Точно так же переименование объектов (реквизитов и т.д.) конфигурации не нарушает существующие связи их с другими объектами конфигурации.
Однако имена объектов используются не только в структуре метаданных, но и в программном коде. И в случае удаления/переименования объектов вам приходится вручную вносить исправления в программный код. Такая работа требует внимательности и аккуратности, и по этой же причине она является источником ошибок.
Теперь этот процесс значительно автоматизирован. При удалении или переименовании объектов конфигурации платформа автоматически находит фрагменты кода, которые связаны с изменяемым объектом. Очевидные фрагменты платформа может переименовать самостоятельно, а в неочевидных случаях она предлагает принять решение вам.
Настройки
Использование этого механизма настраивается в параметрах конфигуратора. Теперь там появилась группа настроек Рефакторинг при изменениях в метаданных и формах:
Автоматический анализ текстов модулей вы можете настроить по-отдельности для каждого вида операций. При удалении, при переименовании, при изменениях, выполняемых в формах. Также вы можете настроить реакцию платформы в тех случаях, когда требуется ваше участие: Задавать вопрос, Продолжать операцию или Отменять операцию.
Терминология
Не всегда есть возможность автоматически определить, что данный фрагмент кода работает с конкретным объектом конфигурации.
Например, если в коде используется конструкция Справочники.Номенклатура, то мы со 100%-ой уверенностью можем сказать, что выполняется работа со справочником Номенклатура. Такие случаи называются фактическим использованием. Их платформа умеет обрабатывать автоматически, а в окне результатов поиска они помечаются пиктограммой i.
Наряду с этим есть случаи, когда только по фрагменту текста нельзя понять, с каким именно объектом конфигурации ведётся работа. Например, Параметр1.Номенклатура. Переменная Параметр1 может ссылаться и на справочник с реквизитом Номенклатура, и на данные строки табличной части, в которой есть колонка Номенклатура. Узнать это на 100% можно, только если вы самостоятельно проанализируете алгоритм. Такие случаи называются возможным использованием. Они требуют вашего вмешательства, и в окне результатов поиска они помечаются пиктограммой !.
Поиск ссылок
Если вы хотите заранее проанализировать последствия переименования или удаления объектов конфигурации, вы можете найти все ссылки на них в модулях:
Платформа перечислит все фрагменты кода, которые могут использовать выбранный объект. По двойному клику мыши она откроет соответствующий модуль и подсветит найденную строку:
Случаи возможного использования платформа помечает в общем списке пиктограммой ?:
Удаление
При удалении объекта конфигурации платформа автоматически покажет список фрагментов, которые могут использовать удаляемый объект:
Переименование
При переименовании объектов платформа (если найдёт фрагменты кода) также сначала поинтересуется, хотите ли вы продолжать эту операцию:
Чтобы ускорить ручное изменение фрагментов, вы можете выделить сразу несколько строк, а затем из контекстного меню выполнить команду Заменить.
Надеемся, что новый механизм значительно сократит количество «ручной» работы и желаем вам удачного переименования и удаления объектов :).
Особенности предопределенных элементов объектов метаданных при работе с отключенным режимом совместимости
Для некоторых объектов метаданных в платформе «1С:Предприятие 8» есть возможность задавать в конфигурации предопределенные элементы, для которых в информационной базе будут автоматически создаваться объекты с заданными значениями. В данной статье рассматриваются некоторые особенности их реализации и работы с ними.
Общие сведения
Объекты данных обладают свойством ИмяПредопределенныхДанных , с помощью которого можно управлять их связью с метаданными. Объекты, у которых данное свойство заполнено, являются предопределенными.
Данное свойство может принимать следующие значения:
Если объекту данных установить пустое значение свойства, то он станет обычным, не предопределенным, объектом.
Если объекту установить имя предопределенного элемента из метаданных, то он станет предопределенным элементом, связанным с метаданными. В пределах одной области информационной базы допустимо использование только одного объекта данных, связанных с конкретным предопределенным элементом метаданных.
В режиме загрузки уникальность предопределенного элемента в пределах области информационной базы не проверяется.
Специальное имя предопределенного является особенностью, которую следует избегать. Такое имя предопределенных данных характерно для удаленных из метаданных предопределенных элементов, при отключенном автоматическом обновлении предопределенных.
Предопределенные элементы можно редактировать, удалять, помечать на удаление. Имеются специальные права для управления ограничениями на удаление предопределенных.
Рассмотрим следующий пример. В некоторой информационной базе в плане счетов находится элемент данных с кодом А. В какой-то момент решили добавить предопределенный элемент А с кодом А. При реструктуризации в базе данных он будет создан, но существующие ссылки будут ссылаться на существовавший ранее объект данных. Выполнив следующую последовательность команд, можно сделать существующий объект предопределенным:
В результате при обращении к предопределенному элементу А будет возвращен существовавший ранее объект данных А.
Свойство ИмяПредопределенныхДанных доступно в запросах (поле выбора и в условиях), в формах, таблицах и др. Данное свойство обладает особенностями сортировки: сортировка выполняется по внутреннему ключу, а не по строке.
Работа с разделителями
Предопределенные элементы могут использоваться в информационных базах, имеющих общие реквизиты, разделяющие информационную базу в режиме Независимо или Независимо и совместно .
Рассмотрим работы с предопределенными элементами с различными режимами разделения на примере справочника.
Вариант 1. Общий реквизит разделяет информационную базу в режиме Независимо . При получении ссылки на предопределенный элемент выполняется запрос к данным таблицы. Поэтому перед получением ссылки на предопределенный элемент необходимо, чтобы в сеансе было установлено значение и включено использование реквизита, являющегося разделителем. При обращении к данным таблицы предопределенные элементы будут созданы, за исключением случаев:
- Предопределенные элементы уже были созданы (проинициализированы) ранее.
- Отключено автоматическое обновление предопределенных данных.
Вариант 2. Общий реквизит разделяет информационную базу в режиме Независимо и совместно , использование реквизита выключено в текущем сеансе работы. При попытке получить ссылку на предопределенный элемент вызывается исключение. При просмотре данных будут отображены все существующие записи таблицы. Независимо от текущего режима обновления предопределенных данных предопределенные данные создаваться не будут, даже если их нет.
Вариант 3. Общий реквизит разделяет информационную базу в режиме Независимо и совместно , использование реквизита включено в текущем сеансе работы. При попытке получить ссылку на предопределенный элемент будет возвращена ссылка на предопределенный элемент из текущей области данных. Если запрашиваемая ссылка отсутствует (например, удалена пользователем), то вызывается исключение. При обращении к данным таблицы предопределенные элементы будут созданы, за исключением случаев:
- Предопределенные элементы уже были созданы (проинициализированы) ранее.
- Отключено автоматическое обновление предопределенных данных.
Внутренний идентификатор
Предопределенные элементы имеют уникальный идентификатор. Уникальность идентификатора проверяется в пределах независимых областей информационной базы данных, по аналогии с другими объектами данных.
Связь предопределенного элемента с метаданными осуществляется через свойство ИмяПредопределенныхДанных .
Обновление конфигурации базы данных
При отключении режима совместимости 8.3.2 или ниже:
- Изменяется структура таблиц. Добавляются новые служебные таблицы. Это требует монопольного доступа к информационной базе
- Существующие предопределенные элементы модифицируются, внутренние идентификаторы не изменяются. Такие элементы могут безболезненно возвращены к режиму совместимости 8.3.2 или ниже.
- Включаются новые возможности по работе с предопределенными элементами.
При любом обновлении конфигурации с отключенным режимом совместимости (данные действия выполняются только если режим обновления предопределенных элементов требует обновления предопределенных данных):
- Создаются новые предопределенные элементы, которые были добавлены по отношению к конфигурации базы данных. Например: Если в конфигурации базы данных есть предопределенный элемент с именем А и добавили предопределенный элемент с именем Б в конфигурации будет создан предопределенный элемент с именем Б. Предопределенный элемент с именем А не будет создан, даже если он был удален пользователем из данных. Предопределенные элементы создаются только в тех областях, которые были проинициализированы: либо пользователь уже обращался к предопределенным данным из этой области, либо с помощью специального метода языка ИнициализироватьПредопределенныеДанные().
- Удаленные по отношению к конфигурации базы данных предопределенные элементы помечаются на удаление и у них сбрасывается признак предопределенного. Например: в конфигурации базы данных имеются элементы А и Б и в конфигурации удален элемент Б. в данных при реструктуризации объекты данных, связанные с элементом Б (если они есть) будут помечены на удаление и у него будет сброшен признак предопределенного. Свойство ИмяПредопределенныхДанных будет пустым.
- Модифицированные в конфигурации предопределенные элементы, модифицируются в данных, если они не редактировались пользователем.
При включении режима совместимости:
- Изменяется структура таблиц. Удаляются служебные таблицы. Это требует монопольного доступа к ИБ
- Существующие предопределенные элементы проверяются на возможность возврата к режиму совместимости 8.3.2 или ниже. Если возврат невозможен – в конфигураторе выводится соответствующее предупреждение. Несовместимые предопределенные элементы будут помечены на удаление и будет сброшен признак предопределенного элемента. Недостающие предопределенные элементы будут созданы.
- Выключаются новые возможности по работе с предопределенными элементами.
Поведение идентификаторов предопределенных элементов при копировании и объединении конфигураций
В отличие от идентификаторов объектов метаданных, идентификаторы предопределенных элементов при копировании не изменяются. Таким образом, два различных объекта метаданных могут иметь предопределенные элементы с одинаковыми идентификаторами.
Теперь рассмотрим, как описанные принципы влияют на поведение предопределенных элементов в различных механизмах платформы «1С:Предприятие 8».
Объединение конфигураций
При объединении конфигураций сопоставление между предопределенными элементами выполняется только по идентификатору, а не по имени или коду. Это следует учитывать при выборе правила объединения свойства Предопределенные данные .
Рассмотрим следующую ситуацию. Вы разрабатываете конфигурацию и устанавливаете ее у заказчика. В процессе настройки возникает необходимость срочной доработки, в частности, добавления предопределенного элемента. Затем в своей основной разрабатываемой конфигурации вы «синхронизируете» изменения, добавляя такой же элемент, осуществляете еще какие-то доработки и приносите новую версию к заказчику.
Если при выполнении объединения конфигураций оставить правило по умолчанию — Взять из конфигурации поставщика , то в результате останется только «ваша» версия элемента. При выполнении обновления конфигурации информационной базы, как было описано выше, будет создан новый объект, а старый помечен на удаление.
Если ссылок много, а дальнейшие объединения с другой конфигурацией не предполагаются (в описываемом сценарии это не так, но, может, вы просто хотите однократно добавить в конфигурацию некоторые объекты из другой), можно поступить иначе. При объединении для предопределенных данных установить правило Объединять с приоритетом. (приоритет будет влиять на порядок и место в иерархии предопределенных элементов с одинаковым идентификатором). После выполнения объединения в конфигурации будут присутствовать оба элемента, и старый и новый. Новый можно удалить (до выполнения обновления конфигурации базы данных). Главное, только их не перепутать. Для этого перед сравнением / объединением можно в основной конфигурации временно переименовать элемент, а потом вернуть обратно. При таком алгоритме, предопределенные элементы конфигурации из файла, которые не имеют аналогов, будут добавлены, а «конфликтные» нет.
Наконец, следует напомнить, что если из файловой конфигурации новых предопределенных данных добавлять не надо, то для свойства Предопределенные данные можно отключить пометку (флажок) объединения. При этом объединение конфигураций в целом будет выполнено, а предопределенные данные останутся старыми.
Однако различия в предопределенных данных не всегда приводят к подобным проблемам. Рассмотрим другой возможный сценарий. Вы выгружаете конфигурацию в файл, затем редактируете ее где-то в стороне, например, дома. В процессе редактирования добавляются новые предопределенные элементы и, возможно, удаляются или редактируются существующие. Затем выполняется объединение новой версии с оригинальной конфигурацией. В этом случае можно оставить правило объединения Взять из файла . Как уже отмечалось, в процессе перемещения между различными конфигурациями идентификаторы элементов не изменяются, и все старые элементы вернуться со своими оригинальными идентификаторами.
Режимы обновления предопределенных данных
С целью более удобной организации обмена предопределенными данными реализован механизм управления режимами обновления предопределенных данных. Режим обновления предопределенных задается отдельно для каждого объекта метаданных.
Режим обновления можно задать:
- В метаданных, с помощью свойства ОбновлениеПредопределенныхДанных .
- В данных, с помощью метода УстановитьОбновлениеПредопределенныхДанных .
Итоговое значение, которое будет определять необходимость создавать предопределенные данные при реструктуризации, при первом обращении к таблице или при инициализации предопределенных данных информационной базы, вычисляется по следующим правилам:
- Сначала значения Авто в метаданных и в данных подменяются ОбновлятьАвтоматически в центральном узле и в НеОбновлятьАвтоматически в периферийных узлах.
- Затем по условию <Значение в данных> И <Значение в метаданных> определяется необходимость обновлять предопределенные.
Конфигурация центрального узла:
Значение в метаданных – ОбновлятьАвтоматически .
Значение в данных – Авто .
Значение в данных подменяется на ОбновлятьАвтоматически .
ОбновлятьАвтоматически И ОбновлятьАвтоматически = ОбновлятьАвтоматически .
Таким образом, для этого объекта метаданных будет выполняться автоматическое обновление предопределенных данных.
Конфигурация периферийного узла:
Значение в метаданных – Авто .
Значение в данных – ОбновлятьАвтоматически .
Значение в метаданных подменяется на НеОбновлятьАвтоматически .
НеОбновлятьАвтоматически И ОбновлятьАвтоматически = НеОбновлятьАвтоматически.
Таким образом, для этого объекта метаданных не будет выполняться автоматическое обновление предопределенных.
Данные режимы позволяют установить дополнительные правила для удобного обмена предопределенными данными.
Если итоговый режим равен ОбновлятьАвтоматически :
- Предопределенные элементы обрабатываются при реструктуризации.
- Предопределенные элементы создаются при первом обращении к таблице, если они не создавались до этого.
- Предопределенные элементы создаются при вызове метода ИнициализироватьПредопределенныеДанные() , если они не создавались до этого.
Если итоговый режим равен НеОбновлятьАвтоматически :
- Предопределенные элементы не обрабатываются при реструктуризации
- Предопределенные элементы не создаются при первом обращении к таблице.
- Предопределенные элементы не создаются при вызове метода ИнициализироватьПредопределенныеДанные .
Обмен данными
Предопределенные объекты данных передаются по аналогии с другими объектами данных.
Рассмотрим следующий сценарий. В обмене участвуют две информационные базы, имеющие независимые (разные) конфигурации. В этих конфигурациях есть справочники, между которыми установлена связь. В обеих конфигурациях мы добавили предопределенный элемент, имеющий идентичное имя. В конфигурации 1 обновление предопределенных для этих справочников выполняется автоматически, а в конфигурации 2 автоматическое обновление предопределенных не выполняется. При обновлении конфигурации (при первом обращении или при инициализации информационной базы) предопределенные элементы будут созданы в конфигурации 1 и не будут созданы в конфигурации 2. После формирования обменного пакета из конфигурации 1 в конфигурацию 2 предопределенные элементы передаются вместе с другими объектами данных и автоматически связываются по имени предопределенного.
Проверка изменения данных при записи объектов
В некоторых случаях при записи объектов возникает необходимость проверки, какие данные объекта были изменены и какие были значения до изменения.
Допустим, при записи документа, может возникнуть потребность проверить, не изменилась ли дата документа, и если дата изменилась, то откорректировать движения документа, которые не обновляются при его проведении (например, вводятся вручную).
На первый взгляд видится возможность запомнить старое состояние реквизита в переменной модуля объекта, анализировать его при записи документа, и соответственно при записи запоминать новое значение для анализа в процессе следующей записи. Однако этот метод является неправильным. Дело в том, что запись объекта происходит в транзакции. Соответственно, тот факт, что данные записаны, еще не означает, что они действительно будут изменены в базе данных. Разработчик прикладного решения не имеет возможности обработать успешное или неуспешное завершение транзакции. Соответственно нет возможности и обеспечить хранение в модуле значения реквизита адекватно соответствующего тому значению, которое хранится в базе данных.
Правильным способом реализации такой проверки является считывание значений тех реквизитов, изменения которых нужно анализировать, непосредственно из базы данных.
Например, считывание может быть выполнено обращением через ссылку:
Однако следует учитывать, что при обращении к ссылке считывается весь объект целиком. То, что он ранее считывался и находится в кеше, здесь не поможет, так как при работе транзакции используется отдельный кеш. Соответственно, затраты на получение одного или двух реквизитов могут оказаться неоправданно большими. Поэтому можно рекомендовать для считывания отдельных реквизитов использовать запросы. Например:
В этом случае из базы данных будет считан ровно один реквизит, который требуется анализировать.
Заметим, что таким способом можно, например, определить, что объект помечается на удаление. Для этого достаточно проверить, изменение поля ПометкаУдаления .
Однако если нам нужно обработать изменение реквизита после записи документа, например, в обработчике ПриЗаписи , то, разумеется, считывание данных из базы данных не подходит, так как информация в базе данных уже изменена. В этом случае нужно само считывание выполнять в обработчике ПередЗаписью и запоминать считанные значения в переменных модуля. А уже анализ выполнять в обработчике ПриЗаписи .
3 способа увеличить быстродействие 1С без привлечения программиста
Совет1: Отключить полнотекстовый поиск*
Большинство бухгалтеров не знают о существовании данной функции и никогда ею не пользуются (Сервис — Поиск данных)
Механизм полнотекстового поиска в 1С позволяет находить информацию в 1С по ключевым словам (по аналогии с поиском в интернете, когда вы вводите слово, и вам выдаются результаты запросов). При этом время поиска существенно зависит от объемов базы и может занимать несколько часов. Отключение механизма полнотекстового поиска не влияет на другие функции и стабильность работы в 1С.
Механизм полнотекстового поиска в 1С по умолчанию включен. Чтобы отключить полнотекстовый поиск, нужно зайти Операции — Управление полнотекстовым поиском-Настройка и убрать признак «Разрешить полнотекстовый поиск»
Отключение механизма полнотекстового поиска осуществляется в монопольном режиме (никто не должен работать в программе, кроме вас)**
Отключение механизма полнотекстового поиска дает увеличение производительности до 10%.
Совет2: Пересчет итогов*
Большинство бухгалтеров не знают о существовании данной операции, а ее необходимо выполнять каждый месяц.
Итоги — это механизмы 1С для быстрого доступа к данным при формировании отчетов и выполнении различных вычислительных операций.
Для того, чтобы выполнить пересчет итогов требуется зайти в Операции — Управление итогами, установить дату по которую рассчитать итоги (начало текущего месяца) у раздела «Все регистры» и нажать кнопку «Выполнить»
Пересчет итогов осуществляется в монопольном режиме (никто не должен работать в программе, кроме вас)**
Пересчет итогов дает увеличение производительности до 10%.
Совет3: Отключить версионирование объектов***
Большинство бухгалтеров не знают о существовании данной функции и не используют ее.
В отличие от стандартного журнала регистрации версионирование объектов позволят хранить информацию не только о том, какой пользователь работал с документом, но и что именно он изменил (Сервис — История изменения объектов). Данный режим бывает полезен, но рекомендуется включать его только для определенного списка документов, т.к. он ведет к снижению производительности 1С и росту информационной базы
Настройка версионирования осуществляется через Операции — Настройки программы —Версионирование. Если настройка не требуется , то нужно убрать признак «Использовать версионирование объектов».
Если настройка нужна для определенного перечня документов, то зайти в «Настройку версионирования объектов» и правой кнопкой мышки установить настройку «Версионировать» для нужных объектов**
Отключение версионирования дает увеличение производительности до 5%.
Если Вы выполнили все рекомендации, но 1С по-прежнему работает медленно, предлагаем Вам воспользоваться нашей услугой Ускорение работы 1С.
Автор статьи: Руководитель отдела сопровождения Загибалова Елена. Дата обновления статьи 17.08.2016
*Для конфигураций на базе «1С:Управление Производственным предприятием», «1С:Комплексная автоматизация», «1С: Бухгалтерия предприятия 2.0», «1С:Управление Торговлей 10.3»
**Перед выполнением регламентных операций с базой обязательно создание копии базы.
***Для конфигураций на базе «1С:Управление Производственным предприятием», «1С:Комплексная автоматизация».
Подпишитесь на нашу рассылку
и получите еще больше статей от экспертов по 1С!
Читайте также:
- Как пользоваться программой teamviewer
- Как удалить ereader prestigio с планшета
- Дискорд как замутить человека в чате
- Программа для отжиманий на айфон
- Как выглядит программа itunes для айфона
Записки IT специалиста
Вынесенный нами в заголовок статьи вопрос является актуальным для многих системных администраторов, работающих с данным продуктом. По мере возможностей мы стараемся рассказывать о параметрах, влияющих на производительность 1С и развенчивать популярные мифы. Сегодня, на примере одного недавнего случая, мы хотим рассказать вам об еще одном аспекте, способном серьезно влиять на производительность — регламентных заданиях.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Начнем с реального случая. Не так давно к нам обратился один наш клиент с жалобой на «тормоза» 1С у одного из его сотрудников. Симптомы выражались в том, что через некоторый промежуток времени конфигурация Управление Торговлей 10 начинала сильно тормозить, а проще говоря подвисала на какое-то время.
При более подробном разборе ситуации выяснилось, что это происходит только у одного сотрудника, причем на любом рабочем месте, происходит давно, но если раньше «тормоза» продолжались около секунды, то теперь, после обновления, они могут продолжаться до 15-20 секунд, что делает работу крайне некомфортной.
В принципе, исходных данных уже достаточно, чтобы сделать первые выводы. Приведем их еще раз:
- «Тормоза» происходят постоянно, с определенной периодичностью
- «Тормозит» только у одного пользователя
- «Тормозит» на любом рабочем месте
Чтобы подтвердить свои догадки заглянем в Настройки параметров учета:
Действительно, «проблемный» пользователь указан как пользователь для выполнения регламентных заданий. Как выяснилось, когда-то давно от имени этого пользователя работало задание автообмена РИБ. Осталось посмотреть, что именно являлось причиной эпизодического «торможения». Это тоже несложно сделать:
А вот и «виновник торжества» — задание обновления индекса полнотекстового поиска, которое запускалось один раз в 2,5 минуты. В данном случае проблема была полностью решена отключением выполнения регламентных заданий под этим пользователем, однако это не всегда возможно или целесообразно, поэтому ниже мы рассмотрим каким образом можно управлять регламентными заданиями и как сделать так, чтобы они не оказывали негативного влияния на производительность.
Обычное приложение
В конфигурациях на основе обычного приложения единого инструментария для управления регламентными заданиями нет. Во многом это связано с тем, что на момент их первоначальной разработки сама концепция регламентных заданий была развита довольно слабо.
Управление многими регламентными заданиями производится через настройку связанных с ними подсистем. Например, настройки регламентных заданий, связанных с обменом данными следует искать в настройках обмена, связанные с ЕГАИС в настройках торговлей алкоголем и т.д.
На первый взгляд все довольно логично, но отсутствие единого инструмента затрудняет возможность контроля за настроенными регламентными заданиями и оптимальностью их настроек. Хорошо, если заданий одно — два, а если их больше или, как в нашем случае, есть подозрение на какое-либо из регламентных заданий, но вы не имеете представления кто и что настраивал в этой базе.
В этом случае следует воспользоваться внешней обработкой КонсольЗаданий (JobsConsole), которая входит в набор стандартных обработок на диске ИТС. Обработка предоставляет единый интерфейс для всех заданий и позволяет выполнять их централизованную настройку, а также контролировать выполняющиеся в текущее время задания.
Данный список нужно тщательно изучить, все ненужные задания следует отключить, а у нужных привести расписание в соответствие с насущными потребностями и здравым смыслом. Например, в нашем случае, нет никакой необходимости обрабатывать ответы ЕГАИС раз в 30 секунд (эта настройка сделана для тестирования) и в рабочем режиме вполне достаточно будет делать это скажем раз в полчаса.
Управляемое приложение
В конфигурациях на основе управляемого приложения регламентным заданиям отведена более значительная роль, с их помощью могут выполняться различные задания по обслуживанию информационной базы и поддержанию ее в актуальном состоянии, но в тоже время именно регламентные задания чаще всего становятся причиной «тормозов».
Для управления регламентными заданиями предназначен отельный пункт в меню Администрирование — Поддержка и обслуживание.
Сразу можно отметить, что заданий значительно прибавилось (для примера мы взяли одну и ту же конфигурацию — Розница) и их грамотная настройка способна существенно улучшить производительность информационной базы. Настройки по умолчанию выполнены 1С исходя из потребностей средней сферической фирмы в вакууме и не являются оптимальными даже близко.
Прежде всего отключаем то, что явно ненужно, с чем вы не работаете. Потом оптимизируем расписание редко используемых функций, скажем обновление классификатора банков в Рознице, как и проверку контрагентов, можно проводить раз в неделю в нерабочее время или в конце (начале) рабочего дня.
Отдельное внимание следует уделить всему, что связано с поисковым индексом. Полнотекстовый поиск безусловно удобная вещь, но работа с его индексом является весьма и весьма ресурсоемкой задачей. Поэтому не стоит впадать в крайность и отказываться от него, но следует серьезно пересмотреть и настроить его параметры.
Начнем с извлечения текста, данная операция позволяет производить поиск по содержимому приложенных файлов, поэтому если вы не используете их, не производите поиск по ним, или у вас там одни изображения — то данную операцию можно отключить, в любом случае выполнять ее раз в 85 секунд — явный перебор.
Обновление индекса ППД — одна из самых ресурсоемких операций, по умолчанию выполняется раз в минуту.
А теперь подумаем, как часто в базе добавляется либо обновляется информация, по которой вы наиболее часто проводите поиск? Явно не каждую минуту, поэтому вполне достаточно будет обновлять индекс гораздо реже: раз час, раз в день или вообще раз в неделю.
Тоже самое относится и к слиянию индекса ППД, если вы обновляете индекс раз в день, то следует настроить слияние на выполнение раз в неделю, при этом выбрав в качестве начала задания наименее мешающее работе время.
Эти несложные операции позволят вам без особого ущерба для функциональности конфигурации поднять комфортность работы с ней на новый уровень за счет отказа от частого выполнения достаточно ресурсоемких операций. Только не следует впадать в крайности, грамотно рассудите, насколько вам необходимы те или иные возможности и как часто следует выполнять связанные с ними задания.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Механизм полнотекстового поиска 1С позволяет найти текстовую информацию, размещенную почти в любом месте конфигурации. По умолчанию возможность полнотекстового поиска включена, но далеко не всегда используется.
Причина, по которой возникает необходимость отключения полнотекстового поиска в 1С — увеличение производительности системы. Помимо этого, скорость поиска зависит от объемов базы, а значит на больших базах он может занимать значительное время.
Отключение полнотекстового поиска не влияет на другие функции и стабильность работы 1С, но есть одна особенность — оно должно осуществляется в монопольном режиме, то есть в данный момент никто не должен работать в программе, кроме вас.
Последовательность шагов для отключения
1. По умолчанию, пункт меню «Все функции», через который можно управлять полнотекстовым поиском, скрыто. Поэтому сначала последовательно открываем пункты «Файл» > «Сервис» > «Параметры».
2. Затем в открывшемся окне нужно поставить отметку «Отображать команду «Все функции».
3. После этого заходим в пункт меню «Все функции». Это может не получиться, если у Пользователя, под именем которого вы вошли в программу, не установлено разрешение на это.
4. Выбираем пункт «Управление полнотекстовым поиском».
5. И отключаем полнотекстовый поиск.
Для включения полнотекстового поиска проводим аналогичные действия.
Что нового для вашей 1С?
Рассылка осуществляется в день выхода обновления. Никакой рекламы, только полезная информация. Посмотрите пример →
Обновление индекса ППД 1С 8.3 что это
В программах 1С есть разные способы поиска информации. Один из них — Полнотекстовый поиск. При работе с поиском у пользователей 1С зачастую возникает вопрос: «Индекс ППД 1С 8.3 — что это?» Если коротко объяснить, индекс позволяет определить, где хранятся те или иные данные в базе 1С.
Рассмотрим, как настроить полнотекстовый поиск и обновить индекс ППД на примере 1С:Бухгалтерия предприятия.
Полнотекстовый поиск и его настройка
Где находится полнотекстовый поиск
Для вызова полнотекстового поиска нажмите на значок лупы в верхней области программы или комбинацию клавиш Ctrl+Shift+F на клавиатуре.
В окне поиска введите текст и нажмите кнопку Найти .
В форме Область поиска уточните условия поиска Везде или искать данные по определенным разделам.
Очистка и обновление индекса
Если поиск работает некорректно или медленно, его следует очистить и обновить. Для этого зайдите в меню Администрирование – Настройки программы – Общие настройки .
В разделе Поиск данных нажмите на ссылку Настроить .
Нажмите кнопку Очистить индекс , затем Обновить индекс .
Индекс обновлен. Отметим, что 1С обновляет индексы по расписанию с помощью регламентных заданий Обновление индекса ППД и Слияние индекса ППД .
Разберем подробнее, как это происходит.
Обновление индекса ППД 1С 8.3 что это
Зайдите в меню Администрирование – Настройки программы – Обслуживание .
В разделе Регламентные операции перейдите по ссылке Регламентные и фоновые задания .
Найдите пункт Обновление индекса ППД .
В настройках расписания регламентного задания видно, что по умолчанию оно выполняется каждую минуту.
Обновление индекса тратит довольно много ресурсов компьютера, и для ускорения работы можно изменить расписание. Например, обновлять индекс раз в день. Для этого на закладке Дневное в поле Повторять через поставьте 0.
Также подберите наиболее удобное время работы регламентного задания, когда в программе работает меньше пользователей.
Слияние индекса ППД 1С 8.3 — что это?
Это еще одно регламентное задание, влияющее на полнотекстовый поиск.
По умолчанию это задание выполняется раз в день. Если вы уменьшили частоту выполнения Обновления индекса ППД , то внесите изменения и для этого задания. Например, установите его выполнение один раз в неделю. Для этого на закладке Общие в поле Повторять каждые введите цифру 7.
Как отключить полнотекстовый поиск
Отключите полнотекстовый поиск, если хотите увеличить скорость работы программы. Но при этом убедитесь, что поиск данных никто не планирует использовать.
Для отключения поиска зайдите в меню Администрирование – Настройки программы – Общие настройки и снимите флажок Полнотекстовый поиск .
См. также:
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
- У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.Выражение «Номенклатурная группа в 1С» понятно далеко не каждому бухгалтеру.Если ваше авто имеет название, несколько отличающееся от того, что.Фирма 1С регулярно выпускает обновления платформы 1С Предприятие, расширяя ее.
(6 оценок, среднее: 5,00 из 5)
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Вы можете задать еще вопросов
Доступ к форме «Задать вопрос» возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку «Задать вопрос», я соглашаюсь с
регламентом БухЭксперт8.ру >>
Поддерживающий семинар по зарплатным изменениям в 1С:Бухгалтерия 3.0 за июнь 2022
Прослеживаемость импортных товаров – новинки в 1С
Изменения в 2022 году, о которых нужно знать бухгалтеру
Изменения в учетной политике и в учете затрат в 1С
Комиссионная торговля при работе с маркетплейсами – изменения в 1С
Новая система Налогообложения: Автоматизированная УСН. Уже здесь
Огромная благодарность за поддерживающий вебинар по ЗУП как всегда подробно и профессионально
Доброго дня, коллеги!
Далеко не все свойства реквизитов документа являются расширяемыми. В качестве альтернативного варианта можно рассмотреть программное изменение значений свойств в расширении. Именно такой вариант тренер предложил слушателю в рамках темы “Доработка управляемых форм в расширениях” курса «Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки».
Вопрос
Здравствуйте, вопрос следующий. В документе в табличной части есть реквизит Характеристика со свойством “Проверка заполнения”, значение которого установлено как “Выдавать ошибку”. Перенес этот реквизит в расширение, но свойства этого реквизита не доступны для редактирования. Хотел для него в расширении проставить значение “Не проверять”.
Ответ
Добрый день! Вы не сможете поменять свойство “Проверка заполнения” в расширении у заимствованного реквизита, но можете изменить обработку ОбработкаПроверкиЗаполнения() в модуле объекта через расширение, так чтобы реквизит, даже не заимствованный, не проверялся. Вот пример кода:
ИндексПоляПоставщик = ПроверяемыеРеквизиты.Найти("ДенежныеСредства.Касса"); Если ИндексПоляПоставщик <> Неопределено Тогда ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик); КонецЕсли;