Ошибка при вызове контекста поле код не уникально

Значение поля Код не уникально

Я
   R0mbes

31.05.12 — 13:03

Кто может подсказать в чем может быть проблема?

Есть справочник номенклатура, в нем 211 000 позиций , длина кода  = 8 знаков, т.е. еще 2 свободных разряда, но при записи элемента справочника программа ругается что значение поля «Код» не уникально!

   Buster007

1 — 31.05.12 — 13:04

значит кто-то поменял код вручную )

   Kavar

2 — 31.05.12 — 13:04

(1)+1

Делать перенумерацию кодов.

   ale-sarin

3 — 31.05.12 — 13:05

(0) Ищите номенклатуру с длиной кода не 8, а меньше.

   Александр_Тверь

4 — 31.05.12 — 13:05

(2) хороший совет. Особенно если есть обмен с 10 базами (1С не 1С), и синхронизация по коду.

   R0mbes

5 — 31.05.12 — 13:06

(1) а как отследить неверный код ? я делаю сортировку у меня последний элемент 00211….

По идеи должен браться последний и прибавляться 1

   rbcvg

6 — 31.05.12 — 13:06

ПоискИЗаменаДублирующихсяЭлементов.epf

   Kavar

7 — 31.05.12 — 13:10

(4) Можешь что-то другое предложить? в любом случае перенумеровывать надо, хотя бы начиная с «кривого» элемента.

   R0mbes

8 — 31.05.12 — 13:10

(6) дублей нету, только что запустил ее

   R0mbes

9 — 31.05.12 — 13:11

(7) так как найти этот кривой элемент ?

   inka

10 — 31.05.12 — 13:11

(8) его и не должно было быть. объект же не записывается

   Александр_Тверь

11 — 31.05.12 — 13:12

(7) а ты из (0) понял в какой это момент происходит?

Может у него обработка, которая по своему алгоритму выдает номер?

Может у него при обмене в каких-то базах коды совпали…

и т.д. и т.п.

   inka

12 — 31.05.12 — 13:12

А если поискать объект с кодов который хотите записать?

   inka

13 — 31.05.12 — 13:13

(9) — отсортируйте по коду и поищите коды с длиной меньше 8

   Kavar

14 — 31.05.12 — 13:16

(9) При создании нового элемента какой-то код же присваивается? вот его и ищи.

   R0mbes

15 — 31.05.12 — 13:19

(14) в отладчике на событии «Перед записью» значение поля код = »   «,

(9) я отсортировал по коду но не могу никак найти код с длиной меньше 8 =(

   R0mbes

16 — 31.05.12 — 13:19

(14) как узнать какой код присваивается ?

   inka

17 — 31.05.12 — 13:20

(15) — поищите код оканчивающийся на букву

   inka

18 — 31.05.12 — 13:20

(16) — Посмотреть :)

   R0mbes

19 — 31.05.12 — 13:23

(18) событие «ПриУстановкеНовогоКода» там посмотреть ?

   Vitamax3

20 — 31.05.12 — 13:26

Как вариант. Если при создании спр.Номенклатура создается ещё

зависимый справочник — например ЕдиницаИзмерения, и там кто-то пошуровал ручками по коду, то ошибка может иметь отношение ко второму справочнику. ИМХО.

   R0mbes

21 — 31.05.12 — 13:27

(20) спасибо за наводку, сейчас гляну )

   R0mbes

22 — 31.05.12 — 13:48

(20) не там все чисто (

   Irek-kazan

23 — 31.05.12 — 13:50

база случаем не на сиквеле?

   R0mbes

24 — 31.05.12 — 13:52

(23) на чем ?))) клиент — серверный вариант работы (база на MSSQL)

   Irek-kazan

25 — 31.05.12 — 13:54

ну тогда прямой запрос к базе на предмет задвоения

Select count(code), code

from table

group by code

having count(code)>1

   Случайный прохожий

26 — 31.05.12 — 13:56

(25) не проканает. В данный момент в базе нет задвоения. Задвоение создается при попытки записи нового элемента.

   Vitamax3

27 — 31.05.12 — 13:56

(25) так он и не может записать дубль

   Vitamax3

28 — 31.05.12 — 13:57

(0) какая конфигурация?

   inka

29 — 31.05.12 — 13:57

(27) — Все таки поищите код оканчивающийся на букву

   Irek-kazan

30 — 31.05.12 — 13:58

Может тады профайлерем посмотреть что пытается записать в базу в момент создания элемента?

   Случайный прохожий

31 — 31.05.12 — 13:59

После сортировки как выглядит код последнего элемента? Полностью напиши (с пробелами и т.п)

   Vitamax3

32 — 31.05.12 — 13:59

+(31) и первого

   hhhh

33 — 31.05.12 — 14:01

(22) отсортируйте справочник по коду, тогда самый нижный элемент и будет то, что вы ищете.

   R0mbes

34 — 31.05.12 — 14:21

Последний элемент : «00211746  »

Первый элемент:     «00000001  »

(29) запустил такую обработку:

<code>

Процедура КнопкаВыполнитьНажатие(Кнопка)

   Запрос = новый Запрос;

   Запрос.Текст = «ВЫБРАТЬ

                  |    Номенклатура.Код КАК Код

                  |ИЗ

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

                  |

                  |УПОРЯДОЧИТЬ ПО

                  |    Код»;

   Результат = запрос.Выполнить().Выбрать();

   й=0;

   Пока Результат.Следующий() Цикл

       й=й+1;

       Код = Результат.Код;

       Попытка

       
           Номер = Число(Код);

           Код = СокрЛП(Код);

           Если СтрДлина(Код)<8 Тогда

               Сообщить(Код);

           КонецЕсли;    

       
       Исключение

           Сообщить(Код);

       
       КонецПопытки;

   КонецЦикла;

   
   сообщить(й);

КонецПроцедуры

</code>

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

(30) А как это сделать ?

   R0mbes

35 — 31.05.12 — 14:24

(28) конфигурация комплексная автоматизация

   Vitamax3

36 — 31.05.12 — 14:24

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

00211747 и записать.

   R0mbes

37 — 31.05.12 — 14:25

Может и правда дело не в этом справочнике, а в каком то другом ?

   R0mbes

38 — 31.05.12 — 14:25

(36) секунду

   Vitamax3

39 — 31.05.12 — 14:26

(37) если запишет, то в другом 99% ;)

   R0mbes

40 — 31.05.12 — 14:28

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

В данной транзакции уже происходили ошибки

«Не удалось записать единицу хранения остатков: {Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(1396)}: Ошибка при вызове метода контекста (Записать): Значение поля «Код» не уникально»

   Vitamax3

41 — 31.05.12 — 14:36

А в (0), что без открытия формы создавал?

   R0mbes

42 — 31.05.12 — 14:37

(41) с открытие но ошибка только сейчас выдалась ..

не понимаю где теперь искать концы

   Случайный прохожий

43 — 31.05.12 — 14:40

Ищи подвох в единицах хранения остатков :)

   Vitamax3

44 — 31.05.12 — 14:44

+(43) повтори свою обработку для справочника ЕдиницыИзмерения

и выдай первый код и последний

   R0mbes

45 — 31.05.12 — 14:50

(44) я сделал как ты и сказал  в (36) — присвоил последнему элементу справочника «ЕдиницыИзмерения» код на единицу больше и все заработало, спасибо тебе !!!! Но причину я так и не могу понять, мистика ))

Спасибо всем ! я уже 2 часа вожусь с этой проблемой !!!! если бы не вы… было бы гораздо дольше =)

   Vitamax3

46 — 31.05.12 — 14:57

(45) )))  «2 часа вожусь» ветка с 13:03 по 14:50 — быстро ты сдался однако.

   R0mbes

47 — 31.05.12 — 15:15

(46) ну мои знания через 30 минут иссякли ! я перепробывал все что знал ) а на этом форуме обитают профи =)) мне это очень нравится !

   Vitamax3

48 — 31.05.12 — 15:29

(47) заходи ещё. Набирайся опыта сидя на мисте. Если шефа убедишь )))

P.S. А коды не выложил по ЕдиницыИзмерения ((.

Мистика как то напрягает, может вылезти боком.

  

R0mbes

49 — 01.06.12 — 00:40

(48) Да босс одобрил это дело, мистика это точно. а коды там ничего подозрительного не было цифры и вначале и в конце…

Значение поля не уникально

Ошибка возникает при создании нового документа. При записи программа 1С 8.3 автоматически присваивает элементу новый номер, но сохранить новые данные не может, где-то в журнале документов уже есть объект с таким же номером.

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

Значение поля «Номер» не уникально 1с 8.3

Программа 1С сообщает пользователю, что номер 0000-0006 уже существует.

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

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

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

Таким образом, сам номер может принимать значение от 0000-000001 до 0000-999999. Если пользователь вручную сокращает длину номера, то она продолжает нумерацию от нового значения. При внесении изменения в префикс, нумерация все равно продолжается от последнего номера, содержащего наименьшее количество знаков. В нашем примере при сбое в нумерации она продолжилась, используя под номер 4 знака: 0000-0005, 0000-0006 и т. д.

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

Рассмотрим ситуацию далее.

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

Программа 1С будет присваивать номера до тех пор, пока не будет пройден последний максимальный номер. Например, изменив вручную в документе номер на 0000-01, программа сможет автоматически присвоить всего 99 номеров. После номера 0000-99 возможность автоматической нумерации документов закончится и придется каждый раз исправлять номер вручную

После номера 0000-99 при вводе каждого нового документа будет выдаваться сообщение, что значение номера 0000-99 не уникально.

Когда пользователь сокращает длину номера документа (договора и т. п.) — это приводит к сбою нумерации. Поэтому, если возникает необходимость изменить номер документа вручную, надо использовать максимально допустимое число символов.

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

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

После приведения в порядок нумерации, ошибка появляться не будет.

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

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

Активировать демо-доступ бесплатно >

Оформить подписку на Рубрикатор >

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

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

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

В чем причина появления данной ошибки?

А причина может быть в некорректной нумерации объектов справочника. Как это происходит? Обычно при создании новой записи в каком-то из справочников программа сама генерирует код записи. Если в предыдущих записях пользователь редактировал код вручную, то в последствии есть вероятность того, что при создании последующих записей разрядность кода увеличится на один знак и перестает помещаться в поле, а значит генерация кодов начнется сначала. Только вот хранить объекты с одинаковыми кодами в справочниках 1С нельзя, а, значит, пользователь в такой ситуации будет получать на экран сообщение об ошибке.

Как исправить ошибку «Код не уникален»?

Безусловно, решение этой проблемы предусмотрено разработчиками 1С. Заключается оно в полной перенумерации элементов справочника. Для этого на диске информационно-технологического сопровождения 1С (1с итс) есть специальная обработка, которая называется «УниверсальныеПодборИОбработкаОбъектов. epf». Она располагается в каталоге 1CITSEXEExtRepsUNIREPS81UniversalSelection.

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

Как предотвратить появление ошибки «Код не уникален»?

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

Рекомендуем также еще статьи по программам 1С:

Попробуем разобраться, почему появляется ошибка в 1С – значение поля Код не уникально (разновидности ошибки могут быть со значениями 002024, 002071 либо другими). В процессе добавления в справочник нового элемента, бывают случаи возникновения ошибки «поле код не уникально в 1C».

Системой, в автоматическом режиме, происходит процесс присвоения нового кода элементу.

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

Закажите устранение ошибки 1С в IT RUSH!

Стоимость работ – 1600 руб./час, абонемент от 50 часов в месяц – 1500 руб. в час, от 100 часов в месяц – 1400 руб. в час

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

В случае, если вручную элементу справочника будет присвоен код «А999», при попытке создания следующего элемента отобразится ошибка «поле код не уникально в 1с».

Причина заключается в том, что систем пытается прибавить единицу к числу 999, но для, получающегося в результате прибавления, кода «А1000» не достает разрядов.

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

Решение проблемы «значение поля Код не уникально” заключается в поиске ошибочно пронумерованного элемента и исправления его кода на адекватный. Этот способ подразумевает смену нумерации кода и у всех последующих за ним элементов.

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

Нам доверяют:

При постоянном использовании программного обеспечения в коммерческой деятельности часто приходится сталкиваться с различными багами, которые могут серьезно затормозить экономический процесс. И одна из подобных проблем и станет темой сегодняшнего обзора. Это ошибка в «1С: Предприятие» – «Поле объекта не обнаружено», мы тщательно и детально разберем, как исправить подобную неполадку в 1C. Сразу стоит уточнить, что этот баг не носит критического характера, серьезными проблемами все равно не обернется. Но приостановить выполнение задачи вполне сможет, что неприятно. Особенно если от заполнения формы зависят сроки, нарушать которые ни в коем случае нельзя. Да и часто без базовых навыков приходится обращаться к профессионалам. А они появляются не мгновенно, придется отправить запрос в компанию, осуществляющую техническое сопровождение. Зачастую понадобится около суток. И гораздо проще все сделать самостоятельно прямо на месте. А как это возможно, мы и узнаем в статье.

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

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

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

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

Итак, пройдемся конкретно по способам устранения.

Проблемы с обновлением

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

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

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

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

Баг платформы

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

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

Чистим кеш

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

Поступаем следующим образом:

В стандартном проводнике вводим набор символов – %appdata%.

Нам понадобится конкретная папка, которая носит название – 1С1cv8.

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

Настройки пользователя

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

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

Укажите конкретного человека, профиль которого должен быть исправлен. Помните, что привилегии и права потом придется восстанавливать заново.

Конфигурация

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

Итак, когда сбой возникает очередной раз, нажимаем на значок подробного разбора.

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

Далее включается конфигуратор. Умная система самостоятельно активирует его.

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

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

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

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

Сбой при запуске

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

А ведь достаточно выполнить алгоритм из трех простых действия:

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

«Падает» модуль, но программа работает

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

Сбиты настройки пользователя

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

Повреждение файла

Если поле не обнаружено, описание ошибки часто сообщает, что сам объект был поврежден. Виной тому становится некорректная установка или системная неполадка при конфликте версией программного обеспечения. Лучшим решением будет запуск Конфигуратора, а после – проверка программы на наличие повреждений тома. Таким образом, будут выявлены все файлы, которые работает на текущем этапе некорректно.

Исправляем ошибку

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

Обновляем платформу

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

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

Удаление настроек

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

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

Восстанавливаем базу данных

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

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

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

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

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

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

Источники:

Https://tesintec. ru/znachenie-polya-ne-unikalno-9463/

Https://www. cleverence. ru/articles/elektronnaya-kommertsiya/pole-obekta-ne-obnaruzheno-kak-ispravit-etu-oshibku-v-programme-1s/

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

Причиной является неправильная нумерация в справочнике. Происходит это когда пользователи вручную редактирует поле “Код” в элементах справочника.

Принцип нумерации справочника в 1С такой:

Код = Префикс+числовой код предыдущего элемента + 1.

Допустим код справочника состоит из 4-х символов, есть префикс “А” — он ставиться во всех элементах, остальные 3 знака используются под числовую составляющую кода. Если пользователь изменит код любого элемента справочника на “А999”, то при создании следующего элемента возникнет ошибка Значение поля “Код” не уникально, потому что система пытается прибавить к числовой составляющей кода единица, но разрядов для создания элемента с кодом А1000 не хватает. Такого рода ошибки могут всплыть не сразу, например если пользователь изменить код какого нибудь элемента на А990, то не уникальный код появится на десятом созданном впоследствии элементе.

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

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

Ошибка не уникального кода при создании новой записи в справочнике 1С

В чем причина появления данной ошибки?

А причина может быть в некорректной нумерации объектов справочника. Как это происходит? Обычно при создании новой записи в каком-то из справочников программа сама генерирует код записи. Если в предыдущих записях пользователь редактировал код вручную, то в последствии есть вероятность того, что при создании последующих записей разрядность кода увеличится на один знак и перестает помещаться в поле, а значит генерация кодов начнется сначала. Только вот хранить объекты с одинаковыми кодами в справочниках 1С нельзя, а, значит, пользователь в такой ситуации будет получать на экран сообщение об ошибке.

Как исправить ошибку «Код не уникален»?

Безусловно, решение этой проблемы предусмотрено разработчиками 1С. Заключается оно в полной перенумерации элементов справочника. Для этого на диске информационно-технологического сопровождения 1С (1с итс) есть специальная обработка, которая называется «УниверсальныеПодборИОбработкаОбъектов.epf». Она располагается в каталоге 1CITSEXEExtRepsUNIREPS81UniversalSelection.

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

Как предотвратить появление ошибки «Код не уникален»?

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

Рекомендуем также еще статьи по программам 1С:

  • Выбор режима проведения документов в 1С
  • Настройка доступа к подсистемам программ 1С 8.2
  • Установка 1С: Предприятие 8.0

Вы можете получать новые материалы сайта по RSS-каналу или можете подписаться на новости 1С от Информ Актив и получать их еженедельно на Ваш e-mail .

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

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

  1. Попытаться высвободить свободные коды, удалив помеченные на удаление объекты;
  2. Затем, выполнить процедуру перенумерации объектов (справочника, плана видов характеристик и т.п.) и вызвать программно метод ОбновитьНумерациюОбъектов() для проблемного объекта метаданных;
  3. Если не помогло, увеличить в конфигураторе длину кода объекта метаданных (справочника, плана видов характеристик и т.п.) и также программно вызвать метод ОбновитьНумерациюОбъектов() для проблемного объекта метаданных;

Ошибка возникает при создании нового документа. При записи программа 1С 8.3 автоматически присваивает элементу новый номер, но сохранить новые данные не может, где-то в журнале документов уже есть объект с таким же номером.

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

Программа 1С сообщает пользователю, что номер 0000-0006 уже существует.

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

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

  • префикс информационной базы — может быть задан, если есть обмен с другими базами 1С;
  • сам номер документа.

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

  • 4 позиции для префикса;
  • 6 позиций под номер.

Таким образом, сам номер может принимать значение от 0000-000001 до 0000-999999. Если пользователь вручную сокращает длину номера, то она продолжает нумерацию от нового значения. При внесении изменения в префикс, нумерация все равно продолжается от последнего номера, содержащего наименьшее количество знаков. В нашем примере при сбое в нумерации она продолжилась, используя под номер 4 знака: 0000-0005, 0000-0006 и т.д.

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

Рассмотрим ситуацию далее.

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

Программа 1С будет присваивать номера до тех пор, пока не будет пройден последний максимальный номер. Например, изменив вручную в документе номер на 0000-01, программа сможет автоматически присвоить всего 99 номеров. После номера 0000-99 возможность автоматической нумерации документов закончится и придется каждый раз исправлять номер вручную

После номера 0000-99 при вводе каждого нового документа будет выдаваться сообщение, что значение номера 0000-99 не уникально.

Когда пользователь сокращает длину номера документа (договора и т.п.) — это приводит к сбою нумерации. Поэтому, если возникает необходимость изменить номер документа вручную, надо использовать максимально допустимое число символов.

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

  • Продолжить редактирование Да.

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

После приведения в порядок нумерации, ошибка появляться не будет.

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

См. также:

  • Нарушение целостности системы 1С
  • Конфигурация базы данных не соответствует сохраненной конфигурации 1С
  • Регистрация конфигурации в центре лицензирования не выполнена: как убрать
  • Внутренняя ошибка компоненты dbeng8: как исправить
  • Конфликт блокировок при выполнении транзакции 1С 8.3: как исправить

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Ошибка возникает при создании нового документа. При записи программа 1С 8.3 автоматически присваивает элементу новый номер, но сохранить новые данные не может, где-то в журнале документов уже есть объект с таким же номером.

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

Содержание

  • Значение поля «Номер» не уникально 1с 8.3
  • В чем причина появления данной ошибки?
  • Как исправить ошибку «Код не уникален»?
  • Как предотвратить появление ошибки «Код не уникален»?
    • Нам доверяют:
  • Новые записи:

Значение поля «Номер» не уникально 1с 8.3

Программа 1С сообщает пользователю, что номер 0000-0006 уже существует.

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

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

  • префикс информационной базы — может быть задан, если есть обмен с другими базами 1С;
  • сам номер документа.

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

  • 4 позиции для префикса;
  • 6 позиций под номер.

Таким образом, сам номер может принимать значение от 0000-000001 до 0000-999999. Если пользователь вручную сокращает длину номера, то она продолжает нумерацию от нового значения. При внесении изменения в префикс, нумерация все равно продолжается от последнего номера, содержащего наименьшее количество знаков. В нашем примере при сбое в нумерации она продолжилась, используя под номер 4 знака: 0000-0005, 0000-0006 и т.д.

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

Рассмотрим ситуацию далее.

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

Программа 1С будет присваивать номера до тех пор, пока не будет пройден последний максимальный номер. Например, изменив вручную в документе номер на 0000-01, программа сможет автоматически присвоить всего 99 номеров. После номера 0000-99 возможность автоматической нумерации документов закончится и придется каждый раз исправлять номер вручную

После номера 0000-99 при вводе каждого нового документа будет выдаваться сообщение, что значение номера 0000-99 не уникально.

Когда пользователь сокращает длину номера документа (договора и т.п.) — это приводит к сбою нумерации. Поэтому, если возникает необходимость изменить номер документа вручную, надо использовать максимально допустимое число символов.

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

  • Продолжить редактирование — Да.

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

После приведения в порядок нумерации, ошибка появляться не будет.

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

См. также:

  • Нарушение целостности системы 1С
  • Конфигурация базы данных не соответствует сохраненной конфигурации 1С
  • Регистрация конфигурации в центре лицензирования не выполнена: как убрать
  • Внутренняя ошибка компоненты dbeng8: как исправить
  • Конфликт блокировок при выполнении транзакции 1С 8.3: как исправить

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

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

В чем причина появления данной ошибки?

А причина может быть в некорректной нумерации объектов справочника. Как это происходит? Обычно при создании новой записи в каком-то из справочников программа сама генерирует код записи. Если в предыдущих записях пользователь редактировал код вручную, то в последствии есть вероятность того, что при создании последующих записей разрядность кода увеличится на один знак и перестает помещаться в поле, а значит генерация кодов начнется сначала. Только вот хранить объекты с одинаковыми кодами в справочниках 1С нельзя, а, значит, пользователь в такой ситуации будет получать на экран сообщение об ошибке.

Как исправить ошибку «Код не уникален»?

Безусловно, решение этой проблемы предусмотрено разработчиками 1С. Заключается оно в полной перенумерации элементов справочника. Для этого на диске информационно-технологического сопровождения 1С (1с итс) есть специальная обработка, которая называется «УниверсальныеПодборИОбработкаОбъектов.epf». Она располагается в каталоге 1CITSEXEExtRepsUNIREPS81UniversalSelection.

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

Как предотвратить появление ошибки «Код не уникален»?

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

Рекомендуем также еще статьи по программам 1С:

  • Выбор режима проведения документов в 1С
  • Настройка доступа к подсистемам программ 1С 8.2
  • Установка 1С: Предприятие 8.0

Вы можете получать новые материалы сайта по RSS-каналу или можете подписаться на новости 1С от Информ Актив и получать их еженедельно на Ваш e-mail .

Попробуем разобраться, почему появляется ошибка в 1С – значение поля Код не уникально (разновидности ошибки могут быть со значениями 002024, 002071 либо другими). В процессе добавления в справочник нового элемента, бывают случаи возникновения ошибки «поле код не уникально в 1C».

Системой, в автоматическом режиме, происходит процесс присвоения нового кода элементу.

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

Закажите устранение ошибки 1С в IT RUSH!

Стоимость работ – 1600 руб./час, абонемент от 50 часов в месяц – 1500 руб. в час, от 100 часов в месяц – 1400 руб. в час

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

В случае, если вручную элементу справочника будет присвоен код «А999», при попытке создания следующего элемента отобразится ошибка «поле код не уникально в 1с».

Причина заключается в том, что систем пытается прибавить единицу к числу 999, но для, получающегося в результате прибавления, кода «А1000» не достает разрядов.

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

Решение проблемы «значение поля Код не уникально” заключается в поиске ошибочно пронумерованного элемента и исправления его кода на адекватный. Этот способ подразумевает смену нумерации кода и у всех последующих за ним элементов.

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

  • Стоимость работ специалистов IT Rush – 2000 руб./час
  • Абонемент от 50 часов в месяц – 1900 руб./час
  • Абонемент от 100 часов в месяц – 1800 руб./час

Нам доверяют:

  • ООО Компит

Значение поля Код не уникально

Я

  

R0mbes

31.05.12 — 13:03

Кто может подсказать в чем может быть проблема?

Есть справочник номенклатура, в нем 211 000 позиций , длина кода  = 8 знаков, т.е. еще 2 свободных разряда, но при записи элемента справочника программа ругается что значение поля «Код» не уникально!

  

Buster007

1 — 31.05.12 — 13:04

значит кто-то поменял код вручную )

  

Kavar

2 — 31.05.12 — 13:04

(1)+1

Делать перенумерацию кодов.

  

ale-sarin

3 — 31.05.12 — 13:05

(0) Ищите номенклатуру с длиной кода не 8, а меньше.

  

Александр_Тверь

4 — 31.05.12 — 13:05

(2) хороший совет. Особенно если есть обмен с 10 базами (1С не 1С), и синхронизация по коду.

  

R0mbes

5 — 31.05.12 — 13:06

(1) а как отследить неверный код ? я делаю сортировку у меня последний элемент 00211….

По идеи должен браться последний и прибавляться 1

  

rbcvg

6 — 31.05.12 — 13:06

ПоискИЗаменаДублирующихсяЭлементов.epf

  

Kavar

7 — 31.05.12 — 13:10

(4) Можешь что-то другое предложить? в любом случае перенумеровывать надо, хотя бы начиная с «кривого» элемента.

  

R0mbes

8 — 31.05.12 — 13:10

(6) дублей нету, только что запустил ее

  

R0mbes

9 — 31.05.12 — 13:11

(7) так как найти этот кривой элемент ?

  

inka

10 — 31.05.12 — 13:11

(8) его и не должно было быть. объект же не записывается

  

Александр_Тверь

11 — 31.05.12 — 13:12

(7) а ты из (0) понял в какой это момент происходит?

Может у него обработка, которая по своему алгоритму выдает номер?

Может у него при обмене в каких-то базах коды совпали…

и т.д. и т.п.

  

inka

12 — 31.05.12 — 13:12

А если поискать объект с кодов который хотите записать?

  

inka

13 — 31.05.12 — 13:13

(9) — отсортируйте по коду и поищите коды с длиной меньше 8

  

Kavar

14 — 31.05.12 — 13:16

(9) При создании нового элемента какой-то код же присваивается? вот его и ищи.

  

R0mbes

15 — 31.05.12 — 13:19

(14) в отладчике на событии «Перед записью» значение поля код = »   «,

(9) я отсортировал по коду но не могу никак найти код с длиной меньше 8 =(

  

R0mbes

16 — 31.05.12 — 13:19

(14) как узнать какой код присваивается ?

  

inka

17 — 31.05.12 — 13:20

(15) — поищите код оканчивающийся на букву

  

inka

18 — 31.05.12 — 13:20

(16) — Посмотреть :)

  

R0mbes

19 — 31.05.12 — 13:23

(18) событие «ПриУстановкеНовогоКода» там посмотреть ?

  

Vitamax3

20 — 31.05.12 — 13:26

Как вариант. Если при создании спр.Номенклатура создается ещё

зависимый справочник — например ЕдиницаИзмерения, и там кто-то пошуровал ручками по коду, то ошибка может иметь отношение ко второму справочнику. ИМХО.

  

R0mbes

21 — 31.05.12 — 13:27

(20) спасибо за наводку, сейчас гляну )

  

R0mbes

22 — 31.05.12 — 13:48

(20) не там все чисто (

  

Irek-kazan

23 — 31.05.12 — 13:50

база случаем не на сиквеле?

  

R0mbes

24 — 31.05.12 — 13:52

(23) на чем ?))) клиент — серверный вариант работы (база на MSSQL)

  

Irek-kazan

25 — 31.05.12 — 13:54

ну тогда прямой запрос к базе на предмет задвоения
Select count(code), code

from table

group by code

having count(code)>1

  

Случайный прохожий

26 — 31.05.12 — 13:56

(25) не проканает. В данный момент в базе нет задвоения. Задвоение создается при попытки записи нового элемента.

  

Vitamax3

27 — 31.05.12 — 13:56

(25) так он и не может записать дубль

  

Vitamax3

28 — 31.05.12 — 13:57

(0) какая конфигурация?

  

inka

29 — 31.05.12 — 13:57

(27) — Все таки поищите код оканчивающийся на букву

  

Irek-kazan

30 — 31.05.12 — 13:58

Может тады профайлерем посмотреть что пытается записать в базу в момент создания элемента?

  

Случайный прохожий

31 — 31.05.12 — 13:59

После сортировки как выглядит код последнего элемента? Полностью напиши (с пробелами и т.п)

  

Vitamax3

32 — 31.05.12 — 13:59

+(31) и первого

  

hhhh

33 — 31.05.12 — 14:01

(22) отсортируйте справочник по коду, тогда самый нижный элемент и будет то, что вы ищете.

  

R0mbes

34 — 31.05.12 — 14:21

Последний элемент : "00211746  "
Первый элемент:     "00000001  "

(29) запустил такую обработку:

<code>

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Код КАК Код
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Код";
    Результат = запрос.Выполнить().Выбрать();
    й=0;
    Пока Результат.Следующий() Цикл
        й=й+1;
        Код = Результат.Код;
        Попытка
        
            Номер = Число(Код);
            Код = СокрЛП(Код);
            Если СтрДлина(Код)<8 Тогда
                Сообщить(Код);
            КонецЕсли;    
        
        Исключение
            Сообщить(Код);
        
        КонецПопытки; 
    КонецЦикла; 
    
    сообщить(й);
КонецПроцедуры

</code>

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

(30) А как это сделать ?

  

R0mbes

35 — 31.05.12 — 14:24

(28) конфигурация комплексная автоматизация

  

Vitamax3

36 — 31.05.12 — 14:24

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

00211747 и записать.

  

R0mbes

37 — 31.05.12 — 14:25

Может и правда дело не в этом справочнике, а в каком то другом ?

  

R0mbes

38 — 31.05.12 — 14:25

(36) секунду

  

Vitamax3

39 — 31.05.12 — 14:26

(37) если запишет, то в другом 99% ;)

  

R0mbes

40 — 31.05.12 — 14:28

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

В данной транзакции уже происходили ошибки

«Не удалось записать единицу хранения остатков: {Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(1396)}: Ошибка при вызове метода контекста (Записать): Значение поля «Код» не уникально»

  

Vitamax3

41 — 31.05.12 — 14:36

А в (0), что без открытия формы создавал?

  

R0mbes

42 — 31.05.12 — 14:37

(41) с открытие но ошибка только сейчас выдалась ..

не понимаю где теперь искать концы

  

Случайный прохожий

43 — 31.05.12 — 14:40

Ищи подвох в единицах хранения остатков :)

  

Vitamax3

44 — 31.05.12 — 14:44

+(43) повтори свою обработку для справочника ЕдиницыИзмерения
и выдай первый код и последний

  

R0mbes

45 — 31.05.12 — 14:50

(44) я сделал как ты и сказал  в (36) — присвоил последнему элементу справочника «ЕдиницыИзмерения» код на единицу больше и все заработало, спасибо тебе !!!! Но причину я так и не могу понять, мистика ))

Спасибо всем ! я уже 2 часа вожусь с этой проблемой !!!! если бы не вы… было бы гораздо дольше =)

  

Vitamax3

46 — 31.05.12 — 14:57

(45) )))  «2 часа вожусь» ветка с 13:03 по 14:50 — быстро ты сдался однако.

  

R0mbes

47 — 31.05.12 — 15:15

(46) ну мои знания через 30 минут иссякли ! я перепробывал все что знал ) а на этом форуме обитают профи =)) мне это очень нравится !

  

Vitamax3

48 — 31.05.12 — 15:29

(47) заходи ещё. Набирайся опыта сидя на мисте. Если шефа убедишь )))

P.S. А коды не выложил по ЕдиницыИзмерения ((.

Мистика как то напрягает, может вылезти боком.

  

R0mbes

49 — 01.06.12 — 00:40

(48) Да босс одобрил это дело, мистика это точно. а коды там ничего подозрительного не было цифры и вначале и в конце…

Попробуем разобраться, почему появляется и как исправить ошибку: значение поля Код не уникально при обновлении 1С 8.3 (разновидности ошибки могут быть со значениями 002024, 002071 либо другими).

Она появляется когда мы создадим новый документ в 1с 8.3. Cистема присваивает новое значение элементу в автоматически, то есть в режиме автонумерации.

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

Ошибка в 1С: значение поля Код не уникальноООО Компит

Значение поля Код не уникально

Я

  

R0mbes

31.05.12 — 13:03

Кто может подсказать в чем может быть проблема?

Есть справочник номенклатура, в нем 211 000 позиций , длина кода  = 8 знаков, т.е. еще 2 свободных разряда, но при записи элемента справочника программа ругается что значение поля «Код» не уникально!

  

Buster007

1 — 31.05.12 — 13:04

значит кто-то поменял код вручную )

  

Kavar

2 — 31.05.12 — 13:04

(1)+1

Делать перенумерацию кодов.

  

ale-sarin

3 — 31.05.12 — 13:05

(0) Ищите номенклатуру с длиной кода не 8, а меньше.

  

Александр_Тверь

4 — 31.05.12 — 13:05

(2) хороший совет. Особенно если есть обмен с 10 базами (1С не 1С), и синхронизация по коду.

  

R0mbes

5 — 31.05.12 — 13:06

(1) а как отследить неверный код ? я делаю сортировку у меня последний элемент 00211….

По идеи должен браться последний и прибавляться 1

  

rbcvg

6 — 31.05.12 — 13:06

ПоискИЗаменаДублирующихсяЭлементов.epf

  

Kavar

7 — 31.05.12 — 13:10

(4) Можешь что-то другое предложить? в любом случае перенумеровывать надо, хотя бы начиная с «кривого» элемента.

  

R0mbes

8 — 31.05.12 — 13:10

(6) дублей нету, только что запустил ее

  

R0mbes

9 — 31.05.12 — 13:11

(7) так как найти этот кривой элемент ?

  

inka

10 — 31.05.12 — 13:11

(8) его и не должно было быть. объект же не записывается

  

Александр_Тверь

11 — 31.05.12 — 13:12

(7) а ты из (0) понял в какой это момент происходит?

Может у него обработка, которая по своему алгоритму выдает номер?

Может у него при обмене в каких-то базах коды совпали…

и т.д. и т.п.

  

inka

12 — 31.05.12 — 13:12

А если поискать объект с кодов который хотите записать?

  

inka

13 — 31.05.12 — 13:13

(9) — отсортируйте по коду и поищите коды с длиной меньше 8

  

Kavar

14 — 31.05.12 — 13:16

(9) При создании нового элемента какой-то код же присваивается? вот его и ищи.

  

R0mbes

15 — 31.05.12 — 13:19

(14) в отладчике на событии «Перед записью» значение поля код = »   «,

(9) я отсортировал по коду но не могу никак найти код с длиной меньше 8 =(

  

R0mbes

16 — 31.05.12 — 13:19

(14) как узнать какой код присваивается ?

  

inka

17 — 31.05.12 — 13:20

(15) — поищите код оканчивающийся на букву

  

inka

18 — 31.05.12 — 13:20

(16) — Посмотреть :)

  

R0mbes

19 — 31.05.12 — 13:23

(18) событие «ПриУстановкеНовогоКода» там посмотреть ?

  

Vitamax3

20 — 31.05.12 — 13:26

Как вариант. Если при создании спр.Номенклатура создается ещё

зависимый справочник — например ЕдиницаИзмерения, и там кто-то пошуровал ручками по коду, то ошибка может иметь отношение ко второму справочнику. ИМХО.

  

R0mbes

21 — 31.05.12 — 13:27

(20) спасибо за наводку, сейчас гляну )

  

R0mbes

22 — 31.05.12 — 13:48

(20) не там все чисто (

  

Irek-kazan

23 — 31.05.12 — 13:50

база случаем не на сиквеле?

  

R0mbes

24 — 31.05.12 — 13:52

(23) на чем ?))) клиент — серверный вариант работы (база на MSSQL)

  

Irek-kazan

25 — 31.05.12 — 13:54

ну тогда прямой запрос к базе на предмет задвоения
Select count(code), code

from table

group by code

having count(code)>1

  

Случайный прохожий

26 — 31.05.12 — 13:56

(25) не проканает. В данный момент в базе нет задвоения. Задвоение создается при попытки записи нового элемента.

  

Vitamax3

27 — 31.05.12 — 13:56

(25) так он и не может записать дубль

  

Vitamax3

28 — 31.05.12 — 13:57

(0) какая конфигурация?

  

inka

29 — 31.05.12 — 13:57

(27) — Все таки поищите код оканчивающийся на букву

  

Irek-kazan

30 — 31.05.12 — 13:58

Может тады профайлерем посмотреть что пытается записать в базу в момент создания элемента?

  

Случайный прохожий

31 — 31.05.12 — 13:59

После сортировки как выглядит код последнего элемента? Полностью напиши (с пробелами и т.п)

  

Vitamax3

32 — 31.05.12 — 13:59

+(31) и первого

  

hhhh

33 — 31.05.12 — 14:01

(22) отсортируйте справочник по коду, тогда самый нижный элемент и будет то, что вы ищете.

  

R0mbes

34 — 31.05.12 — 14:21

Последний элемент : "00211746  "
Первый элемент:     "00000001  "

(29) запустил такую обработку:

<code>

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Код КАК Код
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Код";
    Результат = запрос.Выполнить().Выбрать();
    й=0;
    Пока Результат.Следующий() Цикл
        й=й+1;
        Код = Результат.Код;
        Попытка
        
            Номер = Число(Код);
            Код = СокрЛП(Код);
            Если СтрДлина(Код)<8 Тогда
                Сообщить(Код);
            КонецЕсли;    
        
        Исключение
            Сообщить(Код);
        
        КонецПопытки; 
    КонецЦикла; 
    
    сообщить(й);
КонецПроцедуры

</code>

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

(30) А как это сделать ?

  

R0mbes

35 — 31.05.12 — 14:24

(28) конфигурация комплексная автоматизация

  

Vitamax3

36 — 31.05.12 — 14:24

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

00211747 и записать.

  

R0mbes

37 — 31.05.12 — 14:25

Может и правда дело не в этом справочнике, а в каком то другом ?

  

R0mbes

38 — 31.05.12 — 14:25

(36) секунду

  

Vitamax3

39 — 31.05.12 — 14:26

(37) если запишет, то в другом 99% ;)

  

R0mbes

40 — 31.05.12 — 14:28

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

В данной транзакции уже происходили ошибки

«Не удалось записать единицу хранения остатков: {Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(1396)}: Ошибка при вызове метода контекста (Записать): Значение поля «Код» не уникально»

  

Vitamax3

41 — 31.05.12 — 14:36

А в (0), что без открытия формы создавал?

  

R0mbes

42 — 31.05.12 — 14:37

(41) с открытие но ошибка только сейчас выдалась ..

не понимаю где теперь искать концы

  

Случайный прохожий

43 — 31.05.12 — 14:40

Ищи подвох в единицах хранения остатков :)

  

Vitamax3

44 — 31.05.12 — 14:44

+(43) повтори свою обработку для справочника ЕдиницыИзмерения
и выдай первый код и последний

  

R0mbes

45 — 31.05.12 — 14:50

(44) я сделал как ты и сказал  в (36) — присвоил последнему элементу справочника «ЕдиницыИзмерения» код на единицу больше и все заработало, спасибо тебе !!!! Но причину я так и не могу понять, мистика ))

Спасибо всем ! я уже 2 часа вожусь с этой проблемой !!!! если бы не вы… было бы гораздо дольше =)

  

Vitamax3

46 — 31.05.12 — 14:57

(45) )))  «2 часа вожусь» ветка с 13:03 по 14:50 — быстро ты сдался однако.

  

R0mbes

47 — 31.05.12 — 15:15

(46) ну мои знания через 30 минут иссякли ! я перепробывал все что знал ) а на этом форуме обитают профи =)) мне это очень нравится !

  

Vitamax3

48 — 31.05.12 — 15:29

(47) заходи ещё. Набирайся опыта сидя на мисте. Если шефа убедишь )))

P.S. А коды не выложил по ЕдиницыИзмерения ((.

Мистика как то напрягает, может вылезти боком.

  

R0mbes

49 — 01.06.12 — 00:40

(48) Да босс одобрил это дело, мистика это точно. а коды там ничего подозрительного не было цифры и вначале и в конце…

Попробуем разобраться, почему появляется и как исправить ошибку: значение поля Код не уникально при обновлении 1С 8.3 (разновидности ошибки могут быть со значениями 002024, 002071 либо другими).

Она появляется когда мы создадим новый документ в 1с 8.3. Cистема присваивает новое значение элементу в автоматически, то есть в режиме автонумерации.

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

Ошибка в 1С: значение поля Код не уникально

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

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

Причина заключается в том, что система пытается прибавить единицу к числу 999, но для получающегося в результате прибавления значения «А1000» не достает разрядов.

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

Решение проблемы заключается в поиске ошибочно пронумерованного элемента и исправления его на адекватный. Этот способ подразумевает смену нумерации кода и у всех последующих за ним элементов.

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

Наши постоянные клиенты по 1С:

Корона Лифт

Гознак

Накфф

Рембаза

Rozara

Как починить?

Для устранения используем обработку вида «УниверсальныеПодборкиИОбработкаОбъектов» (нужен диск ИТС).

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

Исправление ошибки - значение поля код не уникально с помощью перенумерации

Если все же ошибку устранить не получается — звоните мы поможем!

  • Стоимость работ специалистов IT Rush — 2000 руб./час
  • Абонемент от 50 часов в месяц – 1900 руб./час
  • Абонемент от 100 часов в месяц – 1800 руб./час

Нам доверяют:

 +3 

Распечатать

Значение поля Код не уникально или Значение поля Номер не уникально

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

Значение поля «Код» не уникально или Значение поля «Номер» не уникально 

Что делать? Перенумеровывать )

Нужно восстановить нумерацию документов или элементов справочника:

Пользователю

Посмотрите: Перенумерация документов, справочников, и сама Обработка Универсальные подбор и обработка объектов

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

Программисту:

Посмотрите примеры выше и дополнительно: Как сбросить счётчик нумерации документов или справочников

В модуле ПередЗаписью() дописать функционал проверки:

Код 1C v 8.х


//Проверим текущий номер документа и установим новый если он занят
Если НомерЗанят(Номер) Тогда
УстановитьНовыйНомер();
КонецЕсли;

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

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

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

  1. Попытаться высвободить свободные коды, удалив помеченные на удаление объекты;
  2. Затем, выполнить процедуру перенумерации объектов (справочника, плана видов характеристик и т.п.) и вызвать программно метод ОбновитьНумерациюОбъектов() для проблемного объекта метаданных;
  3. Если не помогло, увеличить в конфигураторе длину кода объекта метаданных (справочника, плана видов характеристик и т.п.) и также программно вызвать метод ОбновитьНумерациюОбъектов() для проблемного объекта метаданных;

Поделиться страницей в соц.сетях

Ermak
12.11.2015 14:44 Прочитано: 2482

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

Код 1C v 8.х

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

Реклама на портале

E_Migachev
13.11.2015 01:22 Ответ № 1

А Зачем удалять, просто измени/ обнови ее?!

Ermak
13.11.2015 07:22 Ответ № 2

Можете показать как

E_Migachev
13.11.2015 23:44 Ответ № 3

Выборка.ПолучитьОбъект().Удалить();

НовЭл=Данные.СоздатьЭлемент();

заменить на:

НовЭл=Выборка.ПолучитьОбъект();

Ermak
16.11.2015 09:03 Ответ № 4

Не понимаю почему не работает?

Код 1C v 8.х

 		
Пока Данные.Выбрать().Следующий() Цикл
Если Не ЗначениеЗаполнено(Данные.Выбрать().Код) Тогда
НовЭл=Данные.СоздатьЭлемент();
НовЭл.Код=ЛС;
НовЭл.Наименование=Адрес;
НовЭл.ФИО=ФИО;
НовЭл.Телефон=ТЕЛЕФОН;
Состояние("Загрузка данных Абонент ГРО = "+ НовЭл.Ссылка);
НовЭл.Записать();
Иначе
Данные.Выбрать().ПолучитьОбъект().Удалить();
КонецЕсли;
КонецЦикла;
Ermak
16.11.2015 09:47 Ответ № 5

Выдает ошибку

{Форма.Форма.Форма(36)}: Ошибка при вызове метода контекста (Записать)

НовЭл.Записать();

по причине:

Значение «101000014» поля «Код» не уникально

Код 1C v 8.х

 			Если Не ЗначениеЗаполнено(Данные.Выбрать().Код) Тогда
НовЭл=Данные.СоздатьЭлемент();
НовЭл.Код=ЛС;
НовЭл.Наименование=Адрес;
НовЭл.ФИО=ФИО;
НовЭл.Телефон=ТЕЛЕФОН;
Состояние("Загрузка данных Абонент ГРО = "+ НовЭл.Ссылка);
НовЭл.Записать();
Иначе
НовЭл=Данные.Выбрать().ПолучитьОбъект();
НовЭл.Код=ЛС;
НовЭл.Наименование=Адрес;
НовЭл.ФИО=ФИО;
НовЭл.Телефон=ТЕЛЕФОН;
Состояние("Загрузка данных Абонент ГРО = "+ НовЭл.Ссылка);
НовЭл.Записать();
КонецЕсли;
IBReiter
16.11.2015 12:59 Ответ № 6

Ошибка вроде описана, все понятно.

Куда выборка  ваша подевалась? Ерунду пытаетесь сейчас сделать

Ermak
16.11.2015 13:17 Ответ № 7

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

Код 1C v 8.х

 ФайлДБФ = Новый XBASE;
ФайлДБФ.Кодировка = КодировкаXBase.OEM;
ФайлДБФ.ОткрытьФайл(ИмяФайлаДанных);
ФайлДБФ.Первая();
Номер=0;
Данные=Справочники.ЛицевыеСчетаАбонентовГРО;
Выборка=Данные.Выбрать();
Пока НЕ ФайлДБФ.ВКонце() Цикл
ЛС = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("LSHET"));
ФИО = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("FIO"));
РАЙОН = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("PUNKT"));
УЛ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("STREET"));
ДОМ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("HOUSE"));
БУК = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("HOUSEPSTFX"));
КОРП = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("KORPUS"));
КВ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("FLAT"));
КОМ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("KOMN"));
ПЛИТА = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("PLITA"));
КОЛОНКА = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("KOLONKA"));
ТЕЛЕФОН = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("TELEPHONE"));
ТО_ПЛИТА = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("TO_PLITA"));
ТО_КОЛОНКА = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("TO_KOLONKA"));
ДОЛГГАЗ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("DOLG_GAZ"));
ДОЛГТО = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("DOLG_TO"));
Если КОМ="0" Тогда
КОМ=" ";
Иначе
КОМ=", К" + КОМ;
КонецЕсли;
Если КОРП="" Тогда
КОРП="";
Иначе
КОРП=", Корп" + КОРП;
КонецЕсли;
Адрес= РАЙОН + "," + " " + УЛ + "," + ДОМ + БУК + КОМ + "," + КВ + КОРП;
Пока Выборка.Следующий() Цикл
Если Не ЗначениеЗаполнено(Выборка.Код) Тогда
НовЭл=Данные.СоздатьЭлемент();
НовЭл.Код=ЛС;
НовЭл.Наименование=Адрес;
НовЭл.ФИО=ФИО;
НовЭл.Телефон=ТЕЛЕФОН;
НовЭл.ОбменДанными.Загрузка=Истина;
Для Каждого Стр из НовЭл.Оборудование Цикл
Стр.Модель=Перечисления.ВидОборудования.ГазоваяПлита;
Стр.Тип=ПЛИТА;
КонецЦикла;
Состояние("Загрузка данных Абонент ГРО = "+ НовЭл.Ссылка);
НовЭл.Записать(); 
Иначе
Выборка.ПолучитьОбъект().Удалить();
КонецЕсли;
КонецЦикла;
ФайлДБФ.Следующая(); 
КонецЦикла;
ФайлДБФ.ЗакрытьФайл();
IBReiter
16.11.2015 13:26 Ответ № 8

У вас есть элементы с незаполненным кодом?

Ermak
16.11.2015 14:15 Ответ № 9

Нет, все заполнены

IBReiter
16.11.2015 15:04 Ответ № 10

Значит вот это условие у вас никогда не выполнится

Код 1C v 8.3

 

Если Не ЗначениеЗаполнено(Выборка.Код) Тогда
НовЭл=Данные.СоздатьЭлемент();
НовЭл.Код=ЛС;
НовЭл.Наименование=Адрес;
НовЭл.ФИО=ФИО;
НовЭл.Телефон=ТЕЛЕФОН;
НовЭл.ОбменДанными.Загрузка=Истина;
Для Каждого Стр из НовЭл.Оборудование Цикл
Стр.Модель=Перечисления.ВидОборудования.ГазоваяПлита;
Стр.Тип=ПЛИТА;
КонецЦикла;
Состояние("Загрузка данных Абонент ГРО = "+ НовЭл.Ссылка);
НовЭл.Записать(); 
Иначе

IBReiter
16.11.2015 15:06 Ответ № 11

Что значит «загружаю данные если данные существую то перезаписываем» — что существует? что перезаписываем? какие данные?

Ermak
16.11.2015 15:44 Ответ № 12

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

IBReiter
16.11.2015 16:31 Ответ № 13

Запрос = Новый Запрос(«Выбрать Ссылка Из Справочник.ВашСправочник»);

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл ОБ = Выборка.Ссылка.ПолучитьОбъект(); ОБ.Удалить(); КонецЦикла;

Пока Условие по файлу Цикл ОБ = Справочники.ВашСправочник.СоздатьЭлемент(); ОБ.Записать(); КонецЦикла;

Ermak
16.11.2015 16:47 Ответ № 14

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

Ermak
16.11.2015 17:01 Ответ № 15

Код 1C v 8.х

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

Вы так имели ввиду?

IBReiter
16.11.2015 17:03 Ответ № 16

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

Ermak
16.11.2015 17:08 Ответ № 17

Как тогда быть

IBReiter
16.11.2015 17:12 Ответ № 18

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

Ermak
16.11.2015 17:22 Ответ № 19

Почему в ТЧ не записывает

Код 1C v 8.х

 	ФайлДБФ = Новый XBASE;
ФайлДБФ.Кодировка = КодировкаXBase.OEM;
ФайлДБФ.ОткрытьФайл(ИмяФайлаДанных);
ФайлДБФ.Первая();
Номер=0;

Запрос = Новый Запрос("ВЫБРАТЬ
| ЛицевыеСчетаАбонентовГРО.Ссылка,
| ЛицевыеСчетаАбонентовГРО.Код
|ИЗ
| Справочник.ЛицевыеСчетаАбонентовГРО КАК ЛицевыеСчетаАбонентовГРО");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл 
ОБ = Выборка.Ссылка.ПолучитьОбъект(); 
ОБ.Удалить(); 
КонецЦикла;

Пока НЕ ФайлДБФ.ВКонце() Цикл
ЛС = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("LSHET"));
ФИО = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("FIO"));
РАЙОН = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("PUNKT"));
УЛ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("STREET"));
ДОМ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("HOUSE"));
БУК = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("HOUSEPSTFX"));
КОРП = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("KORPUS"));
КВ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("FLAT"));
КОМ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("KOMN"));
ПЛИТА = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("PLITA"));
КОЛОНКА = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("KOLONKA"));
ТЕЛЕФОН = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("TELEPHONE"));
ТО_ПЛИТА = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("TO_PLITA"));
ТО_КОЛОНКА = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("TO_KOLONKA"));
ДОЛГГАЗ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("DOLG_GAZ"));
ДОЛГТО = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("DOLG_TO"));
Если КОМ="0" Тогда
КОМ=" ";
Иначе
КОМ=", К" + КОМ;
КонецЕсли;
Если КОРП="" Тогда
КОРП="";
Иначе
КОРП=", Корп" + КОРП;
КонецЕсли;
Адрес= РАЙОН + "," + " " + УЛ + "," + ДОМ + БУК + КОМ + "," + КВ + КОРП;
НовЭл = Справочники.ЛицевыеСчетаАбонентовГРО.СоздатьЭлемент();
НовЭл.Код=ЛС;
НовЭл.Наименование=Адрес;
НовЭл.ФИО=ФИО;
НовЭл.Телефон=ТЕЛЕФОН;
Для Каждого Стр из НовЭл.Оборудование Цикл
Стр.Модель=Перечисления.ВидОборудования.ГазоваяПлита;
Стр.Тип=ПЛИТА;
КонецЦикла;
Состояние("Загрузка данных Абонент ГРО = "+ НовЭл.Ссылка);
НовЭл.Записать(); 
ФайлДБФ.Следующая(); 
КонецЦикла;
ФайлДБФ.ЗакрытьФайл();

IBReiter
16.11.2015 17:24 Ответ № 20

Это которая НовЭлемент.Оборудование ?

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

Ermak
16.11.2015 17:25 Ответ № 21

Покажите на примере как добавить

IBReiter
16.11.2015 17:29 Ответ № 22

НоваяСтрока = НовЭл.Оборудование.Добавить()

Ermak
17.11.2015 09:46 Ответ № 23

Спасибо разобрался!

Ermak
17.11.2015 09:46 Ответ № 24

Вопрос закрыт!

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

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове контекста извлечьвсе
  • Ошибка при вызове конструктора чтениеzipфайла некорректный формат файла
  • Ошибка при вызове конструктора чтение текста
  • Ошибка при вызове конструктора уникальныйидентификатор
  • Ошибка при вызове конструктора уникальный идентификатор недопустимое значение параметра