Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 22:56

Автозаполнение справочника данными из документа

Автор Чернов Андрей, 26 мая 2013, 12:11

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

Чернов Андрей

Доброго времени суток! В мною разрабатываемой конфигурации есть документ "Заявка" (заказ покупателя), в табличной части которого приводится список единиц, которые необходимо произвести предприятию, с такими значениями, как "Наименование", "Чертёжное обозначение" и прочее. Также есть справочник "Номенклатура" в который должна записываться информация об этих единицах ("Наименование", "Чертёжное обозначение") прямиком из табличной части документа "Заявка", сразу после проведения этого документа. Подскажите пожалуйста, как это можно осуществить?

Dethmontt

Создание справочников из документов это как минимум косяк в архитектуре конфигурации (плохой ТОН)

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

Чернов Андрей

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

Dethmontt

//В каком нибудь событии документа

Для каждого интераторТЧ Из ИмяТабличнойЧастиДокумента Цикл //Если управляемы формы то процедура должна быть на сервере и вместо "ИмяТабличнойЧастиДокумента" должно быть "Объект.ИмяТабличнойЧастиДокумента"
   Спр = Справочники.Шноменклатурище.СоздатьЭлемент();
   Спр.Наименование = ИнтераторТЧ.Наименование;
   Спр.Записать();
КонецЦикла;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Чернов Андрей

Вставил код в модуль формы документа, ничего не происходит. У меня он выглядит так:

Процедура ТабличнаяЧастьНомерСтрокиПриИзменении(Элемент)
   Для каждого СтрокаТЧ Из ТабличнаяЧасть Цикл
   Спр = Справочники.Номенклатура.СоздатьЭлемент();
   Спр.Наименование = СтрокаТЧ.ЧертёжноеОбозначение;
   Спр.НаименованиеНоменлатуры = СтрокаТЧ.Наименование;
   Спр.Записать();
КонецЦикла;
КонецПроцедуры

Yura063

Цитата: Чернов Андрей от 27 мая 2013, 08:55
Вставил код в модуль формы документа, ничего не происходит. У меня он выглядит так:

Процедура ТабличнаяЧастьНомерСтрокиПриИзменении(Элемент)
   Для каждого СтрокаТЧ Из ТабличнаяЧасть Цикл
   Спр = Справочники.Номенклатура.СоздатьЭлемент();
   Спр.Наименование = СтрокаТЧ.ЧертёжноеОбозначение;
   Спр.НаименованиеНоменлатуры = СтрокаТЧ.Наименование;
   Спр.Записать();
КонецЦикла;
КонецПроцедуры
Проверьте какие данные приходят!
Перед Спр.Записать();, подставьте Сообщить(СтрокаТЧ.ЧертёжноеОбозначение); или проверьте данные при отладки!
Помогли, отблагодари!

Чернов Андрей

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

Yura063

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

Чернов Андрей


Dethmontt

А уникальность по какому полю у вас должна быть?
По Наименованию или по ЧертёжноеОбозначение?
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск