Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
21 Сен 2017, 13:27
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Не уникальный  (Прочитано 1928 раз)

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

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Добрый день! С толкнулся с такой глупой ошибкой
{Форма.Форма.Форма(120)}: Ошибка при вызове метода контекста (Записать)
         НовЭл.Записать();
по причине:
Значение "101000014" поля "Код" не уникально

 и не могу понять почему?

ИмяФайлаДанных="\\Ftp\ftp\ExportWindows\export.dbf";
ФайлДБФ = Новый XBASE;
ФайлДБФ.Кодировка = КодировкаXBase.OEM;
ФайлДБФ.ОткрытьФайл(ИмяФайлаДанных);
ФайлДБФ.Первая();
Номер=0;
ТЗ=Новый ТаблицаЗначений;
Запрос = Новый Запрос("ВЫБРАТЬ
| ЛицевыеСчетаАбонентовГРО.Код,
| ЛицевыеСчетаАбонентовГРО.Наименование,
| ЛицевыеСчетаАбонентовГРО.ФИО,
| ЛицевыеСчетаАбонентовГРО.Телефон,
| ЛицевыеСчетаАбонентовГРО.КороткийАдрес,
| ЛицевыеСчетаАбонентовГРО.Персонал,
| ЛицевыеСчетаАбонентовГРО.Участок,
| ЛицевыеСчетаАбонентовГРО.Оборудование.(
| Ссылка,
| НомерСтроки,
| Тип,
| Модель,
| Дата
| ),
| ЛицевыеСчетаАбонентовГРО.Долги.(
| Ссылка,
| НомерСтроки,
| Услуга,
| СуммаОстаток
| ),
| ЛицевыеСчетаАбонентовГРО.Ссылка
|ИЗ
| Справочник.ЛицевыеСчетаАбонентовГРО КАК ЛицевыеСчетаАбонентовГРО");
ТЗ = Запрос.Выполнить().Выгрузить();

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


Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 138
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
Re: Не уникальный
« Ответ #1: 24 Фев 2016, 16:50 »
наверное такой элемент с таким кодом уже есть в базе
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн Kironten

  • *****
  • Сообщений: 867
  • РЕПУТАЦИЯ: 181
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
Re: Не уникальный
« Ответ #2: 24 Фев 2016, 16:55 »
Проверь длины кодов в справочнике базы и в дбф-е.
Возможно при попытке записи код обрезается, и из-за этого становится не уникальным

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Re: Не уникальный
« Ответ #3: 24 Фев 2016, 16:55 »
наверное такой элемент с таким кодом уже есть в базе
да он есть но у меня же условие стоит
Если ТЗ.Найти(ЛС,"Код")=Неопределено Тогда
, если он уже есть значит мы не создаем, почему он создает?
Добавлено: 24 Фев 2016, 16:57

А влияет если у них разный тип? Я переводил в один тип
...
Для Каждого СтрТЗ из ТЗ Цикл
КодЛС=Формат(СтрТЗ.Код,"ЧГ=0");
Если КодЛС<>ЛС Тогда
...
и все равно он выводил ошибку. В отладчике проверял не обрезает

Оффлайн Kironten

  • *****
  • Сообщений: 867
  • РЕПУТАЦИЯ: 181
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
Re: Не уникальный
« Ответ #4: 24 Фев 2016, 17:16 »
А влияет если у них разный тип? Я переводил в один тип
Должно влиять.
Обычно Код в базе это строковое значение.
Поэтому переводите значение из иксбейз в тип кода в базе, и уже так ищите.
Причем если в базе код - строка, то заодно и через СокрЛП прогоните и там и там, и уже потом ищите.

Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 138
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
Re: Не уникальный
« Ответ #5: 24 Фев 2016, 17:18 »
СтрЗаменить(СокрЛП(ЛС),Символы.НПП,"")
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Re: Не уникальный
« Ответ #6: 24 Фев 2016, 17:21 »
СтрЗаменить(СокрЛП(ЛС),Символы.НПП,"")
все равно выводит ошибку, что еще может быть не так?
		КодЛС=СтрЗаменить(СокрЛП(ЛС),Символы.НПП,"");
Если ТЗ.Найти(КодЛС,"Код")=Неопределено Тогда

Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 138
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
Re: Не уникальный
« Ответ #7: 24 Фев 2016, 17:25 »
может типы разные?
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Re: Не уникальный
« Ответ #8: 24 Фев 2016, 17:26 »
В отладчике посмотрел Тип Строка и без пробелов, почему тогда условие не работает?

Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 138
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
Re: Не уникальный
« Ответ #9: 24 Фев 2016, 17:28 »
а тип кода в табличке?
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
165 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
88 Сообщений
alex0402
87 Сообщений
Golickoff Golickoff
32 Сообщений
ilyay ilyay
30 Сообщений
Kironten
29 Сообщений
AsadRoman
26 Сообщений
BuhRust
26 Сообщений
AIFrame
26 Сообщений
Варвар
20 Сообщений

* Кто онлайн

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal