Создание позиции в справочнике через док-т

  • Автор темы Автор темы ich13
  • Дата начала Дата начала
как мне кажется функция неверно написана.

Код:
Функция НайтиПоНаименованию(Наименование) Экспорт
С=Новый ("Справочник.Номенклатура");
Если С.НайтиПоНаименованию(Наименование,1,Справочники.Номенклатура)=0 Тогда
С.СоздатьЭлемент();
С.Наименование=Наименование;
С.Записать();
Сообщить(" Создан новый элемент: "+Наименование");
КонецЕсли;
Возврат(С.ТекущийЭлемент());
КонецФункции
если не ошибся - то как то так
P.S. не помню синтаксиса НайтиПоНаименованию - потому данную строку не правил абсолютно
 
KiR , у чела 8-ка.
Необходимо из табличной части формы документа создать (в случае если она отсудствует) позицию в справочнике (номенклатура) , и создать эту позицию нужно в выбираемой в этой же табличной части подгруппе вышеупомянутого справочника.
Т.е., чтобы строка вводилась прям в табличную часть? Так, мне кажется нельзя. А что будет, если юзер не допишет слово до конца? Вы что-то непонятное делаете. И почему возвращаемое значение ничему не присвиваете?
 
Картина маслом)). На предприятии есть номенклатура ОгурцыСоленые, пользователи зарпосто будут создавать ОгурцыСолные,Огурцы_Соленые,ОгурцыСолн-е, СоленыеОгурцы, и т.д. и т.п. Делали бы реквизит таб части ссылкой на тот справочник, элементы которого будут использоваться в этой табличной части. Вы, как мне думается, пошли не верным путем.

А если используете НайтиПоНаименованию, посмотрите, какой тип у вас Наименования. Он должен быть строковым и желательно использовать СокрЛП(Наименование). 1 - это,я так понял ТочноеСоответствие, его можно не использовать,я думаю. А чтоб создать элемент группы вам просто надо указать его родителя, ну в вашем случае: С.Родитель = //ну и тут собственно родителя, который вам нужен, т.е группу.

И еще, Автор, Вас гдето спросили, какая версия конфы и платформы. Думаете тут всем интересно сидеть и гадать? Если типовая (в чем я ну очень сомневаюсь) тогда вам еще нужно будет заполнять обязательные для заполнения реквизиты элемента спраовчника "Номенклатура", такие как "ВидНоменклатуры", "базоваяЕдиницаИзмерения".
 
Картина маслом)). На предприятии есть номенклатура ОгурцыСоленые, пользователи зарпосто будут создавать ОгурцыСолные,Огурцы_Соленые,ОгурцыСолн-е, СоленыеОгурцы, и т.д. и т.п.
Замечание резонно но, учитываться будут изделия имеющие маркировку строго установленного формата.

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

И еще, Автор, Вас гдето спросили, какая версия конфы и платформы. Думаете тут всем интересно сидеть и гадать?...

Платформа : Предприятие 8.0
Конфигурация в процессе создания. Мной! :)
 
Ну тогда примерно так:
ТекущаяСтрока=Табчасть.ТекущиеДанные;
С=Справочники.Номенклатура //Доступ к менеджеру объекта
Если С.НайтиПоНаименованию(ну и тут уж сами определитесь)<>неопределено тогда
//Сообщите пользователю об этом, через вопрос-ответ или хотябы через Сообщить()
попытка
НовыйЭлемент=С.СоздатьОбъект();

НовыйЭлемент.Наименование=ТекущаяСтрока.ПолеСнаименованием;
НовыйЭлемент.Родитель=// укажите родителя, которого вам нужно
....
//Список реквизитов элемента справочника Номенклатура которые должны создаваться
...
НовыйЭлемент.Записать();
Исключение
Сообщить("Элемент справочника "+ ТекущаяСтрока.ПолеСНаименованием+" не возможно создать");
конецПопытки;
Иначе
//код по увеличению количества.
КонецЕсли;


Вот как-то так,я думаю).
 
KiR , у чела 8-ка.

Т.е., чтобы строка вводилась прям в табличную часть? Так, мне кажется нельзя. А что будет, если юзер не допишет слово до конца? Вы что-то непонятное делаете. И почему возвращаемое значение ничему не присвиваете?

Как я это вижу в идеале: в форме документа, в поле наименование табличной его части вводятся соответствующие данные, программа дописывает наименование если оно уже известно (тип данных реквизита Наименования - СсылкаСправочники.Наменклатура) а если нет создает его, создает в подгруппе выбираемой в этой же табличной части в соответствующем поле. Если все это невозможно релизовать из одной формы документа, то не могли бы посоветовать как\через какие объекты, методы можно это сделать?
 
Посмотрите такое свойство поля таб.части как "БыстрыйВыбор", если мне не изменяет память - то именно это свойство отвечает за подстановку....Или обработку события АвтоПодборТекста...Точно не помню. Ну а всесь остальной код остается в силе, его можно засунуть в обработчик "окончаниеВводаТекста" у данного поля

Единственное, вам нужно определиться, как остальные реквизиты будут заполняться у Номенклатуры.
 
Стыдно спрашивать но: Как присвоить переменной данные из текущей ячейки табличной части формы документа?
 
Примерно так:
ТекСтрока=ЭлементыФормы.ТабличнаяЧасть.ТекущаеДанные;
Переменная=ТекСтрока.ИмяКолонки;
 
Как я это вижу в идеале: в форме документа, в поле наименование табличной его части вводятся соответствующие данные, программа дописывает наименование если оно уже известно (тип данных реквизита Наименования - СсылкаСправочники.Наменклатура) а если нет создает его, создает в подгруппе выбираемой в этой же табличной части в соответствующем поле. Если все это невозможно релизовать из одной формы документа, то не могли бы посоветовать как\через какие объекты, методы можно это сделать?
Т.е. создание будет происходить, когда ползователь сделает активным другой элемент?
Мне кажется создание или нахождение должно происходить при нажатии кнопки.
 
Т.е. создание будет происходить, когда ползователь сделает активным другой элемент?
Мне кажется создание или нахождение должно происходить при нажатии кнопки.

Расчитываю что создание будет происходить при "Окончание ввода текста" - событии формы документа
 
Расчитываю что создание будет происходить при "Окончание ввода текста" - событии формы документа
Дело в том, что если пользователь не допишет - "ОгурцыСол" - элемент уже создастся. Надо еще предусмотреть возможность переименовывания. А если опечатка?
 
//НовыйЭлемент=Справочники.Номенклатура.СоздатьОбъект(); - подобная запись должна быть выше где-нибудь.
НовыйЭлемент.Родитель=ПодгруппаВамиВыбранная;//смотрите только, чтобы типы были соответствующими.

//почитайте в синтаксис-помошнике про "родитель".

А по поводу "если пользователь не допишет..." - надо посмотреть, как происходить будет автоподстановка. Если найдено более полное название - то пусть уж оно подтавляется. Думаю, реализовать это будет не сложно.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab