Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Как программно сымитировать открытие формы нового элемента справочника, заполнение реквизитов и сохранение? (http://forums.kuban.ru/f1040/kak_programmno_symitirovat-_otkrytie_formy_novogo_elementa_spravochnika_zapolnenie_rekvizitov_i_sohranenie-8033681.html)

US1C 13.10.2016 12:23

Как программно сымитировать открытие формы нового элемента справочника, заполнение реквизитов и сохранение?
 
Что-то убился уже, не могу создать элемент справочника так, чтобы при этом отработали все процедуры модуля формы и объекта так, как они отрабатывают при нажатии кнопки в форме "Записать и закрыть".

Вот так не канает:
СпрПользовательФорма = ПолучитьФорму("Справочник.Пользователи.ФормаОбъекта");
СпрПользовательФорма.Открыть();
ДанныеФормы = СпрПользовательФорма.Объект;
ЗаполнитьНаСервере(ДанныеФормы,Наименование,ТелефонВ,ТелефонМ,ЭП);
КопироватьДанныеФормы(ДанныеФормы, СпрПользовательФорма.Объект);
СпрПользовательФорма.Должность = НайтиДолжность(Должность);
СпрПользовательФорма.Записать();
СпрПользовательФорма.Закрыть();

roma n 13.10.2016 12:48

[em]создать элемент справочника так, чтобы при этом отработали все процедуры модуля формы[/em] - не надо этим заниматься.

US1C 13.10.2016 12:54

(1) Наверное не очень точно выразился. Нужно чтобы отработали из модуля формы: "ПередЗаписьюНаСервере","ПослеЗаписиНаСервере", из модуля объекта: "ПередЗаписью","ПриЗаписи".

Uho 13.10.2016 13:00

2-US1C > из модуля объекта отработают, из модуля формы - см (1).

US1C 13.10.2016 13:33

(3) Нет. Ничего из перечисленного не отрабатывает. Мне надо чтобы и из модуля формы сработало. Для этого и создаю элементы через форму. Причем, на предпоследней строчке (из 0) форма открыта и заполнены некоторые реквизиты. Если с такими реквизитами я нажимаю интерактивно "Записать и закрыть" на форме - все ОК. Если кодом СпрПользовательФорма.Записать() - не создается (выдает ошибки заполнения, которых не было бы, если отработали процедуры ПередЗаписью).

Uho 13.10.2016 14:17

4-US1C > Чё "нет"? События объекта вызывается при любом способе записи объекта - из формы или программно. События формы - только при записи из формы.

Если сам объект и его форма спроектированы корректно, то извращений из (0) делать не стоит.

Чучундер 13.10.2016 14:20

все что должно отрабатывать интерактивно - должно быть привязано к форме.
все что должно отрабатывать всегда - должно быть привязано к объекту.
имхо.

Чучундер 13.10.2016 14:20

6-Чучундер > в этом есть цимус снеговика. потому как на клюшках это без извращений не сделать

Uho 13.10.2016 14:25

7-Чучундер > подозреваю, что на форме объекта есть какое-нибудь поле типа контактной информации, которое при сохранении в БД предварительно обрабатывается.

Автор не понимает/не хочет понимать, как оно обрабатывается, поэтому и хочет сымитировать заполнение формы.

US1C 13.10.2016 14:30

(5) Нет, значит не отрабатывают. Прогнал обработку в отладчике, эти процедуры не вызывались. При записи формы выдавал ошибки на незаполненные реквизиты. Интерактивно я их и не заполнял, все заполнялось в модуле формы ПередЗаписью и ПриЗаписи. Чего и добиваюсь от программной записи формы.

US1C 13.10.2016 14:35

(8) Ну примерно так. Не очень хочется лазить по всем вызываемым процедурам и формировать дополнительные записи реквизитов, регистров, справочников в обработке.
Цель такая - воткнуть в форму нового элемента минимум данных из обрабатываемого файла, а там пусть все заполняется так, как заложено в алгоритме конфигурации.
Не могу догнать, неужели нет метода, полностью идентичного команде "Записать" в форме?

USSR 13.10.2016 14:41

По моему это полный изврат, имхо )) Причем тут форма, если программно надо создать элемент? Я бы никогда не стал так делать.

US1C 13.10.2016 14:50

(11) Согласен. Изврат. Но надо быстро загрузить справочник из эксельки. И не очень хочется разбираться с кучей вызовов процедур и функций, которые формируют львиную долю данных в базе. Поэтому пошел таким путем. Загрузка разовая и не критичен способ занесения данных. Зато критична правильность их во всех местах, куда прога записывает их при интерактивной работе. Как-то так.

US1C 13.10.2016 14:59

Забыл уточнить - форма управляемая.
Хотя наверное быстрее сделаю обычную загрузку данных.

VZ 13.10.2016 15:05

Ересь есть ересь. Интерфейс нужен только для команды пользователя. Сама прога интерфейс не видит.

US1C 13.10.2016 15:11

(14) В смысле не видит? Я программно получил форму нового элемента, заполнил реквизиты этой формы. В отладчике стопанул перед записью - формаобъект со всеми потрохами (объект, реквизиты, параметры, оформление).

roma n 13.10.2016 15:54

(0) давно бы уже реализовал [em]дополнительные записи реквизитов, регистров, справочников в обработке[/em]
Вы хочите извращений? Их есть у меня. Тест-клиент тебе в руки и веточка Автоматизированное тестирование синтакс-помощника.

USSR 13.10.2016 16:26

На мой взгляд ваще смешная постановка задачи. Девочка вводит документ, что-то забыла, курсор вернули к забытому реквизиту, все логично. Добрый дядя помогает. Но ты создаешь объект программно, так позаботься чтобы все заполнилось, протестируй. Ну иначе получит юзер сообщение и что дальше. Короче, есть реквизиты объекта. если их правильно заполнить, то никто и ничто больше не гужны

Чучундер 13.10.2016 23:04

12-US1C > "Согласен. Изврат. Но надо быстро загрузить справочник из эксельки. И не очень хочется разбираться с кучей вызовов процедур и функций, которые формируют львиную долю данных в базе."
- нахэра разбираться с вызовами процедурами и функциями? заполни реквизиты чем надо и все. Если не знаешь какие реквизиты для чего заполняются и как их связь друг с другом и смысл - так и скажи, туплю и не знаю типовой конфиги...


Текущее время: 06:52. Часовой пояс GMT +3.