Программно открыть форму элемента справочника
(2505)
Версия 1С 7.7
Пытаюсь в обработке программно открыть форму элемента справочника "Номенклатура", пишу так, но ничего не открывается:
Что еще надо дописать?
Версия 1С 7.7
Пытаюсь в обработке программно открыть форму элемента справочника "Номенклатура", пишу так, но ничего не открывается:
спр = СоздатьОбъект("Справочник.Номенклатура");
ОткрытьФорму(спр.НайтиПоНаименованию("тест"),,0);//открываем форму элемента справочника
Что еще надо дописать?
По теме из базы знаний
- Автоматизированная проверка конфигураций… и пара слов о стандартах разработки
- Как программно открыть внешний отчет из "Дополнительных отчетов и обработок" и передать параметры (при помощи БСП)
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Установка отбора по списку значений при открытии формы выбора справочника из реквизита обработки
- Блокировка элементов справочников от изменений
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Ок. Сделал по вашим советам, и теперь открывает форму
Следующая задача, как программно записать эту форму? Т.е. как будто мышкой нажал на "ок" или "записать"
Ок. Сделал по вашим советам, и теперь открывает форму
спр = СоздатьОбъект("Справочник.Номенклатура");
Если спр.НайтиПоКоду("00000003") = 1 Тогда
ОткрытьФорму(спр.ТекущийЭлемент(),контр,);//открываем форму элемента справочника
КонецЕсли;
Следующая задача, как программно записать эту форму? Т.е. как будто мышкой нажал на "ок" или "записать"
(3) в какой момент записать? и зачем записать?! ты открыл форму - ничего не изменилось, зачем что-то записывать? а так-то, конечно, рискни здоровьем
//тут как бы контр д.б. объявлена явно или неявно как минимум
ОткрытьФорму(спр.ТекущийЭлемент(),контр,);//открываем форму элемента справочника
контр.записать();
//тут как бы контр д.б. объявлена явно или неявно как минимум
ОткрытьФорму(спр.ТекущийЭлемент(),контр,);//открываем форму элемента справочника
контр.записать();
(4)
Мне надо пройтись по всей номенклатуре, открыть и сохранить каждый элемент, иначе не создаются единицы измерения в подчиненном справочнике.
Так пробовал сохранять, но ошибка "Данная команда не может выполняться в формуле элемента диалога!"
Мне надо пройтись по всей номенклатуре, открыть и сохранить каждый элемент, иначе не создаются единицы измерения в подчиненном справочнике.
контр.записать();
Так пробовал сохранять, но ошибка "Данная команда не может выполняться в формуле элемента диалога!"
(6) надо пойти в код, найти там создание единиц и переписать в свою обработку.
Нажать кнопку программно можно, но это не 1с, это надо эмуляцию клавиатуры вызывать. Можно попробовать, но не очень рационально. Намного дешевле, быстрее и проще нанять программиста, эта задача не очень большая.
Нажать кнопку программно можно, но это не 1с, это надо эмуляцию клавиатуры вызывать. Можно попробовать, но не очень рационально. Намного дешевле, быстрее и проще нанять программиста, эта задача не очень большая.
(8)
Вот ответ самый оптимальный. Т.к. не надо редактировать конфигурацию базы, только почитать))
Ну и (11) , но тут придется лезть и переписывать процедуру в самой форме, которая является частью конфигурации.
надо пойти в код, найти там создание единиц и переписать в свою обработку.
Вот ответ самый оптимальный. Т.к. не надо редактировать конфигурацию базы, только почитать))
Ну и (11) , но тут придется лезть и переписывать процедуру в самой форме, которая является частью конфигурации.
(6) ну так не вызывай этот код в таком месте. или поработай с ложным закрытием формы.
.
а вообще забабахать генерацию единиц или что там у тебя нужно - это гораздо проще чем ежика рожать как сейчас.
типовая конфига не допускают таких траблов как создание номенклатур с незаполненными единицами.
так что или кривой перенос данных или кривые ручки погромиста. быстрее всего вылечить обратившись к программисту с прямыми руками. там тупая техническая работа. даже думать особо не надо.
.
а вообще забабахать генерацию единиц или что там у тебя нужно - это гораздо проще чем ежика рожать как сейчас.
типовая конфига не допускают таких траблов как создание номенклатур с незаполненными единицами.
так что или кривой перенос данных или кривые ручки погромиста. быстрее всего вылечить обратившись к программисту с прямыми руками. там тупая техническая работа. даже думать особо не надо.
(6)
Найди кусок в модуле "При закрытии" там идет создание подчиненного спр. единицы.
Возьми обработку и напиши
Найди кусок в модуле "При закрытии" там идет создание подчиненного спр. единицы.
Возьми обработку и напиши
Спр = СоздатьОбъект("справочник.Номенклатура");
спр.выбратьЭлементы(0);
Пока спр.получитьЭлемент() =1 цикл
Если спр.ЭтоГруппа() = 1 тогда
продолжить;
конецЕсли;
//а сюда пишешь код из процедуры при закрытии // например для базовой единицы
СпрОКИЕ = создатьОбъект("Справочник.ОКЕИ");
СпрОКИЕ .найтиПоКоду("796"); // штуки
СпрЕдиницы = СоздатьОбъект("Справочник.Единицы");
СпрЕдиницы.ИспользоватьВладельца(Спр.ТекущийЭлемент());
СпрЕдиницы.Наименование = РеквЕдиница.Наименование;
СпрЕдиницы.Вес = 0;
СпрЕдиницы.ВесБрутто = 0;
СпрЕдиницы.Коэффициент = 1;
СпрЕдиницы.ОКЕИ = СпрОКИЕ.ТекущийЭлемент();
СпрЕдиницы.ШтрихКод = "";
СпрЕдиницы.Объем = 0;
Попытка
СпрЕдиницы.Записать();
Исключение
КонецПопытки;
спр.БазоваяЕдиница = СпрЕдиницы.ТекущийЭлемент();
спр.Записать();
конецЦикла;
Показать
(15)
Интересно как))
В случае исключения базовая единица сотрется.
Ну и по идее проверить надо перед тем, как генерировать новую единицу измерения, может она уже есть и заполнена? тогда надо пропустить этот элемент.
Ну и все опыты делать только на копии базы...
Попытка
СпрЕдиницы.Записать();
Исключение
КонецПопытки;
спр.БазоваяЕдиница = СпрЕдиницы.ТекущийЭлемент();
спр.Записать();
СпрЕдиницы.Записать();
Исключение
КонецПопытки;
спр.БазоваяЕдиница = СпрЕдиницы.ТекущийЭлемент();
спр.Записать();
Интересно как))
В случае исключения базовая единица сотрется.
Ну и по идее проверить надо перед тем, как генерировать новую единицу измерения, может она уже есть и заполнена? тогда надо пропустить этот элемент.
Ну и все опыты делать только на копии базы...
Форма не является объектом базы. Ее нельзя сохранить.
в форму, которую надо "сохранить"
1. при откртии формы - передать в нее через параметры некое значение например "команда = СоздатьЕдиницы".
2. в форме в процедуре ПриОткрытии() получить параметры, вытащить нужный параметр, в зависимости от значения сделать что надо вернуть статусвозврата(0)
могу еще несколько варианов накидать, например через обработку ожидания и почую всякую хрень
в форму, которую надо "сохранить"
1. при откртии формы - передать в нее через параметры некое значение например "команда = СоздатьЕдиницы".
2. в форме в процедуре ПриОткрытии() получить параметры, вытащить нужный параметр, в зависимости от значения сделать что надо вернуть статусвозврата(0)
могу еще несколько варианов накидать, например через обработку ожидания и почую всякую хрень
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот