Имя: Пароль:
1C
 
Как получить из какой формы списка создается новый элемент справочника?
0 WED
 
17.11.08
23:12
Дано:
Иерархический справочник.
Две формы списка (А и б)
При создании нового элемента нужно узнать из какой формы списка произведено создание и назначить нужное значение одного из реквизитов.

Пробовал сделать так:
Редактирование обоими способами (диалог и в списке)
При открытии формысписка устанавливаем режим редактирования в списке.


При вводе строки в форме списка:
 Конт = Нужное значение реквизита
 ОткрытьФорму("Элемент.МойСправочник, Конт)
А в форме элемента анализирую Форма.Параметр

Данный метод не подходит потому что нельзя узнать что создается - новый элемент или новая группа, в обоих случаях срабатывает ПриВводеСтроки в форме списка.

Вопрос: как при создании элемента справочника узнать из какой формы списка он создается?
1 Дядя Васька
 
17.11.08
23:14
Если ЭтоГруппа()=0 Тогда
   Возврат;
КонецЕсли
чем не устраивает?
2 WED
 
17.11.08
23:15
(1) И у чего это я должен проверить?
3 Defender aka LINN
 
17.11.08
23:16
(0) А если он программно создается, то как тогда быть?
4 WED
 
17.11.08
23:16
(3) Программно он не создается. Однозначно.
5 Дядя Васька
 
17.11.08
23:17
(2) Ну, там где ОткрытьФорму() воткнул, если группа, стал быть никаких извратов, ФлагСтандартнойОбработки=1..
6 WED
 
17.11.08
23:19
Показываю код из формы списка справочника, может так понятней будет

//************************************************************************
Процедура ПриОткрытии()
   РедактироватьВДиалоге(0,0);
КонецПроцедуры //ПриОткрытии


//************************************************************************
Процедура ПриВводеСтроки()
   Конт = Перечисление.ВидыНоменклатуры.РасходныйМатериал;
   ОткрытьФорму("Элемент.Номенклатура",Конт, Родитель);
   СтатусВозврата(0);

//Вот собственно здес:9и засада - не знаю что надо создать элемент или группу :(
КонецПроцедуры //ВводНового


Код из формы элемента:
//************************************************************************
Процедура ВводНового()
   Парам = Форма.Параметр;
   Если ТипЗначенияСтр(Парам)<>"Перечисление" Тогда
       Предупреждение("Неверный формат данных!");
       Статусвозврата(0);
       Возврат;
   КонецЕсли;
   
   ВидНоменклатуры = Форма.Параметр;
КонецПроцедуры //ВводНового
7 WED
 
17.11.08
23:21
Всё это тестово, ищу способ достижения цели: при создании нового элемента узнать из какой формы списка справочника он создается и присвоить нужное значение у реквизит ВидНоменклатуры.
8 Defender aka LINN
 
17.11.08
23:24
(4) Блажен, кто верует...
9 WED
 
17.11.08
23:25
(8) Конфа самописная. Мной. 3 документа, 6 справочников. 1 регистр. несколько отчетов. Всё. Кому там программно его создавать? :)
10 Джордж Вашингтон
 
17.11.08
23:32
Всё правильно делаешь, другого способа нет. Добавь отдельную кнопку создания группы на форму и забудь. Или же ломай панель с помощью ВК каких-либо - я не заморачивался...
11 WED
 
17.11.08
23:35
(10) Есть еще 2 метода: один, через ж... точнее через глобальную переменную... но не уверен что он будет работать при открытии обеих форм...
второй - сделать предопределенные группы и задать у них нужное значение реквизита, а при создании элемента брать значение из родителя... но это тоже через ж... :(
12 WED
 
17.11.08
23:36
Вот наверное по второму пути пойду.. через группы :(
13 foxey
 
17.11.08
23:36
Что-то я не понял сути проблемы... Есть две формы списка справочника. А при чем тут папки и элементы? Чем эти две формы отличаются друг от друга принципиально, что надо знать, откуда вызов был на создание?
14 WED
 
17.11.08
23:37
(13) Формы отличаются:
1. Количеством показываемых колонок (реквизитов)
2. Отборами, устанавливаемыми при открытии
15 Джордж Вашингтон
 
17.11.08
23:37
Первое штатно не будет работать - тока если с помощью ВК активное окно ловить... Второе не догнал :-)
16 WED
 
17.11.08
23:42
(15) Объясняю второе:
1. У групп и у элементов есть реквизит: ВидНоменклатуры.
2. Создаем в корне справочника две "изначальные" группы, и прописываем в них нужные значения этого реквизита. Эти группы не даем ни удалить, ни изменить. Аналог предопределенных элементов справочника из восьмерки.
3. У всех новых дочерних элементов и групп значение реквизита берем из родителя.
17 Дядя Васька
 
17.11.08
23:47
Замени ПриВводеСтроки() на ПриРедактированииНовойСтроки(), тогда заработает и ЭтоГруппа() и Родитель, и т.п.
18 WED
 
17.11.08
23:48
эммм... Как сделать чтобы УстановитьОтбор(..) распространялся и на группы ? :)
19 Falcon
 
17.11.08
23:49
(11) формекс поможет...
20 WED
 
17.11.08
23:49
(17) пробовал, не понравилось, ибо визуально видно создание новой строки и плюсом открывается форма нового элемента...
21 Falcon
 
17.11.08
23:49
(17) попробывал сначала бы... или все ещё в электричке?
22 WED
 
17.11.08
23:50
(21) Ну вообще-то попробовал уже. О какой электричке речь?
23 Джордж Вашингтон
 
17.11.08
23:50
(17) Заработает, тока эскэйп придется жать после ввода нового...
24 WED
 
17.11.08
23:50
+22. Упс, это не мне было..
25 Falcon
 
17.11.08
23:50
+19 если религия против ВК, тогда ввод нового элемента - одна кнопка, ввод группы - другая кнопка...
26 Falcon
 
17.11.08
23:51
(22) все правльно говоришь... ПриРедактировании вызывается уже ПОСЛЕ создания строки в справочнике.... просто видимо не все это знают....
27 Дядя Васька
 
17.11.08
23:53
(22) Не обращай внимания, это долпоеп...
28 WED
 
17.11.08
23:54
(25) Против ВК не религия, просто не интересно ради одной фишки в такой маленькой конфе подключать что-то внешнее...
29 Falcon
 
17.11.08
23:54
(27) как то все указывает на обратное.... :)) впрочем достаточно попробывать притворить твои дельные советы.. чтобы в этом убедиться...
30 WED
 
17.11.08
23:54
(27)(29) Стоп парни. Не здесь, ладно?
31 Дядя Васька
 
17.11.08
23:55
(23) Н-дя.. СтатусВозврата() не спасает :(
32 Falcon
 
17.11.08
23:55
(28) ну тогда, запрещай ВводНовых...
и создавай две кнопки 1. создатьЭлемент(), 2. СоздатьГРуппу()....
33 Дядя Васька
 
17.11.08
23:55
Интересно его забанят когда-нить, или все модеры в отпуске?
34 Falcon
 
17.11.08
23:55
(30) ну ты посмотри кто у нас начинает переходить на личности... и всё станет ясно....

(31) да ты что??
35 WED
 
17.11.08
23:56
(31) Угу, это я сразу проверил.
(32) Изврат :(

Вобщем придется сделать так:
Жаль, но придется отказаться от разных форм списка. просто потому что группы не подаются отбору - не скрываются :(
И делать через контроль реквизита в создаваемом элементе с помощью "изначальных" родительских групп

Песец..:((
36 Дядя Васька
 
17.11.08
23:56
(34) В в ветке про дубли ты обосрал автора, и всех кто ему ответил. Я дал правильный ответ. На что еще смотреть?
37 Falcon
 
17.11.08
23:57
(35) ну ты бы идею всю рассказал бы... тогда можно было бы предложить что-то более не извращенное.. а так...
38 Falcon
 
18.11.08
00:00
(36) Вася, успакойся... ты мне не интересен... в ветке про дубли, я никого не обсирал, и вобще не имею такой привычки (в отличии от тебя)... просто придумал интересный ход.. о чём и сообщил добравшись до компа... поэтому твой высер там мне вообще не понятен... пойми не с тобой общался.... как в прочем и в прошлый раз, когда ты влез в обсуждения ИспользованияСписка и в итоге что?

так что иди своей дорогой, и не мешай мне ходить моей...
39 WED
 
18.11.08
00:02
(37) Ну идея проста как 5 копеек:

Есть справочник Номенклатура.
Номенклатура бывает 2-х видов: Услуга, Расходник.
У услуги есть куча реквзитов, которых нет у расходника.
Формы списка нужны только для того, чтобы красиво показать услуги и расходники. При создании нового элемента надо сразу прописывать его вид хотя бы для того чтобы пользователи не путались и не терялись. И точно найдется уродец, создавший несколько раз расходник просто потому что создавал его в форме списка услуг и не видел только что созданный элемент.
40 WED
 
18.11.08
00:03
+39: ...и не видел только что созданный элемент из-за включенного отбора по виду номенкатуры
41 WED
 
18.11.08
00:04
А раз УстновитьОтбор на группы не работает, то придется либо через ИспользоватьСписок делать, либо вообще отказаться от форм..
42 WED
 
18.11.08
00:08
Причем УстановитьОтбор работает на группы, если отключить иерархический список.. ппц.. долбаная 7ка :(
43 Джордж Вашингтон
 
18.11.08
00:09
(39) Идея №2 :--) Есть 2 типа номенклатуры, по ним включен предопределенный отбор... Типа один для секретарши - "Внутрифирменная номенклатура", второй для менеджера по заказу - "Номенклатура поставщиков"... Где-то в процессе "Туалетная бумага для офиса - много какаем" превращается в "Т.б. 54 метра", а "Т.б. для очень нежных (вырезано недоматофильтром)" превращается в "Туалетная бумага ЭкстраСуперУльтроШик (вырезано антирекламным фильтром)".... И они все, (матофильтр), хотят вводить новые элементы....
П.С. при программном создании не забудь в форме списка фокус устанавливать на вновьсозданный элемент, а то он уезжает чёрт знает куда...
44 Falcon
 
18.11.08
00:09
(39) ну это можно запретить создавать услуги не в услугах...
а вот про остальное надо подумать....
45 Дядя Васька
 
18.11.08
00:12
В форме элемента в в начале модуля переменную: Перем ЭтоНовый; далее
Процедура ВводНового()
   ЭтоНовый=1;
КонецПроцедуры

Процедура ПриЗакрытии()
   wsh = CreateObject("wScript.Shell");
   wsh.SendKeys(Симв(27));
КонецПроцедуры
46 WED
 
18.11.08
00:13
(43) эмм... ниасилил, многа букв :)))
(44) про что именно?
47 Дядя Васька
 
18.11.08
00:13
(45) "далее", не в модуле, это продолжение предложения, а то Falcon опять пернет...
48 WED
 
18.11.08
00:14
(45) Это ты в продолжение идеи о (17) ?
49 Дядя Васька
 
18.11.08
00:15
(38) Маша в той ветке про фильтры я не про список говорил, а про остатки, про заднее число. Только я тебе про Фому, а ты про Ерему...
50 Дядя Васька
 
18.11.08
00:16
(48) Ну да, ESC нажимать не придется, само нажмет, осталось только придумать как сделать чтобы не могли в строку залезть
51 Дядя Васька
 
18.11.08
00:16
+(50) Надо как-то Доступность(0) сделать
52 Дядя Васька
 
18.11.08
00:18
Хотя не, ПриЗакрытии() не айс, охошками пощелкают, не туда "эскейпнит"...
53 WED
 
18.11.08
00:18
(50) Я уже отказался от разных форм списка.. ибо УстановитьОтбор не скрывает группы, а значит смысла в разных формах нет... :(
54 Джордж Вашингтон
 
18.11.08
00:22
(53) а ты иерархию снимай :--)
55 WED
 
18.11.08
00:26
(54) Херня получается :)
56 GrayT
 
18.11.08
00:28
(54)Миша? =-O
57 Дядя Васька
 
18.11.08
00:30
(53) А что тебе мешает завести в группах тот же реквизит ВидНоменклатуры, и так же по нему фильтровать?
58 Джордж Вашингтон
 
18.11.08
00:30
(56) Чё так удивленно? Я вроде не скрываюсь :--) Мог бы и позвонить даже, дабы уточнить :--)
59 Джордж Вашингтон
 
18.11.08
00:31
(55) Не, ну ты можешь реквизит "для группы и элемента" сделать и по нему отбор включать - попробуй на досуге :-)
60 WED
 
18.11.08
00:36
(59) Ты наверное удивишься, но именно так я и сделал ревизит: Для обоих!
И удивился когда для установленного у группы значение реквизита отбор не сработал!
61 Джордж Вашингтон
 
18.11.08
00:37
(60) да, может запамятовал, помню краем, что как-то там не так немного :--)
62 WED
 
18.11.08
00:37
+(60) Как показал эксперимент - отбор для групп работает только при отключенной иерархии...
63 Джордж Вашингтон
 
18.11.08
00:45
(62) да, точно :--) не даром я тебе 54 советовал.... хоть и на абсолютно синем глазу, а мастерство сам знаешь :-)
64 WED
 
18.11.08
00:47
(63) угу, только проблему не решает :)

Ладно, тему можно закрыть. Вопрос снят всязи с изменением начальных условий.
65 Дядя Васька
 
18.11.08
01:05
Вообще-то самое правильное сделать два справочника, а в документе реквизит справочник не определенного вида, и уже там как-то извращаться, откуда подбирать.
66 Дядя Васька
 
18.11.08
01:05
не определенного = неопределенного
67 WED
 
18.11.08
01:06
(65) Да ну изъе.ство только лишнее :)
Потом в отчетах это учитывать... там вся конфа из 3 докуентов и 6 справочников...овчинка выделки...
68 Джордж Вашингтон
 
18.11.08
01:13
(66) + "самое правильное" запятыми обрамить, а между "документе" и "реквизит" тире, а после "справочник" хорошо бы слово "типа" или в ковычки "неопределенного вида" и крайняя запятая по ходу не нужна :--)
69 Дядя Васька
 
18.11.08
01:15
(68) Заметно что принял :) Был бы ты Стас, ща бы разгромил ))
70 WED
 
18.11.08
01:18
(68)(69) От вам делать нех :)
71 Джордж Вашингтон
 
18.11.08
01:19
(69) не догнал... кого разгромил? а не Стас ли я? (наливая нетвердой рукой) ;--)
72 Дядя Васька
 
18.11.08
01:35
(70) Да Волшебник просто известный борец за чистоту языка, только поправляет не всегда в тему, и сам тоже лажает. При помощи яндекса легко ловится )
73 Дядя Васыка
 
18.11.08
02:24
слишком общий вопрос чтоб конкретно отвечать.
хочешь оптимизации - напиши экспорт вручную (т.е. вручную используй мехаинзмы универсального обмена). А если нечто среднего - что мешает сделать замер производительности и на проблемных участках(данных) отключать-включать режим главного-подчиненного (то есть именно их запустить по механизму "ручного" в обход РИБа)?
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.