Имя: Пароль:
1C
 
1с 8.0 - Программное заполнение карточки нового товара.
0 Jaws
 
19.08.04
10:37
По ходу обработки возникает необходимость создать новый товар в справочнике номенклатуры. Хорошо - вызываем "форму нового элемента". Но, дело в том что реквизиты нового товара на момент вызова "формы нового элемента" уже известны, например наименование, единица измерения (которую небходимо бдет создать в справочнике единиц измерения), количество в упаковке, ндс и тд (это экспорт из эксеса). Не хотелось бы заставлять юзера заполнять эти поля вручную, но в то же время оставить ему возможность для маневра. То есть идеально - "форма нового элемента" возникает перед юзером заполненной по максимуму, а он уж решает записать ли это все, и сначала чуть подправить. Попробовал - запись в поля формы не связанных с её реквизитами недопустима (а это был бы самый простой вариант).
Так как это лучше осуществить? Может быть создать товар заранее, тогда как вызвать форму для его редактирования? Или как иначе?

Спасибо.
1 Pilcrow
 
19.08.04
11:55
(0) Совершенно верно, именно так.

НовыйТовар = Справочники.Номенклатура.СоздатьЭлемент();
// (заполняем реквизиты справочника-объекта НовыйТовар)
//   . . .
ФормаТовара = НовыйТовар.ПолучитьФорму(<имя формы>);
ФормаТовара.Открыть();

Кстати, через ФормаТовара имеем доступ к экспортным переменным, реквизитам и методам нужного экземпляра формы (твоя предыдущая ветка).
2 Jaws
 
19.08.04
12:01
Спасибо!
3 Jaws
 
19.08.04
15:41
Логичное продолжении темы. :)

В силу объективных причин, для заполнения максимального количества реквизитов формы необходимо выполнить запись в базу (ну по крайней мере иначе мне не удалось). А именно - создание и ЗАПИСЬ товара, создание и ЗАПИСЬ подчиненной единицы измерения. Это все происходит "в тени", до показа формы пользователю. Вся прелесть в том, что хотелось бы оставить пользователю возможность отказа от создания товара. А для этого необходимо понять как была закрыта форма товара и в случае если пользователь просто нажал кнопку "закрыть" удалить все следы подготовительных действий (единицу измерения,товар).
Первым делом обратился (с минимальной надеждой) к возвращаемому значению метода DoModal(). Как и ожидалось, хотя оное и присутствует как область памяти :), но независимо от нажатой кнопки содержит значение "неопределено".
Далее пошли методы и события такие как ОповеститьОЗаписиНовогоОбъекта и ОбработкаЗаписиНовогоОбъекта. Тщетно я ждал события от формы элемента. Тут непонятно, то ли форма элемента не подчинена моей форме, то ли что-то еще.

Намекните в какой стороне искать решение.
Спасибо.
4 Rovan
 
гуру
27.10.04
12:48
См. аргумент "ОтменаРедактирования" в функции
ПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
5 igork1966
 
27.10.04
14:02
(4) Ага, а если за время пока юзер томозит кто-то выбрал эту запись справочника,
то чисто удалить не удастся :-)
6 Rovan
 
гуру
27.10.04
14:08
(5) Для этого вот такой ситуации надо избегать - "заполнения максимального количества реквизитов формы необходимо выполнить запись базу (ну по крайней мере иначе мне не удалось).".
Почему не удалось ?
7 igork1966
 
27.10.04
14:17
(6) Я только-только начал 8-ку изучать. А что, нет разве аналога "Параметр" (в формах 7.7) и соответственно возможности открыть форму нового элемента с заполнением реквизитов из "Параметра"?
8 igork1966
 
27.10.04
14:20
(8) Уточнение: ...с заполнением реквизитов предопределенной процедурой из "Параметра"?
9 Rovan
 
гуру
27.10.04
14:23