Меню

1с заказы ошибка записи справочников

  1. Всем доброго времени суток!

    Платформа: 1С:Предприятие 8.3 (8.3.6.2390)
    Конфигурация: Управление торговлей, редакция 11.2 (11.2.2.106)

    Пытаюсь создать новую номенклатуру:

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

    А в ответ получаю:

    {Форма.Форма.Форма(244)}: Ошибка при вызове метода контекста (Записать)
                    НоваяНоменклатураСпр.Записать();
    по причине:
    Ошибка при выполнении обработчика - 'ПередЗаписью'
    по причине:
    {Справочник.Номенклатура.МодульМенеджера(991)}: Преобразование значения к типу Булево не может быть выполнено
            И Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура.ВидНоменклатуры, "СодержитДрагоценныеМатериалы") Тогда

    Мне как-то, при создании номенклатуры, надо указать ДрагМатериал это или нет, так?
    Если да то как?


  2. nomad_irk

    Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.590
    Симпатии:
    998
    Баллы:
    204

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

  3. Вы всё «полезнее» и «полезнее» даёте ответы. И не лень писать бесполезный (пустой ответ)? Или вам за это какие-то балы дают, на форуме?
    Я просто не очень понимаю, если неохота отвечать или вопрос считаете через чур «банальным», зачем тратить своё время на пустой и бесполезный ответ и моё время, на прочтение этого ответа?

    P.S.
    Отладчиком я пользоваться умею и прежде чем сюда писать, я им уже воспользовался.
    В отладчике, упав в функцию :

    ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура.ВидНоменклатуры, "СодержитДрагоценныеМатериалы") Тогда

    увидел следующее: Результат Null


  4. nomad_irk

    Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.590
    Симпатии:
    998
    Баллы:
    204

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

    результат = NULL и что дальше? по какой причине такой результат? что нужно сделать, чтобы результат был отличный от NULL? вас эти вопросы не беспокоят вообще или вы не задавались этими вопросами?

    Можете, конечно, дальше сидеть и удивлятся тому факту, что результат работы функции — NULL……


  5. Dem0lisher

    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.261
    Симпатии:
    101
    Баллы:
    104

    На самом деле ответ про отладку действительно полезный.
    А вы ожидали, что вам скажут — «в строке 14387 замени букву ‘а’ на букву ‘б’ «?
    За вас в код никто разбираться не полезет, а если вы сами в нем разберетесь с помощью отладчика, то завтра вместо того, чтобы потратить 4 часа ожидая ответа на форуме найдете ответ сами за 15 минут.

    Функция вам вернула Null, вы провалились отладчиком в функцию и поняли, почему она вернула NULL?
    Или просто всплеснули руками и опубликовали очередное сообщение на форуме?

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

    — Объединение сообщений, 4 мар 2016

    Другое дело, если у вас отладчик туда не заходит — такое каждый день тут спрашивают :)


  6. bajiepka

    Offline

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

    Регистрация:
    26 сен 2014
    Сообщения:
    460
    Симпатии:
    31
    Баллы:
    54

    у вас запись идёт в попытке. выведите в какое-то поле на форме или в сообщение на клиенте результат функции ОписаниеОшибки() в исключении попытки. там вам и напишет про поле, которое не удаётся записать (изменить)

  7. Всё оказалось просто — ВидНоменклатуры я получал через НайтиПоНаименованию, а в моём случае имя группы совпадало с наименованием, в итоге Вид Номенклатуры ЭтоГруппа,
    что и приводило к ошибке.
    Всем спасибо


  8. LordMaverick

    Offline

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

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

    ну на признак группы тоже надо проверять :) хотя лучше не делать совпадающих названий


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

Ошибка разбора XML: Приложение 1С:Заказы

Ситуация:

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

Поиск причины по шагам

Шаг 1. Проверка access.log апача .

Приходят два запроса:

x.x.x.30 — — [30/Jun/2015:09:00:04 +0400] «GET /trade/ws/CustomerOrdersExchange.1cws?wsdl HTTP/1.1» 200 67058
x.x.x.30 — — [30/Jun/2015:09:00:06 +0400] «POST /trade/ws/CustomerOrdersExchange.1cws HTTP/1.1» 500 757

Первый успешно считывает описание сервиса

Второй приходит с ошибкой на стороне сервера.

Предположение: несовместимость форматов различных версий, что-то передается не в том формате, или с ошибочными данными

Шаг 2: частичное обновление конфигурации (полное пока нельзя, поскольку она с доработками и идет интеграция с сайтом, чтобы не вызывать возможных срывов в работе)

сохраняю конфигурацию

обновляю конфигурацию в режиме объединения/замещения

  • общие модули с именами МобильноеПриложениеЗаказыКлиентов* ( 4 шт)
  • XDTO-пакеты/Все
  • Web-сервисы/CustomerOrdersExchange
  • Планы обмена/МобильноеПриложениеЗаказыКлиентов

Тестирую, синхронизацию. проходит далее, но возникает ошибка «Не найден узел обмена для пользователя».

Шаг3:

Тут ошибка случайная, но тем, не менее, она возникла.(«Не найден узел обмена для пользователя»)

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

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

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

Шаг 4:

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

Предположение:  не совместимость запросов объединенных модулей

Надо отлаживать, но подключения к вэбсервисам почему-то не отлаживается, возможно проблема в платформе 8.3.5.1186.

Танцы с бубном, создание файлов «comcntrcfg.xml и webservicecfg.xml», добавление строки в «default.vrd», перезапуски, не дают результаты. Откладываем на потом.

Шаг 5

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

Накидываем форму обработки «Выполнятель» (для управляемой формы у меня не было).

Получается вот такой код-скрипт для начального тестирования:

MobileApplicationVersion  = "не 1";//Иначе потребует обновления
MobileDeviceID  = "1";
MobileDeviceID  = "18c07362-bdeb-439d-9f8b-59b19cefd670";//Уникальный идентификатор пользователя, вот тут проблема, что в функциях используется текущий пользователь
Ответ = МобильноеПриложениеЗаказыКлиентов.НачалоОбмена(MobileApplicationVersion, MobileDeviceID);

Сообщить(Ответ);
Попытка 
	Сообщить(Ответ.ResultMessage);
	Сообщить("Успешно "+Ответ.Success);
Исключение
КонецПопытки;

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

Теперь у меня код проходит на «Успешно=Истина».

Выполняем вторую часть кода:

Ответ2 = МобильноеПриложениеЗаказыКлиентов.ВыгрузитьСправочники(MobileDeviceID);
Попытка 
	Сообщить(Ответ2.ResultMessage);
	Сообщить("Успешно "+Ответ2.Success);
Исключение
КонецПопытки;

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

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

Шаг 6 

Фокус не прошел, т.к. запросы в схемах ссылаются на отсутствующие регистры.

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

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

Модифицируем запрос, проверяем дальше.

Тестирование справочников проходит успешно, в ответ выводится xml.

Но приложение все еще вылетает с ошибкой разбора.

Тестируем остальные методы сервиса…

Шаг 7

Ответ3 = МобильноеПриложениеЗаказыКлиентов.ВыгрузитьКлиентов(MobileDeviceID, Истина,"","");
Попытка 
	Сообщить(Ответ3.ResultMessage);
	Сообщить("Успешно "+Ответ3.Success);
Исключение
КонецПопытки;

Успешно!

Ответ4 = МобильноеПриложениеЗаказыКлиентов.ВыгрузитьНастройки(MobileDeviceID);
Попытка 
	Сообщить(Ответ4.ResultMessage);
	Сообщить("Успешно "+Ответ4.Success);
Исключение
КонецПопытки;

Ошибка:

Поле не найдено «РегистрироватьНаличные» <<?>>РегистрироватьНаличные КАК РегистрироватьНаличные,

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

Далее, отсутствует константа «ИспользоватьРасширенныеВозможностиЗаказаКлиента».

Попутно вызвал тестирование выгрузки прайса:

Ответ5 = МобильноеПриложениеЗаказыКлиентов.ВыгрузитьПрайсЛист(MobileDeviceID, Ложь, "")
Попытка 
	Сообщить(Ответ5.ResultMessage);
	Сообщить("Успешно "+Ответ5.Success);
Исключение
КонецПопытки;

Заключение

Тут медлительный сервер впал в ступор, на полчаса и сколько будет еще не известно (индикатора нет).

Ошибкой было: задание второго параметра Истина(Все цены/Измененные), но думаю при первом обмене это бы не помогло).

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

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

Тупик?

Оставил «на ночь», через час (по дате последней синхронизации) обмен успешно прошел.

Приложение

<config xmlns="http://v8.1c.ru/v8/comcntrcfg"> 
    <debugconfig debug="true" debuggerURL="tcp://localhost:1562"/> 
    <debugports range="1540:1690"/>
</config>

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

Отключение вывода сообщения об ошибки записи элемента справочника при Отказ=Истина в «ПередЗаписью» модуля объекта

Автор oooo800, 30 авг 2020, 22:46

0 Пользователей и 1 гость просматривают эту тему.

Самописная конфигурация, платформа 8.3.16, управляемые формы.
Для отдельных элементов справочника (по некоторым критериям, в частности — некоторым пользователям) нужно запретить устанавливать/снимать пометку удаления.
Через роли не подходит — ибо для других элементов (не подходящих под критерии) установка/снятие пометки не запрещается.
Для этого в модуле объекта этого справочника в событии ПередЗаписью делаю проверку на установку/снятие пометки удаления и другие критерии.
Устанавливаю

Отказ=Истина и вывожу

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


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

скорее всего отключить не получится — это механизм платформы!
такой же как вопрос при редактировании и закрытии формы: Данные были изменены. Сохранить изменения?
если только целиком переводить редактирование объекта в несвязанную форму и Запись помещать в Попытку …. 

но можно сделать проще, так как вы всеравно выводите бла-бла-бла, то в процедуре ПередЗаписью, добавьте команду


Процедура ПередЗаписью(Отказ)
//где-то в коде
        Отказ = Истина;
        ...

        //в конце
        Если Отказ Тогда
    ВызватьИсключение "бла-бла-бла";
        КонецЕсли;
КонецПроцедуры

сообщение: Не удалось записать
заменится на ваше: «бла-бла-бла»

если помогло нажмите: Спасибо!


Хотел сообщениями пользователю.
Но такой вариант, в принципе устраивает.
Спасибо.


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

если помогло нажмите: Спасибо!


Цитата: LexaK от 01 сен 2020, 10:15
oooo800, опять-же, это не совсем профессиональный подход, вернее совсем не профессиональный.
Перехватываете события кнопок: ОК, Записать и др.
там вызывайте свою процедуру проверки. и если она прошла, тогда записываете объект
иначе выводите свои сообщения и объект даже не записываете (соответственно не будет служебного сообщения об отказе)

Эта ситуация возникает при установке/снятии пометки удаления.
Вся эта ситуация «появляется» во время установки/снятия пометки удаления при Отказ=Истина в

ПередЗаписью(Отказ) модуля объекта справочника.
Как «отловить» установки/снятия пометки, иным способ, пока е знаю.
Установка/снятие может быть и через форму элемента (если «выведен» на нее соответствующий реквизит) , но чаще делается в форме списка.
Есть варианты «отловить» установку/снятие в модуле формы элемента ?
Так понимаю помечается же элемент, но пометка (в данном случае) происходит в форме списка.

Но «копки Ок» здесь нет.
Она выведена из игры. :)


ЦитироватьЭта ситуация возникает при установке/снятии пометки удаления.
Вся эта ситуация «появляется» во время установки/снятия пометки удаления при Отказ=Истина в

Дорогая редакция! Это делается следующим образом
в событии ПереЗаписью
1.определяете что производится пометка на удаление, тогда
2.проверяете ваше условие можноУдалять()
3.если нельзя,
    а.Выдаете свое сообщение!!!
    б.тут-же убираете пометку удаления, ПометкаУдаления = Ложь;
    в.Отказ при этом не торогаете, он так и остается Отказ = Ложь;

Все!!! системного сообщения не будет! объект/элемент запишется НО БЕЗ ПометкиУдаления 

если помогло нажмите: Спасибо!


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

"Пометка удаления" с именем элемента.

Добавлено: 01 сен 2020, 21:47


А еще лучше в это же окошко вывести свой текст…….

Добавлено: 02 сен 2020, 00:00


Но «ПоказатьОповещениеПользователя» доступно только на клиенте. :dfbsdfbsdf:


Поле объекта недоступно для записи в 1С

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

Причины появления ошибки

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

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

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

Доступно только для чтения данных

При работе с объектами 1С различают два способа обращения к данным:

  • ссылка — содержит только представление объекта, часто это код и наименование. Сам объект не загружается. Доступ к реквизитам получают разыменованием: обращением через точку. Ссылки читаются из базы, но не изменяются;
  • объект — включает данные в полном объеме, в т. ч. реквизиты, табличные части, которые можно создавать, удалять и редактировать.

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

Для перехода к месту ошибки:

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

В открывшемся служебном окне в нижней части конфигуратора отразится информация о месте сбоя:

  • Поле объекта недоступно для записи (ВалютаДенежныхСредств) — тест ошибки и имя элемента, куда программа пытается сохранить данные;
  • Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(137) — путь до модуля, где расположена выполняемая строка кода, и порядковый номер строки с ошибкой;
  • НайденныйБанковскийСчет.ВалютаДенежныхСредств = БанковскийСчет.ВалютаДенежныхСредств — команда записи изменений, в которой возникает сбой.

Чтобы исправить ошибку:

1. Поставьте точку останова на строке кода из служебного сообщения.

2. Перейдите в режим отладки конфигурации по кнопке Начать отладку.

3. Выполните действия, приводящие к появлению ошибки, и исполнение программы остановится на отмеченной строке кода;

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

  • НайденныйБанковскийСчет — содержит ссылку на элемент справочника Банковские счета;

  • ВалютаДенежныхСредств — реквизит справочника Банковские счета, имеет ссылочный тип данных на справочник Валюта.

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

5. Для получения объекта впишите строку кода с использованием соответствующего метода:

  • документы, справочники, планы счетов и др. — ПолучитьОбъект();
  • константы, перечисления, регистры и др. — Получить()Прочитать();
    Подробное описание методов смотрите в Синтакс-Помощнике.

6. В выражении замените ссылку на объект.

Объекты конфигурации делятся:

  • объекты (ДокументОбъект.[Имя] и др.) — можно найти в базе по ссылке. На вкладке Прочее в окне редактирования объекта конфигурации есть Модуль объекта;
  • набор записей — для изменения одной записи регистров, перечислений используют менеджер записи, для констант — менеджер значения.

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

Попытка изменить системные поля

В 1С существуют специальные системные поля, которым программа присваивает значения по умолчанию:

  • порядковый номер строки;
  • номер группировки;
  • уровень группировки.

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

Один из вариантов решения:

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

2. Добавьте свой реквизит в табличную часть кнопкой Добавить колонку реквизита.

3. Замените в строке кода, где возникает ошибка, системное поле на имя созданного реквизита.

Имя переменной совпадает с именем объекта

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

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

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

Изменение элемента формы

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

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

Чтобы изменить значение элемента, используют:

  • реквизиты объекта;

  • реквизиты, созданные в форме;

  • свойство ТекущиеДанные при обращении к данным текущей строки табличной части.

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

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

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

Ошибка возникает при создании нового документа. При записи программа 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 руб./час

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

  • ООО Компит

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • 17923 ошибка ауди а6 с5
  • 17915 ошибка пассат б5 adr