Какой реквизит в справочнике уникальный в 1с

На чтение 3 мин. Просмотров 448 Опубликовано 15.12.2019

В любой конфигурации 1С 8 у каждого объекта(документа, элемента справочника, элемента плана видов характеристик и т.п.) есть уникальный идентификатор(УИН). При помощи него можно переносить объекты между базами РИБ не боясь задвоения данных, быстро находить элемент справочника или документ и т.п.

Как получить уникальный идентификатор из ссылки? При помощи свойства ссылки УникальныйИдентификатор(). Пример 1:

Уникальный идентификатор в 1С 8 имеет тип УникальныйИдентификатор, но его можно преобразовать и в строковое значение(получится строка вот такого вида: 9712e912-d0b9-11e1-b37b-0050568458ce).

Как получить ссылку имея уникальный идентификатор? При помощи метода ПолучитьСсылку( ) менеджера справочника, документа и т.п.

Пример 4 (Здесь УИН — значение типа УникальныйИдентификатор):

Пример 5(Здесь СтрокаУИН — переменная со строковым значением уникального идентификатора):

В примере 5 уникальный идентификатор получается из строкового значения при помощи конструктора Новый УникальныйИдентификатор( )

Проконсультироваться
со специалистом 1С

GUID (Globally Unique Identifier) — статистически уникальный 128-битный идентификатор. Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификаторов. Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2128 или 3,402 * 10в38), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, крайне мала.

Для получения уникального идентификатора объекта, используйте код вида:
Код 1C v 8.х

Как с помощью запроса получить уникальный идентификатор:
Код 1C v 8.х

В 1С 7.7 можно получить так

Через v7plus.dll
Код 1C v 7.x

Через WScript
Код 1C v 7.x

при OLE доступе:
Код 1C v 7.x
Еще посмотрите метод:
ЗначениеВСтрокуВнутр( );
Синтаксис:
ЗначениеВСтрокуВнутр( )
Назначение:
Преобразование значения объекта агрегатного типа в строковое системное представление.
Возвращает: представление значения объекта в строковом системном виде.
Параметры:
— значение объекта агрегатного типа данных которое нужно преобразовать.

Если Вам встречались в базе записи » «, то значит настала пора познакомитсья с Уникальным идентификатором .

Уникальный идентификатор — это уникальный набор символов который характерезует экземпляр метаданных объектного типа в 1С(Напрмимер, элемент справочника или документ). По сути ссылка и является уникальным идентификатором, причем даже у разных видов объектов он не может быть похож. Выглядит он примерно так:

de80b7c8-aa22-11dc-a0f4-0011d85708ff

Т.е. это набор из 32 шестнадцатеричных цифр разделенных дефисами.

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

Разберем для примера надпись: (36:9c4e0022642fda9811e10393c0d776fd)

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

Например можно написать такой код:

В ней мы находим идентификатор который в конце содержит 36 (цифры до двоеточия), но только не в составе числа( Document2836 ), а точное соответсвие. В нашем случае это следующая строка:

Reference36 Справочник.Номенклатура

Значит удаленный элемент был элементом справочника «Номенклатура».

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

Теперь мы можем на одной из архивных копий найти удаленный элемент, добавив дефисы в имеющуюся у нас строку идентификтора:

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

Контроль уникальности реквизита справочника

Я
   zzhiraf

09.08.12 — 17:51

Каким образом нужно правильно это делать?

  

Партнерская программа EFSOL Oblako

   Mort

1 — 09.08.12 — 17:52

В обработке проверки заполнения

   Mort

2 — 09.08.12 — 17:53

Как вариант

   Mort

3 — 09.08.12 — 17:54

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

   zzhiraf

4 — 09.08.12 — 17:54

Перед записью контролировать неправильно

   х86

5 — 09.08.12 — 17:55

(4)почему?

   zzhiraf

6 — 09.08.12 — 17:56

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

   zzhiraf

7 — 09.08.12 — 17:57

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

   х86

8 — 09.08.12 — 17:58

(6)тогда при записи )

   zzhiraf

9 — 09.08.12 — 17:59

(8) Тоже неправильно)

   х86

10 — 09.08.12 — 18:01

(9)тебе не угодишь  (

в типовой поиск дублей делается передЗаписью

   х86

11 — 09.08.12 — 18:04

(7)создай тогда какую нить табличку и блокируй её, или блокируй всю табл справочника

   Mort

12 — 09.08.12 — 18:13

(11) Если вся эта шняга затевается для того чтобы юзеры не били контров с одинаковым ИНН и вероятность наступления одномоментного ввода элементов с одинаковым реквизитами 10 в минус ХЗ какой степени, то зачем все эти геморрои?

   zzhiraf

13 — 10.08.12 — 09:29

(11) Блокировать всю таблицу не правильно, т. к. при этом снижается производительность системы. Кроме того как это сделать?

(12) Нет, ИНН здесь ни при чем. Речь о многопотоковой параллельной работе со справочниками.

   hhhh

14 — 10.08.12 — 09:34

(13) регистр сведений заведите с двумя измерениями: элемент справочника и его реквизит.

   Godofsin

15 — 10.08.12 — 09:36

А чо, ПриИзменении не подойдет?

   Alex_MA

16 — 10.08.12 — 09:37

Перед записью запросом ГДЕ МойСправочник.ИмяРеквизита = &Реквизит

   х86

17 — 10.08.12 — 09:38

(13)>>Кроме того как это сделать?

в транзакции ДЛЯ ИЗМЕНЕНИЯ, или неробит?

   Defender aka LINN

18 — 10.08.12 — 09:41

(7) Воспроизведи.

   zzhiraf

19 — 10.08.12 — 09:46

(18) Я должен воспроизвести? Можешь мне поверить, или проверить)

(14) Почему с 2-мя измерениями? по моему измерение должно быть одно — реквизит, проверяемый на уникальность. ну и ресурс можно сделать — ссылка на элемент справочника….

   zzhiraf

20 — 10.08.12 — 09:47

(17) ДЛЯ ИЗМЕНЕНИЯ в режиме управляемых блокировок вроде не работает

   ptiz

21 — 10.08.12 — 09:49

1) первая проверка:

ПередЗаписью — пробегаемся по всему справочнику

Здесь же записываем значение реквизита (которое вводится сейчас) во временный РС «ЗначенияКоторыеВводятсяСейчас»

2) вторая проверка

ПриЗаписи — смотрим РС «ЗначенияКоторыеВводятсяСейчас», нет ли там таких значений, вводимых в данный момент другими (с полной блокировкой этот регистр)

3) Периодически (тут надо подумать) чистим наш вспомогательный РС (блокируя в этот момент таблицу справочника).

Ессно, в файловой версии это работать не будет. Да и в постгри, наверное, тоже.

   hhhh

22 — 10.08.12 — 09:51

(19) да, с одним измерением круче, можно прямо в ПриИзменении реквизита на форме проверять.

   zzhiraf

23 — 10.08.12 — 09:55

(21) Хитрый алгоритм, насколько он оптимален с точки зрения производительности? Особенно такие моменты как «ПередЗаписью — пробегаемся по всему справочнику «…

(22) Меня больше интересует программная запись)

   Serg_1960

24 — 10.08.12 — 09:57

Насчет регистра сведений — это вы загнули. А с учетом многопользовательского режима работы — совсем уж лишнее. Пятое колесо в телеге :)

   zzhiraf

25 — 10.08.12 — 09:59

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

   hhhh

26 — 10.08.12 — 10:00

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

   Фрэнки

27 — 10.08.12 — 10:07

(25) нужно еще учесть тип значения или у вас строка?

   zzhiraf

28 — 10.08.12 — 10:10

(27) Строка, длиной больше 254 символов…

   Фрэнки

29 — 10.08.12 — 10:17

(28) все-таки вводить регистр сведений для уникальности будет избыточно. Даже если открыто одновременно две формы у разных пользователей… Можно в код ПослеЗаписи поставить запрос по этому реквизиту, если выдаст более одного значения в результат, то вот и получишь поиск неуникального. Если же искать среди не записанных, в том числе и без самого себя, то гарантированного результата не достигнуть, имхо

   Фрэнки

30 — 10.08.12 — 10:19

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

   ptiz

31 — 10.08.12 — 10:21

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

Речь вообще про какие объемы? Сколько элементов в секунду будет вводиться?

   zzhiraf

32 — 10.08.12 — 10:25

(29) ПослеЗаписи, когда транзакция уже зафиксирована и данные внесены в БД, в случае не уникальности реквизита, придется удалять записанные данные, кроме того в этом случае возможна ситуация когда оба одновременно записываемых элемента (в случае 2-х конкурентных потоков) с одинаковыми реквизитами будут удалены

   Базис

33 — 10.08.12 — 10:28

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

   zzhiraf

34 — 10.08.12 — 10:28

+ кстати, для объекта справочник события ПослеЗаписи нет)

   zzhiraf

35 — 10.08.12 — 10:30

(33) насчет типового решения не могу ничего сказать, т к не видел его

   Serg_1960

36 — 10.08.12 — 10:40

(26) Хм… на «уровне платформы»… Это об той самойплатформе речь, где функционал распределенной информационной базы встроен. Риб-база — и все ваши «навороты» для обеспечения уникальности становятся бессмысленными.

   zzhiraf

37 — 10.08.12 — 10:45

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

   mistеr

38 — 10.08.12 — 11:20

(28) Можно подробнее, что хранится в этом реквизите?

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

1) Сериализовать все изменения сущности (будь то справочник, регистр и т.д.). То есть блокировать некий общий ресурс перед записью, проверить уникальность, записать, снять блокировку. Платформа позволяет это сделать несколькими способами.

2) Ввести ограничение уникальности на уровне СУБД (unique constraint или unique index). Тут есть такие варианты:

а) хранить данные, требующие уникальности, в реквизите, для которого платформа сама создает в БД такое ограничение (например код справочника, единственное измерение РС (19));

б) создать дополнительное ограничение самостоятельно через SQL (и самому же его поддерживать, платформа о нем не знает и может его снести)

   zzhiraf

39 — 10.08.12 — 11:42

(38) Вариант 2-б мне нравится можно попробовать)

   zzhiraf

40 — 10.08.12 — 11:54

(38) Хранится строка, содержащая url-адрес.

   mistеr

41 — 10.08.12 — 11:57

(40) Похоже на самостоятельную сущность. Подумайте о 2а.

   zzhiraf

42 — 10.08.12 — 12:02

(41) Мне нужно получить некий идентификатор (ссылку) для дальнейшей нормальной работы с этими url-адресами. В случае использования справочника ссылка формируется автоматически при записи. В случае использования 2а, выходит что придется поддерживать 2 сущности справочник — для формирования ссылок и регистр сведений — для контроля уникальности. и делать 2 записи вместо одной…

   mistеr

43 — 10.08.12 — 12:17

(42) Вычислите хэш от URL и сделайте его кодом справочника (или частью кода).

   zzhiraf

44 — 10.08.12 — 12:29

(43) Он точно будет уникальным?

   Фрэнки

45 — 10.08.12 — 12:41

вот стоило бы в самом начале указать, какого характера инфу сохранять и получить совет из (43)

   zzhiraf

46 — 10.08.12 — 12:48

(45) Хэш не гарантирует уникальность

   Фрэнки

47 — 10.08.12 — 12:51

(46) md5 ?

   Defender aka LINN

48 — 10.08.12 — 12:54

(19) Ну вот я какбе и не верю.

   zzhiraf

49 — 10.08.12 — 13:00

   zzhiraf

50 — 10.08.12 — 13:01

целая дискуссия по поводу использования md5 хэшей в качестве примари кей. Тут не все так однозначно

   zzhiraf

51 — 10.08.12 — 13:01

(48) Проверь)

   Фрэнки

52 — 10.08.12 — 13:04

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

   mistеr

53 — 10.08.12 — 13:22

(44) Не точно. Добавьте проверку на коллизии. Можно еще один разряд добавить на случай коллизии, но я бы не стал.

(50) Не нашел там серьезных аргументов против. Кроме того, Код это не primary key.

   х86

54 — 10.08.12 — 15:30

(42)делай подчинённый справочник, код у которого твой уникальный реквизит, ессно должна быть уникальность кодов

   zzhiraf

55 — 10.08.12 — 15:41

(54) Длина кода ограничена

  

Defender aka LINN

56 — 11.08.12 — 10:59

(51) Вот я и говорю: воспроизведи для начала.

Содержание

УИД или уникальный идентификатор

Описание

УИД это определенное значение, однозначно идентифицирующее объект ссылочного типа данных, другими словами, это и есть ссылка уникальная в рамках одной конкретно взятой таблицы, например у справочника номенклатура. УИД есть у любого объекта имеющего ссылочный тип данных, из синтаксис помощника следует, что УИД имеет следующий вид: «XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX», где Х — символы обозначающие шестнадцатеричное число. Прочитать какой текущий уникальный идентификатор существует у ссылки можно с помощью метода УникальныйИдентификатор() например:

КонтрагентПетров = Справочники.Контрагенты.НайтиПоНаименованию(«Петров Иван Сергеевич»);
УИД = КонтрагентПетров. УникальныйИдентификатор();

Использование своего УИД при создании объекта

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

  1. Сгенерировать значение типа УИД, используя нужную нам строку(или не используя, как вам будет удобно)

    СтрокаGUID = "a763cfbb-f94f-4c67-8e13-0e96a3a7f353";
    НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID);
    //или просто
    НовыйGUID = Новый УникальныйИдентификатор;
  2. Получить ссылку из уже существующего УИД, нужного нам типа:

    СсылкаСНовымКлиентом = Справочники.Клиенты.ПолучитьСсылку(НовыйGUID);
  3. Установить эту ссылку новому объекту

    НовыйКлиент = Справочник.Клиенты.СоздатьЭлемент();
    НовыйКлиент.УстановитьСсылкуНововго(СсылкаСНовымКлиентом);

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


Ссылки

Только авторизованные участники могут оставлять комментарии.

Справочники в 1С используются для работы с постоянной или условно постоянной информацией, но, в отличие от констант, данная информация может содержать множество значений. К примеру, если мы разрабатываем конфигурацию для учета движения товаров на складе, то такой информацией может быть вид товара, информация о самих товарах, информация о складах и т.п. Таким образом, справочники необходимы для хранения аналитики учета (то, по чему в дальнейшем будет осуществляться анализ, например, сколько товаров продано). В пользовательском режиме работа осуществляется с элементами справочника. Именно элементы справочника и являются объектами аналитики (именно они и будут анализироваться). Например, у справочника Товары могут быть элементы «Гвозди», «Хлеб» и «Молоко».

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

По умолчанию у любого справочника имеется два реквизита — это Код и Наименование. Это так называемые стандартные реквизиты. Наименование обычно заполняет оператор, а код заполняется автоматически. Иногда стандартных реквизитов Код и Наименование бывает достаточно для работы, но чаще всего прикладная задача требует хранения вспомогательной информации. Для этого создаются реквизиты справочника, позволяющие хранить любую дополнительную информацию об элементе справочника.

Применительно к товарам это может быть артикул, полное наименование, наименование для продажи, вид товара и т.п. Еще новая возможность справочников (в 1С 7.7. этого нет) — это возможность создавать табличные части, в которых хранится однотипная информация, количество которой может быть изменчивым. Например, для товара это могут быть какие-то дополнительные свойства.

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

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

Создать новый справочник 1С

После этого откроется конструктор справочника, где на закладке «Основные» необходимо ввести имя справочника.

Имя справочника 1С

На закладке Данные можно задать длину кода и наименования, тип кода (число или строка) и основное представление элемента справочника (в виде кода или в виде строки).

Код и наименование справочника 1С

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

Реквизиты и табличные справочника 1С

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

Автонумерация справочника 1С

Реквизиты справочников 1С создаются на закладке Данные в окне реквизитов.

Реквизиты справочника 1С

В качестве реквизитов справочника могут выступать, как примитивные типы, так и ссылочные. Например, мы уже создали справочник ВидыТоваров, а сейчас создадим справочник Товары, где будут реквизиты Артикул (тип Строка) и ВидТовара (ссылка на справочник ВидыТоваров).

Реквизит справочника 1С с примитивным типом

Реквизит справочника 1С с ссылочными типом

В режиме «1С: Предприятия» это будет выглядеть следующим образом.

Элементы простого справочника

Справочник с ссылочным реквизитом

Обращаю внимание, на что влияет свойство «Основное представление» (закладка Данные конструктора справочника). Если у нас основное представление в виде наименования, то представление элемента справочника в каком-либо реквизите будет в виде наименование этого элемента, как на рисунке представлен элемент справочника ВидыТоваров в реквизите справочника Товары. А если основное представление в виде кода, то тогда представление этого элемента будет в виде кода элемента.

Основное представление справочника код

Основное представление справочника в виде кода

Табличные части справочников 1С

Табличные части создаются на закладке «Данные» в конструкторе справочника.

Табличные части справочников 1С

Можно создавать неограниченное количество табличных частей.

Сделаем справочник Комплектация, у которого будет табличная часть Состав.

Справочник 1С с табличной частью

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

Добавление реквизита табличной части справочника

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

Реквизиты табличной части справочника

Табличная часть справочника 1с

Подчиненные справочники 1С

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

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

Справочник 1С классификатор единиц измерения

У справочника Товары сделаем реквизит основная единица измерения (ссылка на справочник классификатор единиц измерения)

Реквизит справочника 1С Основная единица измерения

И сделаем справочник, подчиненный справочнику Товары, в котором будут храниться коэффициенты соотношений единиц измерения к основной единице измерения товара. К примеру, основная единица измерения килограмм, но есть еще единица тонна и центнер. Соответственно в первом случае коэффициент будет 1000, а во втором 100.

Создадим справочник ЕдиницыИзмерения.

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

Владелец справочника 1С

И создадим реквизиты: Коэффициент (тип число) и единица измерения (тип ссылка на справочник «Классификатор единиц измерения»).

Реквизиты справочника Единицы измерения

Вот как это будет выглядеть в режим «1С: Предприятия».

Справочник 1С

Подчиненный справочник 1С

Подробно о подчиненных справочниках читайте в этой статье:

Подчиненный справочник 1С

Иерархический справочник 1С

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

Сделаем справочник Товары иерархическим. Для этого переходим на закладку «Иерархия» конструктора справочника и установим флаг «Иерархический».

Иерархический справочник 1С

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

Иерархия групп — это каталоги, которые в себе содержат определенные элементы. А что такое Иерархия элементов? Это когда один элемент подчинен другому.

Посмотрим, как выглядит иерархический справочник в «1С:Предприятии»

Иерархический справочник 1С в 1с предприятии

Как видите, в форме списка появилось две команды. «Создать» и «Создать группу». При выполнении команды «Создать» будет открыта форма на создание нового элемента, а при выполнении команды «Создать группу» — форма на создание группы (папки).

Создание групп и элементов

Вы можете создавать нужные группы, в этих группах создавать элементы, или переносить уже созданные элементы в группы.

Подробно, про иерархический справочник читайте в этой статье:

Иерархический справочник 1С

Что такое предопределенные элементы справочников, и как с ними работать, читайте в этой статье:

Предопределенные элементы справочников 1С

Формы справочников в 1С 8.3

Остальные статьи по теме конфигурирования:

Документы в 1С 8.3

Журнал документов в 1С 8.3

Подсистемы 1С 8.3

Общие реквизиты в 1С

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

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

  1. Добрый день. Имеется самописный конфиг на платформе 8.2, возможно ли настроить проверку уникальности реквизита справочника какими-нибудь встроенным способом или данная проверка осуществляется только для номера?
    Вопрос №2: Насколько правильно будет писать запрос ко всем элементам справочника (не более 10 000 объектов) перед записью, с целью проверки уникальности данного реквизита, или лучше завести регистр сведений?


  2. TODD22

    Offline

    TODD22
    Профессионал в 1С
    Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104

    Во первых что это за потребность такая? Что там уникального нужно хранить?

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


  3. nbIpKuH_BaH9I

    Online

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.096
    Симпатии:
    549
    Баллы:
    204

    Ну разве что виртуальная таблица :)

    Делайте свою проверку перед записью. Ничего страшного в этом нет. Только сильно не переусердствуйте. :)


  4. TODD22

    Offline

    TODD22
    Профессионал в 1С
    Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104

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


  5. rifat

    Offline

    rifat
    Опытный в 1С

    Регистрация:
    13 июн 2013
    Сообщения:
    99
    Симпатии:
    2
    Баллы:
    29

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


  6. TODD22

    Offline

    TODD22
    Профессионал в 1С
    Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104

    И зачем индексировать то что индексировать в принципе не нужно?


  7. rifat

    Offline

    rifat
    Опытный в 1С

    Регистрация:
    13 июн 2013
    Сообщения:
    99
    Симпатии:
    2
    Баллы:
    29

    Если будет производиться поиск по справочнику по этому реквизиту, разве не ускорит поиск? Если ошибаюсь поправьте.


  8. TODD22

    Offline

    TODD22
    Профессионал в 1С
    Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104

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


  9. nbIpKuH_BaH9I

    Online

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.096
    Симпатии:
    549
    Баллы:
    204

    Это только усугубит ситуацию. Для создания индекса система выделяет определенные ресурсы. У справочника нет так много комбинаций полей таблицы как скажем у регистра с 10 измерениями. Так что индекс вообще здесь не нужен.


  10. TODD22

    Offline

    TODD22
    Профессионал в 1С
    Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104

    А ещё нужно и тип реквизита знать. А то если там строка неограниченной длинны например… то индексы раздует так что потом база будет вешать неприлично много.
    Как пример у меня есть база. Из за кривой структуры индексировались поля неограниченной длинны. Размер базы был более 70 Гб.
    Хотя там реальных данных на 1.5 Гб.

  11. Всем спасибо, проверять на уникальность нужно строку 13-14 символов, буду делать через запрос к справочнику перед записью.
    Элементов в справочнике будет не более 10 000, а в 99% случаев даже не более 1000, думаю можно будет справиться и без индексов.


  12. TODD22

    Offline

    TODD22
    Профессионал в 1С
    Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104

    А что на уникальность то проверяешь?

  13. строку 13-14 символов, штрих-код товара


  14. rshakiro

    Offline

    rshakiro
    Профессионал в 1С
    Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.261
    Симпатии:
    145
    Баллы:
    104

    Обычно ШК создается на основе кода элемента справочника(который уникален)…


  15. nbIpKuH_BaH9I

    Online

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.096
    Симпатии:
    549
    Баллы:
    204

    Штрихкоды хранить только в регистре сведений. Посмотрите этот механизм в любой типовой со складом. УТ например. Там прекрасно этот механизм реализован.


  16. LordMaverick

    Offline

    LordMaverick
    Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    4.000
    Симпатии:
    465
    Баллы:
    104

    не разумно, это в 7.7 его можно было ещё в реквизите справочника товара хранить
    а сейчас, как уже сказали, это удобнее в РС

    а ещё бывают ситуации когда на одну позицию одновременно есть более одного ШК


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Автор статьи: Бурцева В.Ю. ООО «ИТ Бизнеспроект»

Конфигурация 1С ERP предоставляет широкие возможности по структурированию информации об однотипных элементах справочников. Одна из возможностей – использование характеристик. Это позволяет хранить основную информацию о номенклатуре в справочнике номенклатуры, а ее характеристики хранить в другом справочнике. Вторая возможность  — это использование дополнительных реквизитов справочника. Возможно использовать и характеристики и дополнительные реквизиты совместно. Для справочника номенклатуры в системе 1С ERP предусмотрен справочник «Виды номенклатуры», который позволяет объединять номенклатуру по разным признакам учета и делать настройку перечня этих признаков. Рассмотрим на простом примере. Цель примера – продемонстрировать возможности конфигурации. Для реализации этих возможностей на практике вначале следует составить классификацию номенклатуры. В настоящем примере мы пропустим этап классификации и продемонстрируем сам принцип реализации в программе: возможность ввода и хранения информации о номенклатуре путем перечисления ее параметров. Предположим, что предприятие выпускает номенклатуру KONTAKT,которая может быть различных видов в зависимости от параметров:

  • GSM антенна: внешняя/ внутренняя;
  • В сборе: да/ нет;
  • Голос: есть/нет;
  • Модель: 10А-2, 10А-4, 10-5,11, 14;
  • Цвет корпуса: черный, белый (не обязательный параметр).

Будем задавать данные параметры в качестве дополнительных реквизитов.  Для этого в разделе «Администрирование-Общие настройки» поставим соответствующие галочки.

ERP администрирование

В разделе «Администрирование-номенклатура» поставим галочку «Множество видов номенклатуры».

ERP администрирование Номенклатура

После этого в разделе «Нормативно-справочная информация – Настройки и справочники» появится ссылка на справочник «Виды номенклатуры».

ERP администрирование виды номенклатуры

Создадим вид номенклатуры «KONTAKT» с типом номенклатуры «Товар». При учете по сериям выбираем политику учета серий.

ERP виды номенклатуры основное

Заносим дополнительные реквизиты.

ERP виды номенклатуры дополнительные реквизиты

ERP виды номенклатуры дополнительное значение

1С ERP дополнительный реквизит1

1С ERP дополнительный реквизит2

1С ERP дополнительный реквизит3

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

1С ERP перечень дополнительных реквизитов

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

1С ERP панель быстрого отбора

Затем следует заполнить настройки создания номенклатуры:

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

1С ERP настройки создания

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

1С ERP редактор формул

1С ERP шаблоны наименований

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

1С ERP администрирование номенклатура

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

1С ERP дополнительные реквизиты и сведения

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

1С ERP набор дополнительных реквизитов и сведений

При создании новых элементов справочника шло заполнение табличной части «ДополнительныеРеквизиты» данного элемента.  В табличной части два поля:

  • Свойство – ссылка на элемент плана видов характеристик «Дополнительные реквизиты и сведения».
  • Значение – Характеристика «Дополнительные реквизиты и сведения».

При необходимости, для вида номенклатуры можно создать перечень дополнительных сведений. В них помещается дополнительная информация о номенклатуре. При создании дополнительных сведений так же добавляется элемент в план видов характеристик «Дополнительные реквизиты и сведения», создается новый набор (или добавляется в существующий) в справочнике «Наборы дополнительных реквизитов и сведений». Но в отличие от реквизитов – дополнительные сведения не являются неотъемлемой частью элемента справочника номенклатуры.  Они хранятся в регистре сведений «Дополнительные сведения».   После создания и настройки вида номенклатуры – процесс ввода новой позиции номенклатуры с видом «KONTAKT» будет выглядеть следующим образом.

1С ERP создание номенклатуры

После нажатия кнопки «Далее» система предложит заполнить реквизиты.

1С ERP реквизиты при создании номенклатуры

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

1С ERP создание номенклатуры с реквизитами

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

1С ERP форма подбора номенклатуры с фильтром

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

Реквизиты аналогичным образом можно использовать  и в характеристиках. Продемонстрируем, как для нашего случая будет выглядеть использование характеристик. Заведем новый вид номенклатуры «KONTAKTс характеристикой». Для этого в разделе «Администрирование –номенклатура» следует включить возможность использования характеристик. Номенклатура ранее созданного вида «KONTAKT» по прежнему будет оставаться без характеристик, включение этой возможности никак на ней не отразится.

1С ERP включить использование характеристик

В справочнике номенклатуры оставим только реквизит «Модель». Остальные реквизиты вынесем в характеристики. Система позволяет задать характеристики, общие для вида номенклатуры или индивидуальные. Если выбрать характеристики, общие для вида номенклатуры, то для всех товаров данного вида будет использоваться общий список характеристик. Индивидуальные характеристики номенклатуры назначаются для каждого элемента отдельно.  Нам нужны общие характеристики, так как для всех моделей характеристики единые.

1С ERP вид номенклатуры с характеристикой

Создаем реквизиты номенклатуры и реквизиты характеристик.

1С ERP дополнительные реквизиты характеристики

Формируем шаблоны наименований номенклатур и для характеристик.

1С ERP шаблон наименований номенклатур и характеристик

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

1С ERP номенклатура с характеристикой

1С ERP реквизиты номенклатуры и характенистики

В итоге – для нашего примера количество элементов с видом номенклатуры «KONTAKT с характеристикой» в справочнике номенклатуры будет совпадать с количеством моделей. Остальные сочетания свойств будут вынесены в характеристики.

1С ERP номенклатура с характеристиками

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

1С ERP регистрация  характеристики

Окно подбора номенклатуры для нашего примера будет выглядеть следующим образом.

1С ERP окно подбора номенклатуры

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

1С ERP окно подбора характеристики

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

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

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

  • Выделить основания для классификации номенклатуры. Провести классификацию.
  • Настроить в программе виды номенклатуры. Реквизитами будут служить основания классификации. Значениями реквизитов – классы. Наименование номенклатуры должно формироваться автоматически по шаблону. Настроить контроль уникальности для элементов номенклатуры.
  • Постепенно привязать к каждому элементу номенклатуры вид номенклатуры, расставить реквизиты, переформировать наименования.

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