ВсёПросто

Ошибки неуникальности записей в 1С

Содержание

Объекты доступа документов

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

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

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

Однако у пользователя в этом регисте указано, что для «Главного склада» за помещение «Продукты» отвечает Иванов, а за помещение «Холодильники» — Петров. При обновлении информационной базы платформа должна оставить только одну запись с ответственным. Но она не может решить за пользователя, кого поставить ответственным за «Главный склад» вцелом (Иванова или Петрова). Поэтому выдается сообщение об ошибке.

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

Смысл сообщения одинаков.

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

Для решения проблемы удаляем одну из записей, чтобы 1С однозначно знала, что за «Главный склад» отвечает Иванов.

Ошибки неуникальности записей в 1С

В типовых конфигурациях в большинстве случаев эта проблема решается разработчиком программно. Т.е. обновление конфигурации само при необходимости сворачивает записи регистра.

Однако в некоторых случаях (например, если выполняется обновление с пропуском части релизов, или конфигурация доработана) данные могут не свернуться и их нужно свернуть самостоятельно. Для того, чтобы определить, что именно изменилось, выполняем режим «Конфигурация» — «Сравнить конфигурации».

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

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

Инструкция по свертке неуникальных записей:

1. Открыть обработку. 2. Выбрать регистр сведений, в котором появились неуникальные записи. 3. Отметить измерения которые будут удалены при обновлении.

4. Нажать » дубли».

Обработка найдет дублирующиеся строки и свернет их в одну строку.
После этого обновление конфигурации пройдет корректно.

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

Read Full Article

Права доступа в 1С:Предприятии 8

В 1С:Предприятии различают два типа прав – основные и интерактивные.

Основные (неинтерактивные) – проверяются всегданезависимо от способа обращения к объектам информационной базы.

Интерактивные – проверяются при выполнении интерактивных операций (например, операция «Установить пометку удаления»).

Нужно учитывать, что проверку интерактивных прав можно обойти, создав, например, при конфигурировании форму самостоятельно и заменив стандартные команды своими, а проверку неинтерактивных прав нельзя обойти ни при каких обстоятельствах. Неинтерактивными правами защищается характерная для объекта фундаментальная функциональность, за это отвечают, например, такие права, как: «Добавление», «Чтение», «Изменение», «Удаление».

Для построения защищенных прикладных решений достаточно управлять только 4-мя основными правами доступа — «Добавление», «Чтение», «Изменение» и «Удаление».

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

Пример проверки прав из языка:

Копировать в буфер обменаПроцедура КнопкаНажатие(Элемент) Разрешено = ПравоДоступа(«ИнтерактивноеУдаление», Метаданные.Документы.Документ1);ЕслиНе Разрешено Тогда Предупреждение («Удалять не разрешено»);// … необходимые действияКонецЕсли// … необходимые действияКонецПроцедуры

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

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

Проверка основных и интерактивных прав используется расширениями формы, табличного поля и поля ввода (расширение формы определяется ее основным реквизитом, а табличного поля и поля ввода — типом редактируемых данных). Благодаря этому, если не установлено право «Просмотр», то форма списка или форма объекта не откроется, и будет выдано стандартное сообщение о нарушении прав доступа.

Рассмотрим проверку прав расширениями формы, табличного поля и поля ввода на примере документа:

Связанные права

Часть прав в системе 1С:Предприятия связаны друг с другом. Это означает, что основные права доступа, такие как «Чтение», «Изменение», «Добавление» и «Удаление» и некоторые другие могут влиять на права, отвечающие за такие операции с объектом, которые, в конечном счете, приведут к простейшим операциям. Например, нельзя разрешить право «Изменение», не выдав право «Чтение».

Интерактивные права напрямую зависят от их неинтерактивных аналогов, т.е. право «Интерактивное удаление» зависит от права «Удаление».

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

Допускается лишь установка неинтерактивного права и сброс интерактивного, но не наоборот. Например, нельзя разрешить интерактивное право «Интерактивное удаление» и запретить неинтерактивное «Удаление».

Зависимость прав может выстраиваться в сложные цепочки, например, у объекта «Документ» право «Интерактивная отмена проведения» зависит от прав «Отмена проведения» и «Просмотр» одновременно, где первое зависит от «Изменение», которое, в свою очередь, зависит от права «Чтение» (см. рисунок).

Ключевым является право «Чтение», при его отсутствии автоматически пропадают любые другие права на доступ к объекту.

Алфавитный список прав доступа 1С:Предприятия

Право доступаОписание
Automation Разрешает использование 1С:Предприятие в режиме automation.
Администрирование Разрешает административные действия, например, ведение списка пользователей или открытие конфигурации.
АктивныеПользователи Разрешает просмотр списка активных пользователей. Это право может использоваться при организации «гостевого входа» в прикладном решении.
ВводПоСтроке Разрешает использование режима ввода по строке для различных объектов.
ВнешнееСоединение Разрешает использование 1С:Предприятия через COM соединение.
Добавление Разрешает добавление объектов данного вида. Проверяется на уровне объекта и на уровне БД.
ЖурналРегистрации Разрешает просмотр журнала подключений и протоколов работы
Изменение Разрешает изменение объектов данного вида. Проверяется на уровне объекта и на уровне БД.
ИнтерактивнаяОтменаПроведения Разрешает интерактивную отмену проведения
ИнтерактивнаяПометкаУдаления Разрешает интерактивную установку пометки удаления
ИнтерактивноеДобавление Разрешает интерактивное добавление объектов данного вида
ИнтерактивноеОткрытиеВнешнихОбработок Разрешает открытие внешних обработок стандартными командами меню
ИнтерактивноеПроведение Разрешает интерактивное проведение документов данного вида
ИнтерактивноеПроведениеНеОперативное Разрешает интерактивное проведение (стандартными командами форм) документа в неоперативном режиме
ИнтерактивноеСнятиеПометкиУдаления Разрешает интерактивное снятие пометки на удаление
ИнтерактивноеУдаление Разрешает интерактивное непосредственное удаление
ИнтерактивноеУдалениеПомеченных Разрешает интерактивное удаление помеченных объектов
Использование Разрешает использование обработки, отчета, интерфейса
МонопольныйРежим Разрешает переключение в монопольный режим при работе в режиме 1С:Предприятия.
ОтменаПроведения Разрешает отмену проведения документов
Проведение Разрешает проведение документов
Просмотр Разрешает просмотр объектов (например, в списках)
Редактирование Разрешает редактирование объекта
Удаление Разрешает удаление
УправлениеИтогами Разрешает управление итогами регистра бухгалтерии и регистра накопления — установку периода, по который рассчитаны итоги, и пересчет итогов
Чтение Разрешает чтение данных из информационной базы

Типичные ошибки пользователей 1С Бухгалтерия 8. Курсы 1С Бухгалтерия

12 декабря 2016 года

В этой небольшой статье я попытаюсь собрать воедино типичные ошибки, которые совершают начинающие пользователи 1С Бухгалтерии 8.

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

Ниже приводится список наиболее распространённых «граблей», на которые не устают наступать пользователи на моих курсах по 1С Бухгалтерии, несмотря на многократные повторения.

«Кривая» дата документа

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

Закрывание окон крестиком по поводу и без

Аналогично предыдущему пункту, это вынесено в отдельную статью. Не забывайте, зачем вы изначально открывали то или иное окно!

Попытка писать там, где нужно выбирать

Как всем известно, в 1С Бухгалтерии есть поля, предназначенные для выбора значения. Такие поля обозначаются кнопкой с троеточием, буквой Т или стрелкой вниз в правой части поля. Вот два примера.

artemvm.info_0c393ce839951181982f6b556ec2a4d3 artemvm.info_0c393ce839951181982f6b556ec2a4d3

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

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

artemvm.info_0c393ce839951181982f6b556ec2a4d3

Из этого правила есть исключения, которые мы рассматриваем на моих курсах по 1С Бухгалтерии 8. Но в целом могу порекомендовать следовать правилу: видите поле с элементом для выбора — выбирайте!

Попытка печатать в поле табличной части, в котором нет курсора

Если вам требуется ввести данные в ячейку строки табличной части, то проследите чтобы данная ячейка была активна (как в Excel), иначе при попытке ввода текста сработает быстрый поиск! Пример приведён ниже.

artemvm.info_0c393ce839951181982f6b556ec2a4d3

Это была попытка напечатать текст в выделенной ячейке без её активации. Следовало сделать вот так.

artemvm.info_0c393ce839951181982f6b556ec2a4d3

Вот это — правильно. Ошибка очень распространённая. Чтобы печатать в ячейке, дважды щелкните на ней, либо выделите и нажмите F2!

Поля, отмеченные красным, заполнять обязательно!

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

artemvm.info_0c393ce839951181982f6b556ec2a4d3

Если пропустить такое поле, то документ не проведется.

Не путать кнопку Печать и вкладку Печать

Характерно для 1С Бухгалтерии 8.2 и ниже. Проблема связана с плохим знанием интерфейса Windows. На приведенном рисунке вкладка Печать подчеркнута сверху, а кнопка аналогичного названия — снизу.

artemvm.info_0c393ce839951181982f6b556ec2a4d3

Вкладка Печать предназначена для ввода данных печатной формы, а кнопка — для формирования этой самой печатной формы! Печатная форма по умолчанию — слева от кнопки печати (для 1С Бухгалтерии 8.2)

Стремление побыстрее нажать кнопку проведения / записи / OK

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

Не забывать ставить галочку Услуга у номенклатуры

Если номенклатура является услугой, то её следует заносить в группу Услуги и обязательно ставить галочку Услуга. Про особенности групп в справочнике Номенклатура я рассказывал в этой статье.

artemvm.info_0c393ce839951181982f6b556ec2a4d3

Табличные части могут быть длинными!

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

artemvm.info_0c393ce839951181982f6b556ec2a4d3

Ошибка эта из той же серии, что и пропуск полей. Про скрытую часть таблицы очень часто забывают. Обратите внимание на стрелку на рисунке — она показывает, что требуется прокрутить окно и дозаполнить то, что скрыто (в приведённом примере скрыта чуть ли не половина(!) таблицы)

Двойной щелчок для редактирования элемента

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

artemvm.info_0c393ce839951181982f6b556ec2a4d3

Нажимание кнопки, принадлежащей другому окну

Ниже приведён пример того, как НЕ НАДО делать.

artemvm.info_0c393ce839951181982f6b556ec2a4d3

Зелёным подчеркнута нужная кнопка, а красным — кнопка, принадлежащая СОВСЕМ ДРУГОМУ ОКНУ!

Это исключительно проблема с интерфейсом Windows (проблемы с умением определять границы окон и других объектов) и 1С Бухгалтерия («я ведь только учусь!!!») тут ни при чём! Конечно, иногда можно случайно промазать мышкой, задумавшись о чем-то. Но когда это происходит раз за разом, то не пора ли изучить интерфейс операционной системы?

Для большей убедительности привожу ту же самую картинку, на которой ГРАНИЦЫ нужного окна обведены зелёной линией. Стрелочка-указатель на правильную кнопку прилагается.
artemvm.info_0c393ce839951181982f6b556ec2a4d3

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

В полях с числами нули после запятой — дробная часть

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

artemvm.info_0c393ce839951181982f6b556ec2a4d3

В приведённом примере это не двадцать тысяч, а двадцать рублей!

Обратите внимание на то, что иногда в полях с суммами после запятой не два нуля, как и положено у копеек, а три (шутка разработчиков? привет «программистам» из центрального офиса 1С, не учившим математику в школе). Мне встречалось в одной из версий 1С Бухгалтерии даже пять нулей! Особенная путаница с тремя нулями. Не забывайте, что это копейки!

Быстрый поиск не по тому полю в таблице

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

Подведём итоги

Наверняка я что-то упустил, но перечислять все эти «грабли», на которые наступают почти все пользователи 1С Бухгалтерии, слишком долго. Если вспомню что-то ещё, то допишу.

Все эти ошибки, а также многие другие мы разбираем на моих курсах по 1С Бухгалтерии 8 Запомните типичные ошибки других людей и постарайтесь не совершать их сами! В бухгалтерии достаточно много других «заморочек», чтобы отвлекаться на такие мелочи..

Ошибки неуникальности записей в 1С

Часто ошибки возникают при обновлении конфигурации, — особенно если обновление «перескакивает» через несколько релизов. Рассмотрим причину появления и как исправить ошибку 1С «Записи регистра сведений стали неуникальными».

Отображение ошибки

Подобная ошибка может иметь два идентичных отображения от системы 1С:

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

Программные требования к регистрам

Мы знаем, что регистр (register, англ.) сведений формируется для хранения в виде записей (строк). Каждая из них характеризуется видами измерений (профилями) и ресурсов.

Измерения характеризуют разрезы (типы), в которых хранятся данные.  А ресурсы— непосредственно содержат их значения.

Например, register сведений «Цены товаров» имеет структуру, состоящую из двух видов профилей («Товар», «ВидЦен») и одного ресурса («Цена»):

Структура товаров в 1С

Таким образом, строки регистра в базе данных будут выглядеть так:

Строки регистра в реестре

Кроме того, при создании записи ей присваивается уникальный ключ. Формирование его системой происходит автоматически.

Одинаковыми считаются такие записи, ключи которых идентичны.

ВАЖНО. Итак — каждый register имеет один и только единый набор профилей. Строки этого регистра должны соответствовать этому набору.

Рассмотрим другой пример.

В одно время разработчиком был создан регистр «ОтветственныеЛицаПоСкладам» структурно состоящий из двух измерений («Склад» и «Помещение») и одного ресурса («Ответственный»).

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

И теперь обновлённый register имеет только единственный профиль и ресурс:

Новый вид структуры товаров

Структура его изменилась. Но строки остались!

И в них указано, что для профиля «Помещение» — есть ответственные (ресурсы). Но что с ними делать при переходе на новый релиз — сама программа без пользователя такую задачу не решит.

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

Ручное исправление

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

Несколько записей с одним значением

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

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

Пропущенный релиз

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

Метод сравнения

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

Для решения такой задачи нужно войти в режим «Конфигурация» и выполнить команду «Сравнить конфигурации»:

Сравнение конфигураций

После этого удалить найденные с помощью консоли запросов неуникальные строчки.

При небольшом их количестве это несложно сделать вручную.

Автоудаление 1

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

Программное удаление дублей

Дубли строк будут найдены обработкой и свёрнуты в одну.

После проведения обработки обновление конфигурации будет проведено корректно.

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

Проверка на наличие дублей

Автоудаление 2

Другая обработка для той же цели предложена другим специалистом в этой области — Павлом Чистовым (для мобильного варианта не поддерживается).

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

Комментируйте наши публикации. Описывайте свой опыт в решении проблемных вопросов.