|
Создание и заполнение элемента справочника | ☑ | ||
---|---|---|---|---|
0
alexsandrinia
30.07.15
✎
09:28
|
Программно создаю новый элемент справочника, открываю форму элемента для заполнения. Как с заданными значениями заполнить определённые реквизиты этого элемента? Чтоб при открытии создаваемого элемента уже часть заполнена была уже.
|
|||
1
Dimav1979
30.07.15
✎
09:29
|
ЗаполнитьЗначенияСвойств()
|
|||
2
alexsandrinia
30.07.15
✎
09:32
|
спс
|
|||
3
Dimav1979
30.07.15
✎
09:32
|
или так
Справочник = Справочники.Контрагенты.СоздатьЭлемент(); Справочник.Наименование = "alexsandrinia"; Форма = Справочник.ПолучитьФорму("ФормаЭлемента"); Форма.Открыть(); |
|||
4
alexsandrinia
30.07.15
✎
09:45
|
(3) на клиенте выполнять?
|
|||
5
vicof
30.07.15
✎
09:50
|
(4) "на клиенте" надо использовать Открытьформу()
|
|||
6
fisher
30.07.15
✎
09:51
|
(3) Да ладно?
|
|||
7
Dimav1979
30.07.15
✎
09:57
|
(4) да забыл...код для неуправляемого приложения
|
|||
8
Dimav1979
30.07.15
✎
09:58
|
(6) самый умный? покажи что не тока какать тут умеешь!
|
|||
9
fisher
30.07.15
✎
10:03
|
(7) упс, уже забыл, что в обычном приложении так можно было
(8) что именно тебе показать, дорогой? |
|||
10
alexsandrinia
30.07.15
✎
10:15
|
(9) тогда в УФ как будет?
|
|||
11
Остап Сулейманович
30.07.15
✎
10:20
|
(10) Ровно так же как и не в УФ.
В модуле объекта Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) Если НЕ ЗначениеЗаполнено(Ссылка) Тогда Наименование = ... Реквизит1 = ... КонецЕсли; КонецПроцедуры |
|||
12
Остап Сулейманович
30.07.15
✎
10:22
|
+ (11)
В модуле УФ &НаСервере Процедура ПриСозданииНаСервере() Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда Объект.Наименование = ... Объект.Реквизит1 = ... КонецЕсли; КонецПроцедуры |
|||
13
fisher
30.07.15
✎
10:37
|
(10) Несколько путей, в зависимости от потребностей
- через параметры открытия формы в ОткрытьФорму(), их нужно обрабатывать в ПриСозданииНаСервере() формы. - через параметры открытия формы в ОткрытьФорму() в свойстве "ЗначенияЗаполнения" - эти данные попадут в ОбработкаЗаполнения() объекта - если это разовая хрень, то можно в том же стиле, что и для обычных форм работает - ПолучитьФорму(), заполнить, и Форма.Открыть() |
|||
14
fisher
30.07.15
✎
10:39
|
Плясать от программного создания объекта, как в обычных формах можно - не получится. В УФ только через создание формы можно.
|
|||
15
Dimav1979
30.07.15
✎
10:40
|
(14) в управляемом приложении передаешь структурой параметры :)
|
|||
16
Dimav1979
30.07.15
✎
10:46
|
прям как малые дети
ПараметрыФормы = новый Структура("РеквизитНаименование", "Прям как дети малые"); Форма = ОткрытьФормуМодально("Справочник.КОнтрагенты.Форма.Форма", ПараметрыФормы); |
|||
17
Dimav1979
30.07.15
✎
10:49
|
&НаКлиенте
Процедура ОтправитьНаСогласование(Команда) Форма = ПолучитьФорму("Документ.бгбВнСоглКарточкаСогласованияДокумента.ФормаОбъекта"); ДанныеФормы = Форма.Объект; ЗаполнитьНаСервере(ДанныеФормы, Объект.Документ, ЛистСогласования, ЭлектроннаяКопияДокумента); КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); Форма.ОткрытьМодально(); Закрыть(); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗаполнитьНаСервере(НовыйОбъект, Объект, ЛистСогласования, ЭлектроннаяКопияДокумента); НовыйОбъект.СтатусДокумента = Перечисления.бгбВнСоглСтатусыДокумента.Новый; НовыйОбъект.ТипДокумента = Перечисления.бгбВнСоглТипыДокументов.Договор; НовыйОбъект.Дата = Объект.дата; НовыйОбъект.НомерКонтрагента = Объект.Номер; НовыйОбъект.Организация = Объект.Организация; НовыйОбъект.Контрагент = Объект.Владелец; НовыйОбъект.ЛистСогласования = ЛистСогласования; НовыйОбъект.ЭлКопияПоУмолчанию = ЭлектроннаяКопияДокумента; НовыйОбъект.СсылкаНаДокумент = Объект; НовыйОбъект.Валюта = Объект.ВалютаВзаиморасчетов; НовыйОбъект.РегистрационныйНомер = Объект.бгбРегистрационныйНомер; Для Каждого СтрокаЛиста из ЛистСогласования.СписокСогласующихЛиц Цикл НоваяСтрока = НовыйОбъект.СписокСогласования.Добавить(); НоваяСтрока.Должность = СтрокаЛиста.Должность; НоваяСтрока.СогласующееЛицо = СтрокаЛиста.СогласующееЛицо; КонецЦикла; КонецПроцедуры |
|||
18
Dimav1979
30.07.15
✎
10:50
|
это мой рабочий код
|
|||
19
fisher
30.07.15
✎
10:56
|
Твой рабочий код не похож на (16), а похож на третий пункт из (13)
И завязывай с модальными формами. |
|||
20
Dimav1979
30.07.15
✎
11:04
|
(19) ты тут всем экспертную оценку производишь? Вижу и здесь присутствуют никчемные высокомерные эксперты, которые на конкретный вопрос и проблему человека, задирают свой прыщавый нос и свысока кидают порции высера, не касающегося данной проблемы.
Видимо твоя высокомерность не позволяет спуститься тебе с небес, до нашего уровня. Хотя сам ты ничего в этой жизни не представляешь ценного БРО! Удачи! |
|||
21
fisher
30.07.15
✎
11:07
|
За напутствие спасибо. Удача никогда не помешает.
|
|||
22
Dimav1979
30.07.15
✎
11:07
|
(21) ага, почитал твои ответы в темах! Ни одному человеку не помог! Тролль!
|
|||
23
fisher
30.07.15
✎
11:09
|
Прекратите. Вы меня засмущаете.
|
|||
24
Dimav1979
30.07.15
✎
11:11
|
(23) улыбнуло :)
|
|||
25
alexsandrinia
31.07.15
✎
06:51
|
в итоге получилось вот так:
&НаКлиенте Процедура ТабличнаяЧастьТоварНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Форма = ОткрытьФорму("Справочник.Адрес.ФормаОбъекта"); ДанныеФормы = Форма.Объект; ЗаполнитьНаСервере(ДанныеФормы, Объект.АдресЗаявителя); КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗаполнитьНаСервере(НовыйОбъект, АдресЗаявителя) НовыйОбъект.Владелец = АдресЗаявителя; КонецПроцедуры в созданном НовомОбъекте заполняю данные и сохраняю. Как теперь можно часть этих данных вернуть обратно в ТабличнуюЧасть и заполнить несколько колонок. (ТабличнаяЧасть состоит из колонок "Товар", "Модель") |
|||
26
alexsandrinia
31.07.15
✎
09:43
|
ап
|
|||
27
barrgand
31.07.15
✎
09:55
|
(25) Либо через модальное открытие формы возвращать необходимые реквизиты, либо через оповещение при записи нового объекта.
|
|||
28
alexsandrinia
31.07.15
✎
09:58
|
(27) где можно прочитать про оповещение?
|
|||
29
barrgand
31.07.15
✎
10:01
|
(28) В СП набери "Оповестить" и "ОбработкаОповещения". ОбработкаОповещения - обработчки формы, где табличная часть.
|
|||
30
Остап Сулейманович
31.07.15
✎
10:04
|
(27) Ага. Можно еще под пытками/допингом/шантажом... Зачем это все?
Вариант 1. В (25) дама ясно и четко написала "заполняю данные и сохраняю". Вот и взять эти данные оттуда же откуда они брались для заполнения. Вариант 2. После вот этого вот : ЗаполнитьНаСервере(ДанныеФормы, Объект.АдресЗаявителя); В Данные Формы у нее уже есть НовыйОбъект. А это и есть ссылка на то, что ей нужно. |
|||
31
alexsandrinia
31.07.15
✎
10:05
|
(30) не дама, а господин
|
|||
32
Остап Сулейманович
31.07.15
✎
10:05
|
+(30) А вообще вся ветка напоминает обсуждение нетрадиционного удаления гланд.
|
|||
33
alexsandrinia
31.07.15
✎
10:06
|
(32) есть варианты получше?
|
|||
34
Остап Сулейманович
31.07.15
✎
10:07
|
(31) Сорри... Личку не открывал. С толку сбил женский ник.
|
|||
35
fisher
31.07.15
✎
10:11
|
(25) Не совсем понятна цель телодвижений. Опиши изначально словами пользователя, что как и зачем должно быть. Пока выглядит так - пользователь клацает на выбор товара - открывается создание адреса. И чего-то потом еще заполнить надо. Фигня какая-то.
|
|||
36
alexsandrinia
31.07.15
✎
10:16
|
(35)ок
короче в документе нужно отключить/подключить по адресу оборудование. есть справочники Оборудование по всем адресам, у оборудования есть реквизит Статус (подключен/отключен). если нужно что-то отключить - в табличной части Отключаемые выбираем из справочника оборудование и заносим в таблицу. если что-то нужно подключить - аналогично создаем новое оборудование по этому адресу и записываем в табличную часть Подключаемые. как-то так |
|||
37
barrgand
31.07.15
✎
10:23
|
(36) Статус меняется документом? Я бы убрал его из справочника в регистр свойств.
|
|||
38
alexsandrinia
31.07.15
✎
10:28
|
(37) Статус нужен при отборе. если оборудование нужно отключить - открывается справочник Оборудование и идёт отбор по определённому адресу и статусу - подключено. После добавления оборудования в табличную часть Отключаемые, документ проводится и статус оборудования меняется на Отключён
|
|||
39
alexsandrinia
31.07.15
✎
10:30
|
(37) в регистр сведений?
|
|||
40
fisher
31.07.15
✎
10:41
|
(36) Не до конца понял. Цель документа - привязать оборудование к адресам, так? Оборудование и адреса - разные справочники? Сама привязка оборудования к адресу где хранится? В регистре сведений, который двигает документ, надеюсь? Документ выполняет привязку комплекта оборудования к одному адресу или многих комплектов к разным адресам?
|
|||
41
alexsandrinia
31.07.15
✎
10:44
|
(40) да, цель документа - привязать оборудование к адресам. оборудование и адреса - разные справочники. у оборудования есть реквизит адрес. у одного адреса может быть несколько оборудования.
|
|||
42
alexsandrinia
31.07.15
✎
10:45
|
(40) есть справочники Оборудование и ОборудованиеПоАдресу.
|
|||
43
alexsandrinia
31.07.15
✎
10:45
|
ОборудованиеПоАдресу заполняется путём добавления из Оборудования и прикрепления к адресу
|
|||
44
fisher
31.07.15
✎
10:47
|
(42) Ага. Т.е. привязка выполняется через перекрестный служебный справочник ОборудованиеПоАдресу? Для этого регистры сведений придуманы. Что у тебя произойдет если отменить проведение, скажем, предпоследнего документа по адресу?
|
|||
45
alexsandrinia
31.07.15
✎
10:48
|
(44) поставить запрет на распроведение
|
|||
46
fisher
31.07.15
✎
10:55
|
(45) Ага. И состав оборудования можно смотреть только на текущий момент? :) На будущее - для этого идеально подходит периодический регистр сведений.
Ситуация ясна. Только мне пока отлучится надо. По теме чуть позже отпишусь. |
|||
47
Михаил Козлов
31.07.15
✎
10:56
|
(45) Плохое решение: см. (44)
|
|||
48
alexsandrinia
31.07.15
✎
13:11
|
(47) почему плохо ?
|
|||
49
alexsandrinia
03.08.15
✎
09:11
|
ап
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |