Данные были изменены или удалены другим пользователем?

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

Исправляем ситуацию

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

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

Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.ВерсияДанных КАК ВерсияДанных, | Номенклатура.ПометкаУдаления КАК ПометкаУдаления, | Номенклатура.Родитель КАК Родитель, | Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | Номенклатура.Код КАК Код, | Номенклатура.Наименование КАК Наименование, | Номенклатура.Артикул КАК Артикул, | Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры, | Номенклатура.Предопределенный КАК Предопределенный, | Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | «; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл КонецЦикла;

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.

Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.ВерсияДанных КАК ВерсияДанных, | Номенклатура.ПометкаУдаления КАК ПометкаУдаления, | Номенклатура.Родитель КАК Родитель, | Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | Номенклатура.Код КАК Код, | Номенклатура.Наименование КАК Наименование, | Номенклатура.Артикул КАК Артикул, | Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры, | Номенклатура.Предопределенный КАК Предопределенный, | Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | НЕ Номенклатура.ЭтоГруппа «; НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию(«Мебель»); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу(«НужнаяГруппаЭлементов»)); КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник

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

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

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

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

Возможно, их изменил другой пользователь или мы программно их изменили, но форму не обновили. Решить эту проблему можно, используя метод управляемой формы Прочитать(). Этот метод обновляет объект управляемой формы.
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = «УправлениеКартамиYandex_ВыбраныКоординаты» Тогда
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
ЭтаФорма.Прочитать();
ЗаполнитьКоординаты(Параметр);
ЭтаФорма.Прочитать();
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьКоординаты(Параметр)
МассивСтрок = РаботаСоСтроками.РазложитьСтрокуВМассив(Параметр, «;»);
Если МассивСтрок.Количество()>0 Тогда
текОбъект = Объект.Ссылка.ПолучитьОбъект();
текОбъект.Долгота = СокрЛП(МассивСтрок);
текОбъект.Широта = СокрЛП(МассивСтрок);
текОбъект.Записать();
КонецЕсли;
КонецПроцедуры
В примере, через обработку оповещения передаем параметр в процедуру, в которой присваиваем полученные координаты долготы и широты и записываем объект. Потом, используя метод Прочитать(), обновляем объект формы. В данном случае метод вызван 2 раза в связи с тем, что до заполнения координат, он изменяется, а второй раз — чтобы прочитать изменения, которые сделали мы.

Даты запрета изменения данных

Предназначена для установки даты запрета изменения (загрузки) данных.

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

Установка даты запрета изменения данных и различные настройки, связанные с ней, выполняются по соответствующей команде в разделе Администрирование — Настройка пользователей и прав — Дата запрета изменения.

Установка даты запрета загрузки данных выполняется по соответствующей команде в разделе Синхронизация данных.

Также можно найти эти команды в разделе Интегрируемые подсистемы.

О запрете изменения (загрузки) данных

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

Проявление установленного запрета

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

Установка даты запрета

  • В программе предусмотрена возможность установить или отключить дату запрета изменений (дату запрета загрузки данных). Для этого в поле Установка даты запрета выберите соответствующее значение:
    • Нет запрета изменения (загрузки) данных — в этом случае отключаются все установленные ранее даты запрета.
    • Для всех пользователей (Для всех информационных баз). При этом становятся доступными поля Способ указания даты запрета и Дата запрета.
    • По пользователям (По информационным базам). Эту возможность можно использовать, если дату запрета необходимо установить для конкретного пользователя или группы пользователей (для конкретной информационной базы), или разным пользователям (информационным базам) необходимо установить разные значения даты запрета.
      • При этом становится доступным список, в который можно добавлять пользователей/группы пользователей (информационные базы) и настраивать для каждого из них свое значение даты запрета.
      • Список состоит из колонок:
        • Пользователь, группа пользователей (Программа: информационная база — наименование программы и информационной базы для этой программы).
        • Комментарий — напишите дополнительную информацию о пользователе (об информационной базе).
      • В списке по умолчанию всегда присутствует элемент <Для всех пользователей> (<Для всех информационных баз>). Элемент нельзя удалить или изменить. Настройки даты запрета, выполненные для этого элемента, будут использоваться для всех пользователей (информационных баз), кроме тех, которые содержатся в списке.
      • При необходимости добавьте в список нужных пользователей /группу пользователей (информационные базы):
        • Нажмите Подобрать, для того чтобы выбрать из списка несколько пользователей (информационных баз).
        • Нажмите Все действия (в интерфейсе Такси Еще) — Добавить над списком, для того чтобы Выбрать пользователя/группу пользователей (программу и информационную базу для этой программы. Для каждой программы можно также выбрать элемент <Все информационные базы>).
  • Для того чтобы выполнить настройку даты запрета, необходимо выделить в списке нужного пользователя/группу пользователей (информационную базу) или элемент <Для всех пользователей> (<Для всех информационных баз>), а сами настройки выполнить ниже в полях Способ указания даты запрета и Дата запрета.

Способы указания даты запрета

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

  • Общая дата – при этом способе одна дата запрета задается для всех элементов данных программы.
  • По разделам – для каждого раздела программы устанавливается своя дата запрета.
    • Когда дата запрета задается по разделам, становится доступным список, в который можно добавлять Разделы (соответствующей командой) и указывать для каждого раздела свое значение даты запрета. Список состоит из колонок:
      • Раздел, объект — в данном случае в колонке перечисляются разделы программы;
      • Дата запрета — выберите из списка тип значения даты запрета (можно выбрать произвольную дату или одну из относительных дат);
      • Запрет изменения по — для произвольной даты напишите или выберите значение, для относительной даты значение проставляется программой автоматически.
    • В списке по умолчанию присутствует элемент <Общая дата>. Значение даты запрета для этого элемента будет использоваться для всех разделов по умолчанию, кроме тех, которые уже содержатся в списке.
    • Если в поле Установка даты запрета указано Для всех пользователей (Для всех информационных баз), то удалить элемент <Общая дата> и разделы нельзя, при этом по умолчанию доступны все разделы, их можно только Изменить — указать Дату запрета.
    • Если в поле Установка даты запрета указано По пользователям (По информационным базам), то удалить элемент <Общая дата> и разделы можно. Если дата запрета изменений устанавливается для определенного пользователя/группы пользователей (информационной базы), то необходимо выбрать один или несколько разделов.
      • Для добавления раздела выполните команду Разделы, выберите нужные с помощью флажков, затем нажмите кнопку ОК.
  • По объектам – даты запрета задаются в разрезе объектов программы. Для каждого объекта устанавливается своя дата запрета. Если выбрано это значение, то становится доступным список, в который можно добавлять объекты (соответствующей командой) и указывать для каждого объекта свое значение даты запрета. Так же, как и в предыдущем способе, в списке для аналогичных целей содержится элемент <Общая дата>.
  • По разделам и объектам – даты запрета задаются и в разрезе разделов, и в разрезе объектов.
    • При этом становится доступным список, в который можно добавлять разделы и объекты, указывая для каждого раздела и каждого объекта свое значение даты запрета. Так же, как и в предыдущих способах, в списке содержится элемент <Общая дата> для аналогичных целей.
      • Для выбора разделов выполните команду Разделы.
        • Для выбора нескольких объектов в выделенном разделе выполните команду Подобрать.
        • Также в нужном разделе можно выполнить команду Добавить контекстного меню по правой кнопки мыши, затем указать объект с помощью кнопки Выбрать. Также можно воспользоваться аналогичной командой меню Все действия (в интерфейсе Такси Еще).

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

Дата запрета

  • При установке даты запрета можно задавать не только произвольную дату , но и относительную.
  • Значения относительных дат:
    • Конец прошлого года;
    • Конец прошлого квартала;
    • Конец прошлого месяца;
    • Конец прошлой недели;
    • Предыдущий день.
  • Для относительных дат (кроме значения Предыдущий день) можно задать количество дней «отсрочки» до установки даты запрета, в течение которых изменение данных все еще будет разрешено.
    • Для этого необходимо включить флажок Разрешить изменение данных до даты запрета. Затем задайте количество дней «отсрочки», например, в течение 10 дней после даты запрета.
  • Если установлена относительная дата, то для того, чтобы дата запрета изменения в будущем изменялась по заданным правилам автоматически, в программе используется регламентное задание «Пересчет текущих значений относительных дат запрета изменения».
  • Если по каким-либо причинам использование регламентных заданий невозможно (например, в файловом варианте работы программы и в других случаях может потребоваться выполнить пересчет текущих значений относительных дат запрета вручную), то перерасчет текущих значений относительных дат запрета можно выполнять с помощью команды Все действия (В интерфейсе Такси Еще) — Пересчитать даты. При этом команду необходимо выполнять периодически в соответствии с установленной относительной датой. Например, если установлено значение Предыдущий день, то команду необходимо выполнять ежедневно; если установлено значение Конец прошлого месяца, то команду необходимо выполнять ежемесячно.

Отчеты по датам запрета

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

  • по разделам/объектам: выберите отчет Даты запрета по разделам и объектам для пользователей (Даты запрета по разделам и объектам для информационных баз);
  • по пользователям (по информационным базам): выберите отчет Даты запрета по пользователям (Даты запрета по информационным базам).

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

Настройка прав доступа в 1С 8

Вопрос о настройке прав доступа в программах 1С возникает в двух случаях:

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

Права пользователя в 1С

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

При правильной настройке 1С система всегда ответит пользователю, если ему нельзя совершить то или иное действие с объектом: «у вас недостаточно прав для редактирования».

Пошаговая настройка прав доступа в 1С

Расскажем, как настроить права доступа на примере программы «1С:Бухгалтерия 8 редакция 3.0». Однако обратите внимание, что аналогичным образом настраиваются права доступа для пользователей и в других программных продуктах 1С. Например, инструкция также подойдет к «1С:Управление торговлей», «1С:Зарплата и управление персоналом», «1С:ERP» и другим ПП.

Шаг №1. Настройка пользователей и прав

В самом начале необходимо зайти в раздел настроек программы и выбрать раздел «Настройка пользователей и прав».

Это действие можно также выполнить на вкладке «Администрирование», если у вас есть необходимые права для действий.

Шаг № 2. Пользователи

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

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

Чтобы создать необходимую группу пользователей, их можно выбрать из базы. Здесь нужно проверить, что установлены флажки «Вход в программу разрешен» и «Показывать в списке выбора». Если их не будет, то при авторизации пользователь себя не увидит.

Шаг № 3. Роли для группы

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

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

Чтобы узнать, какие права откроются пользователю, нужно перейти во вкладку «Описание».

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

Шаг № 4. Профиль групп доступа

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

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

Шаг № 5. Ограничение на уровне записей

Речь идет о RLS (Record Level Security). Вы найдете необходимую колонку в «Отчете по правам пользователя», в разделе «Права доступа». Чтобы работать с ограничение на уровне записей, нужно установить соответствующий флажок во вкладке.

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

Почему? В этом случае система 1С каждый раз будет запрашивать информацию о том, разрешено ли пользователю просматривать какой-то файл.

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

Шаг № 6. Новые роли

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

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

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

К примеру, вы можете ограничить изменение документа только по одной организации.

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

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

Создание новых ролей возможно так же в пользовательском режиме (с ограничениями) — см. примечание в «Шаг №4».

Другие настройки 1С

Итак, вы настроили все права доступа в 1С, какие требовалось. Что же еще предлагает система?

Обратите внимание на следующие разделы:

  • «Копирование настроек»;
  • «Очистка настроек».

Их названия говорят сами за себя. Эти настройки относятся к внешнему виду отчетов программы.

Если вы зайдете в раздел «Настройки пользователей», то можете настроить такой внешний вид, какой вам понравится и какой будет более удобным.

Здесь выбранный флажок «Разрешить доступ внешним пользователям» откроет возможности для внешних пользователей. Такими пользователями могут быть покупатели вашего интернет-магазина, который работает на базе 1С.

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

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

Понравилась статья? Поделитесь с друзьями!

#1С:Бухгалтерия #Инструкция

Нет времени читать? Пришлем вам на почту!

Заказать бесплатную консультацию эксперта!

Заказать бесплатную консультацию эксперта!

Заказать бесплатную консультацию эксперта!

Заказать бесплатную консультацию эксперта!

Заказать бесплатную консультацию эксперта!

Заказать бесплатную консультацию эксперта!

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

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