ЗагрузкаИзТабличногоДокумента

1. Touh_Of_soul) 21.03.18 13:53 Сейчас в теме
Как сделать так чтоб номенклатура не создавалась если она уже есть с таким же названием и № по кат?
в Справочники.Номенклатура
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 21.03.18 15:35 Сейчас в теме
(1)
Если СсылкаНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда 
//Создаем
КонецЕсли;

А вообще, стандартная загрузка ТЧ документа, она же ничего фейкового не создает. Сколько раз пользовался, никаких проблем не испытывал. Делаешь искать по наименованию и все, никаких вычисляемых формул делать вроде и не надо
3. Touh_Of_soul) 21.03.18 15:40 Сейчас в теме
(2)
Если СправочникСсылка = Справочники.Номенклатура.ПустаяСсылка() Тогда //Создаем КонецЕсли;

А можно весь код
4. Boneman 298 21.03.18 15:53 Сейчас в теме
(3) конфигурация какая ?
Чтобы номенклатура не создавалась повторно, там в вашей обработке скорее всего выбор "режим загрузки" надо изменить. Там какие варианты ?
В ЗУПе, стандартная на этом месте крыжик - не создавать новых элементов. У вас какая-то другая, но думаю принцип тот же.

никакой код писать не нужно !
6. Touh_Of_soul) 21.03.18 15:54 Сейчас в теме
(4)Альфа-Авто: Автосалон+Автосервис+Автозапчасти ПРОФ, редакция 5.1 (5.1.10.09)
5. Touh_Of_soul) 21.03.18 15:54 Сейчас в теме
(2) Она создаёт новую номенклатуру хоть n количество раз хотя она уже есть такая же с таким же артикулем и наименованием..
С родителем проблему и с производителем решил н а тут как хз..
7. uk09 21.03.18 16:16 Сейчас в теме
Иван, добрый день!

Галочку в колонке "поле поиска" надо ставить. Обработка изначально не знает, по какому полю ей искать элемент справочника на случай, если он там уже есть. Поэтому ей нужно его указать.
Сама предпочитаю искать по коду, так как он, как правило, уникален. В колонке «Поле поиска» в строке «Код» ставим галочку. Теперь, если запись с таким кодом будет найдена, она будет заменена, в другом случае — создана.
8. Touh_Of_soul) 21.03.18 17:22 Сейчас в теме
(7)
Иван, добрый день!

Галочку в колонке "поле поиска" надо ставить. Обработка изначально не знает, по какому полю ей искать элемент справочника на случай, если он там уже есть. Поэтому ей нужно его указать.
Сама предпочитаю искать по коду, так как он, как правило, уникален. В колонке «Поле поиска» в строке «Код» ставим галочку. Теперь, если запись с таким кодом будет найдена, она будет заменена, в другом случае — создана.


Не работает пробовал уже так.
пример если
артикул АБВ а наименование 123 то он такую же уже не загрузит, но если

артикул АБВ а наименование 1234 тогда изменит уже существующую


А нужно чтоб если Артикуль=артикулу никогда новую не создавал и если артикуль и наименование совпадает тоже не создавал новую. Всё перепробовал бред один.. Хочу чтоб пользователи загружали всё номенклатуру из торг12. а потом уже создавали документ ПоступлениеТоваров, так как я не знаю как сделать что сразу загружать в табличную часть этой обработкой и когда нет номенклатуры он её создавал.

Думаю написать свою обработку но есть же штатная и хочется разобраться в ней.
9. uk09 21.03.18 17:25 Сейчас в теме
Прислать можете? Сегодня поглядела бы
13. Touh_Of_soul) 21.03.18 18:14 Сейчас в теме
(9)
Прислать файл настроек?
Прикрепленные файлы:
СпрНом_5.1АА.mxlz
Ном_АТОХИМИЯ.mxl
10. KVIKS 396 21.03.18 17:33 Сейчас в теме
Надо использовать события. Перед записью объекта запросом проверить 2 поля, и если что в отказ

В тело прописать
Запрос=новый запрос("ВЫБРАТЬ
|	Номенклатура.Ссылка
|ИЗ
|	Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|	Номенклатура.Наименование = &Наименование
|	И Номенклатура.Артикул = &Артикул");
Запрос.УстановитьПараметр("Наименование",Объект.Наименование);
Запрос.УстановитьПараметр("Артикул",Объект.Артикул);
Результат=Запрос.Выполнить().выбрать();
Если Результат.Следующий() тогда 
	//Значит нашел товар
	отказ=Истина;
КонецЕсли;	
Показать
Прикрепленные файлы:
14. Touh_Of_soul) 21.03.18 18:19 Сейчас в теме
(10)
Запрос=новый запрос("ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Наименование = &Наименование | И Номенклатура.Артикул = &Артикул"); Запрос.УстановитьПараметр("Наименование",Объект.Наименование); Запрос.УстановитьПараметр("Артикул",Объект.Артикул); Результат=Запрос.Выполнить().выбрать(); Если Результат.Следующий() тогда //Значит нашел товар отказ=Истина; КонецЕсли;


Сделал так, если артикул АБВ и наименование 123 и ещё раз это пытаться загрузить то не дублирует.
Но если артикул такой же а наименование другое то он создаёт..

А нужно чтоб не создавал.
так как Артикул не должен повторятся НИКОГДА! так как он всегда УНИКАЛЕН а наименование нет.
16. KVIKS 396 21.03.18 18:30 Сейчас в теме
(14)
Тогда только по одному артикулу оставьте фильтр
17. KVIKS 396 21.03.18 18:35 Сейчас в теме
(14)
Запрос можно усложнить
Запрос=новый запрос("ВЫБРАТЬ
|    Номенклатура.Ссылка
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Выбор когда &ЕстьАртикул тогда Номенклатура.Артикул = &Артикул иначе 
|     Номенклатура.Наименование = &Наименование
|    Конец");
Запрос.УстановитьПараметр("Наименование",Объект.Наименование);
Запрос.УстановитьПараметр("Артикул",Объект.Артикул);
Запрос.УстановитьПараметр("ЕстьАртикул",ЗначенниеЗаполнено(Объект.Артикул));
Результат=Запрос.Выполнить().выбрать();
Если Результат.Следующий() тогда 
    //Значит нашел товар
    отказ=Истина;
КонецЕсли;   
Показать

В этом случае если у товара указан артикул то поиск будет идти по артикулу и если нашел товар то отказ. Если Артикул не указан, то поиск будет идти по наименованию.
11. uk09 21.03.18 17:38 Сейчас в теме
артикул АБВ а наименование 1234 тогда изменит уже существующую

НайтиПоНаименованию(<Наименование>, <ТочноеСоответствие>, <Родитель>, <Владелец>)

Второй аргумент у функции НайтиПоНаименованию - Ложь. Запишите так - НайтиПоНаименованию(СокрЛП(ТекстЯчейки),Истина)
12. Touh_Of_soul) 21.03.18 18:13 Сейчас в теме
(11)
НайтиПоНаименованию(СокрЛП(ТекстЯчейки),Истина)

Если так СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ТекстЯчейки),Истина)

тогда он наименование ставит пусто
15. uk09 21.03.18 18:29 Сейчас в теме
Нет, я другое имела в виду: поиск по точному соответствию, если не найдено - номенклатура создается
   Если ЗначениеЗаполнено(Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ТекстЯчейки),Истина) ) Тогда
         Результат =СсылкаНоменклатуры.Ссылка;
  Иначе
         СсылкаНоменклатуры = Справочники.Номенклатура.СоздатьГруппу(); 
        СсылкаНоменклатуры.Код = СокрЛП(ТекстЯчейки); 
        СсылкаНоменклатуры.Наименование = СокрЛП(ТекстЯчейки); 
       Попытка 
            СсылкаНоменклатуры.Записать(); 
            Результат = СсылкаНоменклатуры.Ссылка; 
     Исключение
           Сообщить("Не удалось записать"); 
     КонецПопытки;
КонецЕсли;         
Показать
18. Touh_Of_soul) 21.03.18 18:45 Сейчас в теме
(15)
Если ЗначениеЗаполнено(Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(ТекстЯчейки),Истина) ) Тогда Результат =СсылкаНоменклатуры.Ссылка; Иначе СсылкаНоменклатуры = Справочники.Номенклатура.СоздатьГруппу(); СсылкаНоменклатуры.Код = СокрЛП(ТекстЯчейки); СсылкаНоменклатуры.Наименование = СокрЛП(ТекстЯчейки); Попытка СсылкаНоменклатуры.Записать(); Результат = СсылкаНоменклатуры.Ссылка; Исключение Сообщить("Не удалось записать"); КонецПопытки;


ничего не изменилось

Походу нельзя так( И получается если пользователь накосячит он создаст с таким же артикул но разным наименованием.. Эх..
19. Online-Ufa 21.03.18 19:23 Сейчас в теме
Глянь статью еще от 2010 г. с примером загрузки номенклатуры из excel с помощью этой обработки в УТ 10.3. Там же есть пример кода проверки уникальности номенклатуры как по наименованию, так и по артикулу.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)