Имя: Пароль:
1C
1С v8
Создание и заполнение элемента справочника
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
ап
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.