Вход | Регистрация

1С:Предприятие ::

Метки:формы

1с 8.0 - Программное заполнение карточки нового товара.

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

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

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

//   . . . 
ФормаТовара = НовыйТовар.ПолучитьФорму(<имя формы>);
ФормаТовара.Открыть();

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

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

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


Список тем форума
  Рекламное место пустует
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует