![]() |
![]() |
![]() |
|
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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |