Имя: Пароль:
1C
1С v8
Реквизиты справочника
0 Frawashi
 
10.07.13
14:46
Здравствуйте, извиняюсь за скорее всего глупый вопрос. Суть проблемы такова: 1с 8.1 Есть справочник "Номенклатура", в нем есть реквизиты, среди которых "Наименование" и "Обозначение". Надо: создать справочник "Нормы", с реквизитами "Наименование", "Обозначение", "Норма". Задача: чтобы когда пользователь выбирал "Наименование", "Обозначение" подставлялось само. Не могу допетрить, как сделать. В процедуре "При изменении" у наименования я могу поймать, что выбрал пользователь, какую номенклатуру и её обозначение (с помощью Элемент.Значение и Элемент.Значение.Обозначение), а вот как дальше его впихнуть, чтобы автоматически прописался в другом реквизите - не могу понять.
1 Jonny_Khomich
 
10.07.13
14:48
я бы сказал, что задача не ясна.
2 Mitriy
 
10.07.13
14:48
чо-то мутно как-то объясняешь...
3 maksim358
 
10.07.13
14:49
(1) поддержу.
Что куда должно садиться и при выборе чего?
4 Жан Пердежон
 
10.07.13
14:49
Сначала определись, будут ли у тебя меняться нормы со временем и нужны ли предыдущие значения норм.
5 tttiger
 
10.07.13
14:49
я бы тоже так сказал.
6 1Сергей
 
10.07.13
14:51
а я, пожалуй, промолчу
7 ДенисЧ
 
10.07.13
14:54
(3) Автор вопроса должен сесть. На пару лет. За издевательство
8 Frawashi
 
10.07.13
14:55
Окэй. Еще раз. Есть справочник номер один: Номенклатура. В нем данные находятся в следующем виде:
Номенклатура           Обозначение
Стакан пластиковый     12345

Второй справочник, норма, в нем три реквизита: номенклатура, обозначение, норма. Выглядеть должно так:
Номенклатура           Обозначение        Норма
Стакан пластиковый     12345              100500

Пишу, что тип данных реквизита "Номенклатура" справочника "Норма": "Справочник.Ссылка.Номенклатура". Таким образом, при вводе данных пользователь просто щелкает мышой. Хочу, чтобы в реквизит "Обозначения" справочника "Норма" данное обозначение подставлялось автоматически, в зависимости от номенклатуры, при клике пользователя.

то есть похожая штука обычно в табличных частях документов, где автоматически рассчитывается сумма. Но тут же не табличная часть, вот и не могу придумать, как сделать.
9 Молодой 1Снег
 
10.07.13
14:57
(0) Обозначение = Элемент.Значение.Обозначение;
10 kosts
 
10.07.13
14:58
(8) Для поиска нормы используй запрос.
11 kosts
 
10.07.13
14:58
Обозначение = Код ?
12 Frawashi
 
10.07.13
14:59
(9) Вот такое я сделал в процедуре ПриИзменении у реквизита номенклатура. А как его в обозначение впихать?
(10)нормы хотят сами руками пихать. Почему не хотят, чтобы все дело в одном справочнике было - хз.
13 kosts
 
10.07.13
15:00
Хранение норм в справочнике чревато проблемами. Срочно рассмотри регистр сведений.
14 Frawashi
 
10.07.13
15:02
(13) не я решаю, что и как делать в плане архитектуры. Мне говорят "хотим, чтоб было именно так" - надо делать именно так.
15 kosts
 
10.07.13
15:05
(14) Слушай больше бухгалтеров. Что будет, если они в справочник норм добавят несколько штук одной и той же номенклатуры с разными нормами?
16 Frawashi
 
10.07.13
15:10
(15) тогда я буду делать переодический регистр сведений, очевидно же :D
Но сейчас вот такая микро-задачка, которая поставила меня, только начинающего путь в 1с, в тупик. Я думал, что получится аля как с табличной частью, получить строку и все дела, а тут вот не могу догадаться
17 Молодой 1Снег
 
10.07.13
15:10
(12) А оно не впихивается что-ли? Покажи весь код.
18 Frawashi
 
10.07.13
15:14
(17) да нет там никакого кода вообще. Разве что вот эта ваша строка:
Процедура СправочникСписокНоменклатураПриИзменении(Элемент)
Обозначение = Элемент.Значение.Обозначение;
КонецПроцедуры

Все, больше ничего и нет.
19 Молодой 1Снег
 
10.07.13
15:17
(18) Ну и что конкретно не работает? Реквизит Обозначение остается пустой?
20 Frawashi
 
10.07.13
15:19
(19) да
21 kosts
 
10.07.13
15:19
(18) В каком документе должна быть вытащена норма?
22 maksim358
 
10.07.13
15:20
ты напиши не Элемент.Значение.Обозначение, а Номенклатура.Обозначение
23 Молодой 1Снег
 
10.07.13
15:23
(20)
Посмотри отладчиком или через Сообщить, может у тебя в выбранном элементе реквизит Обозначение пустой.
24 Frawashi
 
10.07.13
15:23
(22) Тогда ничего не будет находится. Смысл же не в уже забитом справочнике дописать реквизиты, а чтобы при создании новой записи в справочнике подставлялось значиние в соответствии с выбранным первым реквизитом.
25 maksim358
 
10.07.13
15:25
ну вот ты выбираешь Номенклатуру и хочешь из нее вытащить реквизит Обозначение? тогда так и пиши.
26 Frawashi
 
10.07.13
15:41
Для желающих понять и помочь сделал недобазу с этими двумя недосправочниками и картинками, которые проясняют суть вопроса
http://rghost.ru/47328667
27 maksim358
 
10.07.13
15:49
(26) пришли базу на мейл - [email protected]
28 Молодой 1Снег
 
10.07.13
17:02
(26) 8.1 нет под рукой. Типы реквизитов совпадают?
29 George Wheels
 
11.07.13
07:48
Ну во первых дублировать справочники это неправильно. Во втором справочнике должна быть только ссылка на первый и норма. Во вторых (13)
30 Frawashi
 
11.07.13
15:52
вощем, если кому интересно: убедил все таки использовать не только одну форму списка, но и форму элемента, защитил от редактирования ячейку с обозначением и при записи поставил проверку на уже существующий кортеж:

Процедура ПриЗаписи(Отказ)
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    НормыМеханическихЦехов1.Деталь
                  |ИЗ
                  |    Справочник.НормыМеханическихЦехов1 КАК НормыМеханическихЦехов1
                  |ГДЕ
                  |    НормыМеханическихЦехов1.Деталь.Обозначение = &Деталь
                  |    И НормыМеханическихЦехов1.Ссылка <> &Ссылка";
   
   Запрос.УстановитьПараметр("Деталь", ЭлементыФормы.Деталь.Значение.Обозначение);
   Запрос.УстановитьПараметр("Ссылка", Ссылка);
   Если Не Запрос.Выполнить().Пустой() Тогда
       Предупреждение("Данная номенклатура (" + ЭлементыФормы.Деталь.Значение.Обозначение + ") уже есть в справочнике.");
       Отказ = Истина;
   Иначе
       Обозначение = ЭлементыФормы.Деталь.Значение.Обозначение;
   КонецЕсли;

КонецПроцедуры