Программно открыть форму элемента справочника

1. Stæg 32 15.08.20 19:08 Сейчас в теме
(2505)
Версия 1С 7.7
Пытаюсь в обработке программно открыть форму элемента справочника "Номенклатура", пишу так, но ничего не открывается:
спр = СоздатьОбъект("Справочник.Номенклатура");
ОткрытьФорму(спр.НайтиПоНаименованию("тест"),,0);//открываем форму элемента справочника


Что еще надо дописать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starjevschik 15.08.20 22:07 Сейчас в теме
Дописать надо проверку на то, что элемент найден.
Потом почитать хотя бы в хелпе про ТекущийЭлемент() и про НайтиПоНаименованию() - какая функция что возвращает. И про открыть форму тоже.
3. Stæg 32 15.08.20 23:19 Сейчас в теме
(2)
Ок. Сделал по вашим советам, и теперь открывает форму
спр = СоздатьОбъект("Справочник.Номенклатура");  
Если спр.НайтиПоКоду("00000003") = 1 Тогда
     ОткрытьФорму(спр.ТекущийЭлемент(),контр,);//открываем форму элемента справочника   
КонецЕсли;   


Следующая задача, как программно записать эту форму? Т.е. как будто мышкой нажал на "ок" или "записать"
4. CheBurator 2725 16.08.20 01:15 Сейчас в теме
(3) в какой момент записать? и зачем записать?! ты открыл форму - ничего не изменилось, зачем что-то записывать? а так-то, конечно, рискни здоровьем

//тут как бы контр д.б. объявлена явно или неявно как минимум
ОткрытьФорму(спр.ТекущийЭлемент(),контр,);//открываем форму элемента справочника
контр.записать();
6. Stæg 32 16.08.20 01:24 Сейчас в теме
(4)
Мне надо пройтись по всей номенклатуре, открыть и сохранить каждый элемент, иначе не создаются единицы измерения в подчиненном справочнике.
контр.записать();

Так пробовал сохранять, но ошибка "Данная команда не может выполняться в формуле элемента диалога!"
7. Sergex 59 16.08.20 05:19 Сейчас в теме
(6) Если там даже 1000 элементов в справочнике номенклатуры то вы за день все руками по сохраняете. Но за тот же день обработку которая это делает механически вы не напишите.

Так что в вашем случае проще руками каждый элемент открыть и сохранить,
8. starjevschik 16.08.20 09:20 Сейчас в теме
(6) надо пойти в код, найти там создание единиц и переписать в свою обработку.
Нажать кнопку программно можно, но это не 1с, это надо эмуляцию клавиатуры вызывать. Можно попробовать, но не очень рационально. Намного дешевле, быстрее и проще нанять программиста, эта задача не очень большая.
9. Stæg 32 16.08.20 10:46 Сейчас в теме
(8)
А других способов как программно сохранить форму нет?
Пробовал так
Форма.Обновить(1);

Но тогда появляется окошко подтверждения, и там тоже надо нажимать "да"
14. dvk09 2 18.08.20 11:19 Сейчас в теме
(8)
надо пойти в код, найти там создание единиц и переписать в свою обработку.

Вот ответ самый оптимальный. Т.к. не надо редактировать конфигурацию базы, только почитать))
Ну и (11) , но тут придется лезть и переписывать процедуру в самой форме, которая является частью конфигурации.
12. CheBurator 2725 16.08.20 23:39 Сейчас в теме
(6) ну так не вызывай этот код в таком месте. или поработай с ложным закрытием формы.
.
а вообще забабахать генерацию единиц или что там у тебя нужно - это гораздо проще чем ежика рожать как сейчас.

типовая конфига не допускают таких траблов как создание номенклатур с незаполненными единицами.
так что или кривой перенос данных или кривые ручки погромиста. быстрее всего вылечить обратившись к программисту с прямыми руками. там тупая техническая работа. даже думать особо не надо.
15. sinops 18.08.20 18:13 Сейчас в теме
(6)
Найди кусок в модуле "При закрытии" там идет создание подчиненного спр. единицы.
Возьми обработку и напиши

Спр = СоздатьОбъект("справочник.Номенклатура");
спр.выбратьЭлементы(0);
Пока спр.получитьЭлемент() =1 цикл 
Если спр.ЭтоГруппа() = 1 тогда 
продолжить;
конецЕсли;

//а сюда пишешь код из процедуры при закрытии // например для базовой единицы
СпрОКИЕ = создатьОбъект("Справочник.ОКЕИ");
СпрОКИЕ .найтиПоКоду("796"); // штуки
	СпрЕдиницы = СоздатьОбъект("Справочник.Единицы");
	СпрЕдиницы.ИспользоватьВладельца(Спр.ТекущийЭлемент());
		СпрЕдиницы.Наименование = РеквЕдиница.Наименование;
		СпрЕдиницы.Вес			= 0;
		СпрЕдиницы.ВесБрутто			= 0;
		СпрЕдиницы.Коэффициент	= 1;
		СпрЕдиницы.ОКЕИ			= СпрОКИЕ.ТекущийЭлемент();
		СпрЕдиницы.ШтрихКод		= "";    
		СпрЕдиницы.Объем 		= 0;		

		Попытка
			СпрЕдиницы.Записать();
		Исключение
		КонецПопытки;

спр.БазоваяЕдиница  = СпрЕдиницы.ТекущийЭлемент();
спр.Записать();

конецЦикла;
Показать
16. dvk09 2 19.08.20 09:58 Сейчас в теме
(15)
Попытка
СпрЕдиницы.Записать();
Исключение
КонецПопытки;

спр.БазоваяЕдиница = СпрЕдиницы.ТекущийЭлемент();
спр.Записать();

Интересно как))
В случае исключения базовая единица сотрется.
Ну и по идее проверить надо перед тем, как генерировать новую единицу измерения, может она уже есть и заполнена? тогда надо пропустить этот элемент.
Ну и все опыты делать только на копии базы...
18. sinops 19.08.20 14:40 Сейчас в теме
(16)
Это как бы пример, это не plug&play код.
17. Fox-trot 164 19.08.20 10:57 Сейчас в теме
(6) открывать моветон, достаточно заполнить нужное и записать
5. CheBurator 2725 16.08.20 01:16 Сейчас в теме
и это - спр.НайтиПоКоду("00000003") - что за hoвнокод?
10. Stæg 32 16.08.20 10:47 Сейчас в теме
(5) В данном случае, это не важно. Нужно как-то открыть и сохранить форму
11. CheBurator 2725 16.08.20 23:34 Сейчас в теме
Форма не является объектом базы. Ее нельзя сохранить.
в форму, которую надо "сохранить"
1. при откртии формы - передать в нее через параметры некое значение например "команда = СоздатьЕдиницы".
2. в форме в процедуре ПриОткрытии() получить параметры, вытащить нужный параметр, в зависимости от значения сделать что надо вернуть статусвозврата(0)

могу еще несколько варианов накидать, например через обработку ожидания и почую всякую хрень
13. Sergex 59 17.08.20 02:10 Сейчас в теме
(11)Когда задача не решается аналитически, надо двигать булками эмпирически, чтобы вытоптав все непродуктивные варианты словить инсайт и вернутся к истокам и осознать что есть объект, а что есть его форма...
19. srt2020 26.10.21 12:57 Сейчас в теме
Так и чем закончился диспут?
Можно в 7,7 изменить и записать программно элемент формы справочника?
20. sssss_aaaaa_2011 26.10.21 13:16 Сейчас в теме
(19)
элемент формы справочника
Уже написано, что сохраняются данные объекта (в данном случае элемента справочника), а не форма и/или её элементы. И не важно 8-ка это или 7.7, в обоих платформах любые действия с данными могут выполняться без участия форм.
21. srt2020 27.10.21 14:32 Сейчас в теме
(20) Теперь уже точно это понятно, и почему товарищам раньше никто об этом не сказал? Они столько сил истратили на на решение этой нерешаемой задачки
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот