Формирование поля реквизита формы, из данных других полей формы.

1. Nigelist 26.05.14 09:40 Сейчас в теме
Всем доброго времени суток!
Есть идея формировать поле реквизита Наименование из двух или трех полей других реквизитов. Подскажите, как это сделать. Я понимаю, что надо описывать событие "При изменении" для реквизитов из которых формируется поле наименование основного реквизита. Но вот как обратится к самому полю, чтобы был определенный порядок заполнения? Например, поле наименования номенклатуры формируется из названия товара и производителя товара. Надо, чтобы в наименовании первым вставлялось название товара, а уж потом его производитель.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. aleks-lit 26.05.14 09:55 Сейчас в теме
пиши "при изменении" для товара и производителя товара одинаково
типа

&НаКлиенте
Процедура ТоварПриИзменении(Элемент)
объект.Наименование = объект.Товар+объект.ПроизводительТовара;
КонецПроцедуры
и
&НаКлиенте
Процедура ПроизводительТовараПриИзменении(Элемент)
объект.Наименование = объект.Товар+объект.ПроизводительТовара;
КонецПроцедуры
3. aleks-lit 26.05.14 10:03 Сейчас в теме
или Строка(объект.Товар)+строка(объект.ПроизводительТовара)
4. Nigelist 26.05.14 11:01 Сейчас в теме
(3)Спасибо за помощь. Но есть небольшая проблема. Сделал так:
&НаКлиенте
Процедура НазваниеПриИзменении(Разделитель)
	Объект.Наименование = Объект.Название + Разделитель + Объект.Производитель;
КонецПроцедуры

&НаКлиенте
Процедура ПроизводительПриИзменении(Разделитель)
	Объект.Наименование = Объект.Название + Разделитель + Объект.Производитель;
КонецПроцедуры

&СервереБезКонтекста
Процедура ОписаниеРазделителя(Разделитель)
	Если Перечисления.Разделители.Запятая Тогда
		Разделитель = ","
	КонецЕсли;
	Если Перечисления.Разделители.Точка Тогда
		Разделитель = "."
	КонецЕсли;
	Если Перечисления.Разделители.Слэш Тогда
		Разделитель = "/"
	КонецЕсли;
	Если Перечисления.Разделители.Пробел Тогда
		Разделитель = " "
	КонецЕсли;
КонецПроцедуры
Показать

Само поле "Наименование" сделал недоступным для редактирования. Теперь при заполнении полей "Название" и "Производитель", поле "Наименование" выглядит так:
НазваниеТовараПолеФормыНазваниеПроизводителя

Не подскажите, как избавиться от надписи "ПолеФормы"?
7. aleks-lit 26.05.14 11:21 Сейчас в теме
(4) Nigelist, видимо это возникает из-за "Разделитель"

Кстати, а зачем он вам?
вы что хотите, чтоб в разных местах он по разному выглядел?
или что?
5. aleks-lit 26.05.14 11:11 Сейчас в теме
Объект.Наименование = Объект.Название + "," + Объект.Производитель;

а так не проще?)))
6. aleks-lit 26.05.14 11:17 Сейчас в теме
или Объект.Наименование = Объект.Название + "(" + Объект.Производитель+ ")";
сделайте как-то так и не мучайтесь с разделителями

Само поле "Наименование" сделал недоступным для редактирования. Теперь при заполнении полей "Название" и "Производитель", поле "Наименование" выглядит так:
НазваниеТовараПолеФормыНазваниеПроизводителя

Не подскажите, как избавиться от надписи "ПолеФормы"?


ВОТ Этого я не понял...
где так выглядит?
8. Nigelist 26.05.14 12:11 Сейчас в теме
(6) aleks-lit,

ВОТ Этого я не понял...
где так выглядит?
В форме у реквизита снял галку параметр "Доступность". В форме элемента, теперь поле недоступно для редактирования в ручную.
Кстати, а зачем он вам?
вы что хотите, чтоб в разных местах он по разному выглядел?
или что?

Хотелось бы предоставить пользователю выбор. Без разделителя работает корректно, можно ли сделать с разделителем?
9. saiten 246 26.05.14 12:24 Сейчас в теме
&СервереБезКонтекста
Процедура ОписаниеРазделителя(Разделитель)
    Если Перечисления.Разделители.Запятая Тогда
        Разделитель = ","
    КонецЕсли;
    Если Перечисления.Разделители.Точка Тогда
        Разделитель = "."
    КонецЕсли;
    Если Перечисления.Разделители.Слэш Тогда
        Разделитель = "/"
    КонецЕсли;
    Если Перечисления.Разделители.Пробел Тогда
        Разделитель = " "
    КонецЕсли;
КонецПроцедуры
Показать
Индусский код? :)
10. Nigelist 26.05.14 12:41 Сейчас в теме
(9) saiten, новичок я, потому и прошу помощи. Чтоб знать, как правильно. А так да, больше похоже на индусский код.
11. saiten 246 26.05.14 13:00 Сейчас в теме
(10) Сильно подозреваю, надо
Объект.Наименование = Объект.Название + Разделитель + Объект.Производитель;
Заменить на
Объект.Наименование = Объект.Название + ОписаниеРазделителя(Разделитель) + Объект.Производитель;
и переделать функцию ОписаниеРазделителя так, чтобы она не валилась с ошибкой. Кстати, что такое "Разделитель"? Это реквизит формы или что?
12. Nigelist 26.05.14 13:12 Сейчас в теме
(11) saiten, разделитель нужен, чтобы разделять название товара и производителя товара. А если бы я знал, как описать чтоб работало без глюков, я бы и вопросы не задавал.
13. aleks-lit 26.05.14 13:13 Сейчас в теме
Хотелось бы предоставить пользователю выбор. Без разделителя работает корректно, можно ли сделать с разделителем?


тогда нужно, ввести в форму "поле выбора", где будут перечислены варианты разделителей.

и так же при изменении как в товаре и производителе.

PS по моему опыту для пользователей(юзверей), чем проще тем--лучше.



pps на крайняк говоришь, что это в принципе не возможно)))
14. Nigelist 26.05.14 13:28 Сейчас в теме
(13) aleks-lit, да, есть поле выбора. Пока в форме элемента номенклатуры, потом хочу сделать функциональную опцию.
15. aleks-lit 26.05.14 13:34 Сейчас в теме
(14) Nigelist, так к полю выбора можно внести значения "СписокВыбора" называется
16. Nigelist 26.05.14 14:13 Сейчас в теме
(15) aleks-lit, не совсем понял идею.
17. aleks-lit 26.05.14 14:38 Сейчас в теме
я уже точно не помню, но там вводятся твои разделители в само "поле выбора" без перечисления.

в свойствах поля есть СписокВыбора, куда вводятся значения
18. Nigelist 26.05.14 14:44 Сейчас в теме
(17) aleks-lit, так поставил по-умолчанию пробел. С самого начала, но не работает. =(
Кстати, если не ошибаюсь, список выбора бывает только в переключателях. А так, я поставил пробел как значение по-умолчанию. В реквизите номенклатуры.
19. aleks-lit 26.05.14 14:46 Сейчас в теме
блин, ща гляну, если найду как делал--напишу
20. blackfish_ 26.05.14 14:51 Сейчас в теме
Модуль менеджера объекта:

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
22. Nigelist 26.05.14 15:01 Сейчас в теме
(20) blackfish_, вы пожалуйста учитывайте, что я новичок, вообще не понятно же. Желательно рабочий пример.
24. aleks-lit 26.05.14 15:06 Сейчас в теме
(22) Nigelist, найди полевыбора разделители, найди в свойствах список выбора, добавь туда свои разделители

Объект.Наименование = Объект.Название + Объект.Разделитель + Объект.Производитель

и не забудь добавить при изменении и для этого поля выбора
21. jigourt 31 26.05.14 14:57 Сейчас в теме
&СервереБезКонтекста
Процедура ОписаниеРазделителя(Разделитель)
    Если Перечисления.Разделители.Запятая Тогда
        Разделитель = ","
    КонецЕсли;
    Если Перечисления.Разделители.Точка Тогда
        Разделитель = "."
    КонецЕсли;
    Если Перечисления.Разделители.Слэш Тогда
        Разделитель = "/"
    КонецЕсли;
    Если Перечисления.Разделители.Пробел Тогда
        Разделитель = " "
    КонецЕсли;
КонецПроцедуры
Показать


если разделитель это реквизит формы, то вы сделали вапче непанятную фигню....
1. наСервереБезКонтекста - следовательно вы процедурой в переменную Разделитель пишите строковое значение которое нигде не используете
2. даже если по вашей задумке надо было значение переменной Разделитель впихнуть в РеквизитФормы Разделитель, то шишь вам, ибо у РекФор у вас тип Перечисление судя по всему, а у переменной Строка
3. оставил на закуску... зачем через перечисление, вместо Элементы.Разделитель.СписокВыбора.Добавить("/","Слэш(/)");

вот еще пункт 4 узрел
Если Перечисления.Разделители.Запятая Тогда

это простите что вам вернуть должно?
25. Nigelist 26.05.14 15:10 Сейчас в теме
(21) jigourt, перечисление задумка на будущее, не только в одном справочнике буду использовать, а глобально во всей конфигурации и функциональную опцию добавить, чтобы разделитель менялся глобально. Возможно ли?
28. aleks-lit 26.05.14 15:18 Сейчас в теме
(25) Nigelist, я согласен, если это нужно для вывода на печать разными вариантами или представления(для удобства), но запись наименования--это перебор
31. jigourt 31 26.05.14 15:27 Сейчас в теме
(25) Nigelist,
Возможно ли?

все возможно... в конфе в значениях перечисления в синоним напишите символ необходимый в качестве разделителя
23. blackfish_ 26.05.14 15:06 Сейчас в теме
Очень хорошо описано в книге "1С:Предприятие 8.3. Практическое пособие разработчика". Страница 283.

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Поля.Добавить("Наименование");
	Поля.Добавить("ВидНоменклатуры");
	
КонецПроцедуры

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Если ЗначениеЗаполнено(Данные.ВидНоменклатуры) Тогда
		Представление = Данные.Наименование + " (" + НРег(Строка(Данные.ВидНоменклатуры)) + ")";
	Иначе
		Представление = Данные.Наименование;
	КонецЕсли;
	
КонецПроцедуры
Показать
26. aleks-lit 26.05.14 15:15 Сейчас в теме
(23) blackfish_, +
но ему хотса, шоб можно было менять представление(то бишь наименование) как хочется))),
Вот только я не пойму зачем такой ге***ой.
Nigelist, я больше чем уверен. Ваши юзеры либо не будут этим пользоваться, а если кто-то будет, то начнут путаться в справочнике.

напишите Объект.Наименование = Объект.Название + "(" + Объект.Производитель+ ")"; и не парьте себе( и нам) мозг
27. Nigelist 26.05.14 15:18 Сейчас в теме
(26) aleks-lit, да, всё больше склоняюсь к этой мысли.
29. aleks-lit 26.05.14 15:20 Сейчас в теме
не забудте проверку на заполненность полей название и производитель
30. Nigelist 26.05.14 15:24 Сейчас в теме
но запись наименования--это перебор
Что конкретно вы имеете в виду? То, что я собираюсь формировать наименование из названия и производителя?
32. aleks-lit 26.05.14 15:34 Сейчас в теме
(30) Nigelist, нет. я имею ввиду разные разделители.

выберите какой-нибудь один. так будет лучше
33. Nigelist 26.05.14 15:49 Сейчас в теме
(32) aleks-lit, а можно ли сделать проверку на уникальность, например по тому же названию и производителю? Чтобы не создавали дубликаты? Это надо записывать в регистры или есть более простой способ?

P.S. Как можно сделать, чтобы производителя выбирали из заранее загруженного регистра сведений?
34. jigourt 31 26.05.14 16:28 Сейчас в теме
(33) Nigelist,
Как можно сделать, чтобы производителя выбирали из заранее загруженного регистра сведений?

сделать справочник производителей, не?
aleks-lit; +1 Ответить
35. Nigelist 27.05.14 06:58 Сейчас в теме
(34) jigourt, и только потом справочник производители, будет ссылаться на регистр сведений?

А по поводу проверки уникальности по полям двух реквизитов, для запрета создания дубликатов не подскажете способ реализации?
36. aleks-lit 27.05.14 08:10 Сейчас в теме
(35) Nigelist, не-не. создаешь справочник производители, в нем реквизит с данными "справочникСсылка.Контрагенты". в форме элемента справочника - поле этого реквизита. То бишь --у тебя в справочнике будут накапливаться производители.
37. Nigelist 27.05.14 09:01 Сейчас в теме
(36) aleks-lit, не-не, на контрагентов не надо, там же покупатели и поставщики. Надо брать данные именно из регистра сведений, с заранее подгруженными данными о производителях. По идее в справочнике "Производитель", будет два реквизита: "Фирма-производитель" и "Страна-производитель". Эти два реквизита и надо как-то прикрутить к регистрам сведений "Производители" и "Страны мира". Возможно ли?
38. aleks-lit 27.05.14 09:43 Сейчас в теме
(37) Nigelist, а что тебе мешает добавить поле в страна -производитель в элемент справочника Производители.

понимаешь, это будет более правильно.

смотри.

1. Вы купили товар у нового поставщика
2. завели его в контрагентах
3. если он нужен в производителях, то создали новый элемент справочника производители(там же добавили страну производитель),
то есть контрагент и производитель будут взаимосвязаны, информация не будет дублироваться и т.д.
Допустим ты захочешь вытащить адрес производителя--ты сможешь прицепить адрес контрагента, т.е. возможность ошибки резко падает.
4. если не нужен(какой-нито местный водоканал ) просто не добавляешь его в производители


для примера посмотри справочники ФизЛица и Сотрудники
39. Nigelist 27.05.14 12:00 Сейчас в теме
(38) aleks-lit, но у меня немного другая ситуация. Планируется вести учет медикаментов. И большая часть медикаментов зарубежная, местные большей частью травяные сборы. Потому ситуация практически никогда и не возникает. А производитель нужен в особом формате, который в дальнейшем будет использоваться в накладных и прайсах.
40. aleks-lit 27.05.14 14:01 Сейчас в теме
(39) Nigelist, погоди, а поставщик может не совпадать с производителем?
тады ой
но все равно мне кажется, что справочник производители будет удобнее. просто без ссылки на контрагентов
41. Nigelist 27.05.14 14:24 Сейчас в теме
(40) aleks-lit, совпадать может, но шанс совпадения крайне мал, 1/50 совпадает. Я ж не просто так хочу это сделать, а для последующего анализа отдельно по производителями, поставщикам и покупателям. При этом снизить шанс создания дубликатов. Учитывая, что в той же УТ для Казахстана, есть и адресный классификатор и страны мира.
42. jigourt 31 27.05.14 15:36 Сейчас в теме
(35) Nigelist, начнем из далека...
справочник производители, будет ссылаться на регистр сведений?

справочник не может ссылаться, тем более на регистр сведений...
По идее в справочнике "Производитель", будет два реквизита: "Фирма-производитель" и "Страна-производитель". Эти два реквизита и надо как-то прикрутить к регистрам сведений "Производители" и "Страны мира".

почему в справочнике не может быть третьего реквизита "Страна"? или производитель очень часто меняет страну местонахождение?
44. aleks-lit 27.05.14 15:41 Сейчас в теме
(42) jigourt, производитель может быть один, а страна-производитель меняться(я когда-то занимался продажами гибридов семян)
46. jigourt 31 27.05.14 15:58 Сейчас в теме
(44) aleks-lit,
производитель может быть один, а страна-производитель меняться

а я всегда думал что производство в одном месте, а поставщики могут быть в разных... видимо не сталкивался просто ))
47. aleks-lit 27.05.14 16:11 Сейчас в теме
(46) jigourt, например sengenta заводы по всей европе
48. jigourt 31 27.05.14 16:44 Сейчас в теме
(47) aleks-lit, да, но это не производитель переехал, а разные производители по факту...
51. Nigelist 28.05.14 07:24 Сейчас в теме
почему в справочнике не может быть третьего реквизита "Страна"? или производитель очень часто меняет страну местонахождение?

(42) jigourt, да может меняться, продукцию одной фирмы могут производить в разных странах.
Nigelist, правда, давай начнем сначала, вернее с конца.
Что ты хочешь получить?
Интересует, в каких документах/отчетах это будет использоваться
Написать простенькую конфигурацию для учета медикаментов на аптечном складе. В случае с медикаментами идет упор на серию товара, его срок годности, а также сертификат на серию товара и срок действия сертификата. Получается нужен не просто партионный учет, а партионный учет в том числе и по сериям. Документы: Поступление, Реализация, Возвраты поставщикам и Возвраты от покупателей, Перемещение со склада на склад, Корректировка серий и Корректировка производителей, Списание и Оприходование и др. А вообще, хотелось бы получить удобную неперегруженную функционалом конфигурацию.
43. aleks-lit 27.05.14 15:39 Сейчас в теме
а для чего это вообще нужно?
посмотри как реализован учет по партиям. по-моему это должно быть, даже в казахстане)))
45. aleks-lit 27.05.14 15:43 Сейчас в теме
Nigelist, правда, давай начнем сначала, вернее с конца.
Что ты хочешь получить?
Интересует, в каких документах/отчетах это будет использоваться
49. aleks-lit 27.05.14 17:21 Сейчас в теме
По факту да, но по гтд будет написано сенгента и страна. Все.
50. jigourt 31 27.05.14 20:13 Сейчас в теме
(49) aleks-lit, но что мешает сделать несколько производителей с одинаковыми названиями но разными странами в справочнике? )
52. Nigelist 28.05.14 07:26 Сейчас в теме
(50) jigourt, описанное мною решение призвано упростить работу пользователя и снизить возможность создания дубликатов.
53. aleks-lit 28.05.14 08:38 Сейчас в теме
(50) jigourt, я бы так и сделал)))
54. Nigelist 28.05.14 10:30 Сейчас в теме
(53) aleks-lit, дело в том, что одно и тоже слово можно написать по разному. Например. Англия = Великобритания. Қазақстан = Казахстан. Одно отличие в названии и уже дубликат. С теми же сериями (обычно серии идут в виде цифр) возможность создания дубликата минимальна.

P.S. И все таки, посоветуйте варианты реализации функционала запрета создания дубликата на основании данных двух реквизитов.
55. aleks-lit 28.05.14 10:57 Сейчас в теме
(54) Nigelist, ну так пришей справочник СтраныМира к справочнику производители

сделай реквизит "СтранаПроизводитель"
создай поле выбора укажи данные на реквизит "СтранаПроизводитель"
58. jigourt 31 28.05.14 11:28 Сейчас в теме
(54) Nigelist,
И все таки, посоветуйте варианты реализации функционала

ну так пришей справочник СтраныМира к справочнику производители

все верно, у вас наименование строка производитель, а страна производитель ссылка на справочник Страны
59. Nigelist 28.05.14 15:09 Сейчас в теме
(58) jigourt, вы немного не так меня поняли. Мне нужна проверка при записи элемента справочка, т.е. если запись с такими значениями уже существует, то запись должна выдать ошибку с указанием проблемы.
60. jigourt 31 28.05.14 21:20 Сейчас в теме
(59) Nigelist, ну дак в ПередЗаписью сделайте запрос к справочнику по введенным данным и если запрос пустой, записывайте...
56. aleks-lit 28.05.14 11:00 Сейчас в теме
в справочнике СтраныМира они не дублируются!!
57. aleks-lit 28.05.14 11:04 Сейчас в теме
P.S. И все таки, посоветуйте варианты реализации функционала запрета создания дубликата на основании данных двух реквизитов.


не буду советовать- не знаю.
теоретически при сохранении можно запустить проверку, но как избежать ошибок, я не знаю.
вынеси в отдельную тему или поищи на форуме
61. yura1960 11.06.14 20:16 Сейчас в теме
Ну и дискуссию развели. Nigelist, я не знаю какие у Вас условия формирования наименования ЛС. Я сам работаю в Фармации и у нас идут постоянные баталии по поводу формирования наименования. На моем веку например у ЛС его номер переставляли раз 15-20. То перед производителем, то в конце, то решали указывать сигнатуру, потом поняли что это маразм. И каждый раз мне приходилось устраивать танцы с бубном. Одним словом - у тебя есть точный формат формирования наименования ЛС, как этого хотят специалисты? Если нет, то начни с этого. Иначе сделаешь, потом обязательно кому нибудь не понравится. Согласуй!
Теперь по производителям. Имей в виду, что один и тот же производитель может быть разным. Поэтому страна должна быть ОБЯЗАТЕЛЬНО!!! Они в одной стране могут производить, во второй упаковывать. Или торговая марка одна, а заводы в разных странах. В результате ты имеешь одного производителя, но made in будет разным.
Советую зафиксировать первые 1-2-3 значения, по которым ты в дальнейшем будешь искать дубликаты. Весь следующий мусор отдели знаком, например "|". Потом строку разложишь да этого знака и ищи себе спокойно.
Но у меня производитель выведен в отдельное поле.
Само наименование состоит из наименование ЛС + измерение (номер, кол., уп. и т.д.) + форма. К доп. сведениям - МНН.
Вот пример: ЛЕВОСИН 40Г МАЗЬ /ДИОКСОМЕТИЛТЕТРАГИДРОПИРИМИДИН+СУЛЬФАДИМЕТОКСИН+ТРИМЕКАИН+Х­ЛОРАМФЕНИКОЛ/
aleks-lit; +1 Ответить
62. aleks-lit 11.06.14 21:51 Сейчас в теме
согласен, определись, что вообще нужно, поговори с кем-то, кто уже делал что-то подобное, может, не нужно изобретать велосипед!
63. yura1960 21.06.14 16:26 Сейчас в теме
Пропал. Значит будем надеяться, что проблема решена. Поздравляю!
64. Nigelist 21.06.14 16:51 Сейчас в теме
(63) не пропал, просто нет ответов на вопросы которые я задавал. А так, осноные моменты обдуманы и согласованы. Надо делать.
65. yura1960 29.06.14 10:41 Сейчас в теме
Ну что же. Раз согласовал, то это уже плюс. Удачи.
Nigelist; +1 Ответить
66. Nigelist 26.09.14 06:57 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот