Формирование поля реквизита формы, из данных других полей формы.
Всем доброго времени суток!
Есть идея формировать поле реквизита Наименование из двух или трех полей других реквизитов. Подскажите, как это сделать. Я понимаю, что надо описывать событие "При изменении" для реквизитов из которых формируется поле наименование основного реквизита. Но вот как обратится к самому полю, чтобы был определенный порядок заполнения? Например, поле наименования номенклатуры формируется из названия товара и производителя товара. Надо, чтобы в наименовании первым вставлялось название товара, а уж потом его производитель.
Есть идея формировать поле реквизита Наименование из двух или трех полей других реквизитов. Подскажите, как это сделать. Я понимаю, что надо описывать событие "При изменении" для реквизитов из которых формируется поле наименование основного реквизита. Но вот как обратится к самому полю, чтобы был определенный порядок заполнения? Например, поле наименования номенклатуры формируется из названия товара и производителя товара. Надо, чтобы в наименовании первым вставлялось название товара, а уж потом его производитель.
По теме из базы знаний
- Неочевидные нюансы записи управляемой формы
- Полезный код для программистов 1С (часть 3). Подготовка печатных форм + подсистема Управление печатью (БСП)
- Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3
- Новый взгляд на управляемые формы
- Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
пиши "при изменении" для товара и производителя товара одинаково
типа
&НаКлиенте
Процедура ТоварПриИзменении(Элемент)
объект.Наименование = объект.Товар+объект.ПроизводительТовара;
КонецПроцедуры
и
&НаКлиенте
Процедура ПроизводительТовараПриИзменении(Элемент)
объект.Наименование = объект.Товар+объект.ПроизводительТовара;
КонецПроцедуры
типа
&НаКлиенте
Процедура ТоварПриИзменении(Элемент)
объект.Наименование = объект.Товар+объект.ПроизводительТовара;
КонецПроцедуры
и
&НаКлиенте
Процедура ПроизводительТовараПриИзменении(Элемент)
объект.Наименование = объект.Товар+объект.ПроизводительТовара;
КонецПроцедуры
(3)Спасибо за помощь. Но есть небольшая проблема. Сделал так:
Само поле "Наименование" сделал недоступным для редактирования. Теперь при заполнении полей "Название" и "Производитель", поле "Наименование" выглядит так:
Не подскажите, как избавиться от надписи "ПолеФормы"?
&НаКлиенте
Процедура НазваниеПриИзменении(Разделитель)
Объект.Наименование = Объект.Название + Разделитель + Объект.Производитель;
КонецПроцедуры
&НаКлиенте
Процедура ПроизводительПриИзменении(Разделитель)
Объект.Наименование = Объект.Название + Разделитель + Объект.Производитель;
КонецПроцедуры
&СервереБезКонтекста
Процедура ОписаниеРазделителя(Разделитель)
Если Перечисления.Разделители.Запятая Тогда
Разделитель = ","
КонецЕсли;
Если Перечисления.Разделители.Точка Тогда
Разделитель = "."
КонецЕсли;
Если Перечисления.Разделители.Слэш Тогда
Разделитель = "/"
КонецЕсли;
Если Перечисления.Разделители.Пробел Тогда
Разделитель = " "
КонецЕсли;
КонецПроцедуры
ПоказатьСамо поле "Наименование" сделал недоступным для редактирования. Теперь при заполнении полей "Название" и "Производитель", поле "Наименование" выглядит так:
НазваниеТовараПолеФормыНазваниеПроизводителя
Не подскажите, как избавиться от надписи "ПолеФормы"?
или Объект.Наименование = Объект.Название + "(" + Объект.Производитель+ ")";
сделайте как-то так и не мучайтесь с разделителями
ВОТ Этого я не понял...
где так выглядит?
сделайте как-то так и не мучайтесь с разделителями
Само поле "Наименование" сделал недоступным для редактирования. Теперь при заполнении полей "Название" и "Производитель", поле "Наименование" выглядит так:
НазваниеТовараПолеФормыНазваниеПроизводителя
Не подскажите, как избавиться от надписи "ПолеФормы"?
НазваниеТовараПолеФормыНазваниеПроизводителя
Не подскажите, как избавиться от надписи "ПолеФормы"?
ВОТ Этого я не понял...
где так выглядит?
(6) aleks-lit,
ВОТ Этого я не понял...
где так выглядит?В форме у реквизита снял галку параметр "Доступность". В форме элемента, теперь поле недоступно для редактирования в ручную.
Хотелось бы предоставить пользователю выбор. Без разделителя работает корректно, можно ли сделать с разделителем?
ВОТ Этого я не понял...
где так выглядит?
Кстати, а зачем он вам?
вы что хотите, чтоб в разных местах он по разному выглядел?
или что?
вы что хотите, чтоб в разных местах он по разному выглядел?
или что?
Хотелось бы предоставить пользователю выбор. Без разделителя работает корректно, можно ли сделать с разделителем?
&СервереБезКонтекста
Процедура ОписаниеРазделителя(Разделитель)
Если Перечисления.Разделители.Запятая Тогда
Разделитель = ","
КонецЕсли;
Если Перечисления.Разделители.Точка Тогда
Разделитель = "."
КонецЕсли;
Если Перечисления.Разделители.Слэш Тогда
Разделитель = "/"
КонецЕсли;
Если Перечисления.Разделители.Пробел Тогда
Разделитель = " "
КонецЕсли;
КонецПроцедуры
Показать
(10) Сильно подозреваю, надо Заменить на и переделать функцию ОписаниеРазделителя так, чтобы она не валилась с ошибкой. Кстати, что такое "Разделитель"? Это реквизит формы или что?
Объект.Наименование = Объект.Название + Разделитель + Объект.Производитель;
Объект.Наименование = Объект.Название + ОписаниеРазделителя(Разделитель) + Объект.Производитель;
Хотелось бы предоставить пользователю выбор. Без разделителя работает корректно, можно ли сделать с разделителем?
тогда нужно, ввести в форму "поле выбора", где будут перечислены варианты разделителей.
и так же при изменении как в товаре и производителе.
PS по моему опыту для пользователей(юзверей), чем проще тем--лучше.
pps на крайняк говоришь, что это в принципе не возможно)))
&СервереБезКонтекста
Процедура ОписаниеРазделителя(Разделитель)
Если Перечисления.Разделители.Запятая Тогда
Разделитель = ","
КонецЕсли;
Если Перечисления.Разделители.Точка Тогда
Разделитель = "."
КонецЕсли;
Если Перечисления.Разделители.Слэш Тогда
Разделитель = "/"
КонецЕсли;
Если Перечисления.Разделители.Пробел Тогда
Разделитель = " "
КонецЕсли;
КонецПроцедуры
Показатьесли разделитель это реквизит формы, то вы сделали вапче непанятную фигню....
1. наСервереБезКонтекста - следовательно вы процедурой в переменную Разделитель пишите строковое значение которое нигде не используете
2. даже если по вашей задумке надо было значение переменной Разделитель впихнуть в РеквизитФормы Разделитель, то шишь вам, ибо у РекФор у вас тип Перечисление судя по всему, а у переменной Строка
3. оставил на закуску... зачем через перечисление, вместо Элементы.Разделитель.СписокВыбора.Добавить("/","Слэш(/)");
вот еще пункт 4 узрел
Если Перечисления.Разделители.Запятая Тогда
это простите что вам вернуть должно?
Очень хорошо описано в книге "1С:Предприятие 8.3. Практическое пособие разработчика". Страница 283.
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Наименование");
Поля.Добавить("ВидНоменклатуры");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Данные.ВидНоменклатуры) Тогда
Представление = Данные.Наименование + " (" + НРег(Строка(Данные.ВидНоменклатуры)) + ")";
Иначе
Представление = Данные.Наименование;
КонецЕсли;
КонецПроцедуры
Показать
(23) blackfish_, +
но ему хотса, шоб можно было менять представление(то бишь наименование) как хочется))),
Вот только я не пойму зачем такой ге***ой.
Nigelist, я больше чем уверен. Ваши юзеры либо не будут этим пользоваться, а если кто-то будет, то начнут путаться в справочнике.
напишите Объект.Наименование = Объект.Название + "(" + Объект.Производитель+ ")"; и не парьте себе( и нам) мозг
но ему хотса, шоб можно было менять представление(то бишь наименование) как хочется))),
Вот только я не пойму зачем такой ге***ой.
Nigelist, я больше чем уверен. Ваши юзеры либо не будут этим пользоваться, а если кто-то будет, то начнут путаться в справочнике.
напишите Объект.Наименование = Объект.Название + "(" + Объект.Производитель+ ")"; и не парьте себе( и нам) мозг
(32) aleks-lit, а можно ли сделать проверку на уникальность, например по тому же названию и производителю? Чтобы не создавали дубликаты? Это надо записывать в регистры или есть более простой способ?
P.S. Как можно сделать, чтобы производителя выбирали из заранее загруженного регистра сведений?
P.S. Как можно сделать, чтобы производителя выбирали из заранее загруженного регистра сведений?
(36) aleks-lit, не-не, на контрагентов не надо, там же покупатели и поставщики. Надо брать данные именно из регистра сведений, с заранее подгруженными данными о производителях. По идее в справочнике "Производитель", будет два реквизита: "Фирма-производитель" и "Страна-производитель". Эти два реквизита и надо как-то прикрутить к регистрам сведений "Производители" и "Страны мира". Возможно ли?
(37) Nigelist, а что тебе мешает добавить поле в страна -производитель в элемент справочника Производители.
понимаешь, это будет более правильно.
смотри.
1. Вы купили товар у нового поставщика
2. завели его в контрагентах
3. если он нужен в производителях, то создали новый элемент справочника производители(там же добавили страну производитель),
то есть контрагент и производитель будут взаимосвязаны, информация не будет дублироваться и т.д.
Допустим ты захочешь вытащить адрес производителя--ты сможешь прицепить адрес контрагента, т.е. возможность ошибки резко падает.
4. если не нужен(какой-нито местный водоканал ) просто не добавляешь его в производители
для примера посмотри справочники ФизЛица и Сотрудники
понимаешь, это будет более правильно.
смотри.
1. Вы купили товар у нового поставщика
2. завели его в контрагентах
3. если он нужен в производителях, то создали новый элемент справочника производители(там же добавили страну производитель),
то есть контрагент и производитель будут взаимосвязаны, информация не будет дублироваться и т.д.
Допустим ты захочешь вытащить адрес производителя--ты сможешь прицепить адрес контрагента, т.е. возможность ошибки резко падает.
4. если не нужен(какой-нито местный водоканал ) просто не добавляешь его в производители
для примера посмотри справочники ФизЛица и Сотрудники
(38) aleks-lit, но у меня немного другая ситуация. Планируется вести учет медикаментов. И большая часть медикаментов зарубежная, местные большей частью травяные сборы. Потому ситуация практически никогда и не возникает. А производитель нужен в особом формате, который в дальнейшем будет использоваться в накладных и прайсах.
(40) aleks-lit, совпадать может, но шанс совпадения крайне мал, 1/50 совпадает. Я ж не просто так хочу это сделать, а для последующего анализа отдельно по производителями, поставщикам и покупателям. При этом снизить шанс создания дубликатов. Учитывая, что в той же УТ для Казахстана, есть и адресный классификатор и страны мира.
(35) Nigelist, начнем из далека...
справочник не может ссылаться, тем более на регистр сведений...
почему в справочнике не может быть третьего реквизита "Страна"? или производитель очень часто меняет страну местонахождение?
справочник производители, будет ссылаться на регистр сведений?
справочник не может ссылаться, тем более на регистр сведений...
По идее в справочнике "Производитель", будет два реквизита: "Фирма-производитель" и "Страна-производитель". Эти два реквизита и надо как-то прикрутить к регистрам сведений "Производители" и "Страны мира".
почему в справочнике не может быть третьего реквизита "Страна"? или производитель очень часто меняет страну местонахождение?
почему в справочнике не может быть третьего реквизита "Страна"? или производитель очень часто меняет страну местонахождение?
(42) jigourt, да может меняться, продукцию одной фирмы могут производить в разных странах.
Nigelist, правда, давай начнем сначала, вернее с конца.
Что ты хочешь получить?
Интересует, в каких документах/отчетах это будет использоваться
Написать простенькую конфигурацию для учета медикаментов на аптечном складе. В случае с медикаментами идет упор на серию товара, его срок годности, а также сертификат на серию товара и срок действия сертификата. Получается нужен не просто партионный учет, а партионный учет в том числе и по сериям. Документы: Поступление, Реализация, Возвраты поставщикам и Возвраты от покупателей, Перемещение со склада на склад, Корректировка серий и Корректировка производителей, Списание и Оприходование и др. А вообще, хотелось бы получить удобную неперегруженную функционалом конфигурацию.
Что ты хочешь получить?
Интересует, в каких документах/отчетах это будет использоваться
(53) aleks-lit, дело в том, что одно и тоже слово можно написать по разному. Например. Англия = Великобритания. Қазақстан = Казахстан. Одно отличие в названии и уже дубликат. С теми же сериями (обычно серии идут в виде цифр) возможность создания дубликата минимальна.
P.S. И все таки, посоветуйте варианты реализации функционала запрета создания дубликата на основании данных двух реквизитов.
P.S. И все таки, посоветуйте варианты реализации функционала запрета создания дубликата на основании данных двух реквизитов.
P.S. И все таки, посоветуйте варианты реализации функционала запрета создания дубликата на основании данных двух реквизитов.
не буду советовать- не знаю.
теоретически при сохранении можно запустить проверку, но как избежать ошибок, я не знаю.
вынеси в отдельную тему или поищи на форуме
Ну и дискуссию развели. Nigelist, я не знаю какие у Вас условия формирования наименования ЛС. Я сам работаю в Фармации и у нас идут постоянные баталии по поводу формирования наименования. На моем веку например у ЛС его номер переставляли раз 15-20. То перед производителем, то в конце, то решали указывать сигнатуру, потом поняли что это маразм. И каждый раз мне приходилось устраивать танцы с бубном. Одним словом - у тебя есть точный формат формирования наименования ЛС, как этого хотят специалисты? Если нет, то начни с этого. Иначе сделаешь, потом обязательно кому нибудь не понравится. Согласуй!
Теперь по производителям. Имей в виду, что один и тот же производитель может быть разным. Поэтому страна должна быть ОБЯЗАТЕЛЬНО!!! Они в одной стране могут производить, во второй упаковывать. Или торговая марка одна, а заводы в разных странах. В результате ты имеешь одного производителя, но made in будет разным.
Советую зафиксировать первые 1-2-3 значения, по которым ты в дальнейшем будешь искать дубликаты. Весь следующий мусор отдели знаком, например "|". Потом строку разложишь да этого знака и ищи себе спокойно.
Но у меня производитель выведен в отдельное поле.
Само наименование состоит из наименование ЛС + измерение (номер, кол., уп. и т.д.) + форма. К доп. сведениям - МНН.
Вот пример: ЛЕВОСИН 40Г МАЗЬ /ДИОКСОМЕТИЛТЕТРАГИДРОПИРИМИДИН+СУЛЬФАДИМЕТОКСИН+ТРИМЕКАИН+Х ЛОРАМФЕНИКОЛ/
Теперь по производителям. Имей в виду, что один и тот же производитель может быть разным. Поэтому страна должна быть ОБЯЗАТЕЛЬНО!!! Они в одной стране могут производить, во второй упаковывать. Или торговая марка одна, а заводы в разных странах. В результате ты имеешь одного производителя, но made in будет разным.
Советую зафиксировать первые 1-2-3 значения, по которым ты в дальнейшем будешь искать дубликаты. Весь следующий мусор отдели знаком, например "|". Потом строку разложишь да этого знака и ищи себе спокойно.
Но у меня производитель выведен в отдельное поле.
Само наименование состоит из наименование ЛС + измерение (номер, кол., уп. и т.д.) + форма. К доп. сведениям - МНН.
Вот пример: ЛЕВОСИН 40Г МАЗЬ /ДИОКСОМЕТИЛТЕТРАГИДРОПИРИМИДИН+СУЛЬФАДИМЕТОКСИН+ТРИМЕКАИН+Х
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот