Всем опять привет!
Вообще есть формы системные. Это формы для метаданных. Которые разделены по категориям: ФормаОбъекта, формаСписка и ФормаВыбора.
А есть созданные в конфигурации формы.
Так вот, нужна функция возвращающая значения списка созданных форм. В формате на пример структуры или списка значений ... Не важно.
Для лучшего понимания вопроса вот на пример следующая функция. Написать которую, в чем плюс было не сложно:
//СписокЭлементовМетаданных = ОбщийМодуль_МетаДанные.СписокЭлементовМетаданных(МетаданныеГруппа,"СписокЗначений");
Функция СписокЭлементовМетаданных(МетаданныеГруппа,ФорматВозрата) Экспорт
Перем СписокЭлементовМетаданных, ЭлементМетаданных;
Если ФорматВозрата="СписокЗначений" Тогда
СписокЭлементовМетаданных = Новый СписокЗначений();
Для Каждого ЭлементМетаданных Из Метаданные[МетаданныеГруппа] Цикл
СписокЭлементовМетаданных.Добавить(ЭлементМетаданных.Имя,ЭлементМетаданных.Синоним);
КонецЦикла;
Возврат СписокЭлементовМетаданных;
ИначеЕсли ФорматВозрата="Структура" Тогда
СписокЭлементовМетаданных = Новый Структура();
Для Каждого ЭлементМетаданных Из Метаданные[МетаданныеГруппа] Цикл
СписокЭлементовМетаданных.Вставить(ЭлементМетаданных.Имя,ЭлементМетаданных.Синоним);
КонецЦикла;
Возврат СписокЭлементовМетаданных;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
ЭлементМетаданных.Формы?
Gigi @ Сегодня, 11:20
,
Короче ... по указанному вопросу кое что нарыл. А потом прописал функцию в таком виде:
//СписокЭлементовМетаданных = ОбщийМодуль_МетаДанные.СписокФормМетаданных("МетаданныеГруппа","МетаданныеИмя","СписокЗначений");
Функция СписокФормМетаданных(МетаданныеГруппа,МетаданныеИмя,ФорматВозрата) Экспорт
Формы = Метаданные[МетаданныеГруппа][МетаданныеИмя].Формы;
Если ФорматВозрата="СписокЗначений" Тогда
СписокФорм = Новый СписокЗначений();
Для Каждого ТекФорма Из Формы Цикл
СписокФорм.Добавить(ТекФорма.Имя,ТекФорма.Синоним);
КонецЦикла;
Возврат СписокФорм;
Иначе
стрСписокФорм = Новый Структура();
Для Каждого ТекФорма Из Формы Цикл
стрСписокФорм.Вставить(ТекФорма.Имя,ТекФорма.Синоним);
КонецЦикла;
Возврат стрСписокФорм;
КонецЕсли;
КонецФункции
//СписокФорм = Config_МетаДанные.СписокФорм("МетаданныеГруппа","МетаданныеИмя","СписокЗначений");
Функция СписокФорм(МетаданныеГруппа,МетаданныеИмя,ФормаВозрата) Экспорт
//======================================
Попытка
Если МетаданныеГруппа=Неопределено или МетаданныеИмя=Неопределено Тогда
Формы = Метаданные.ОбщиеФормы;
Иначе
Формы = Метаданные[МетаданныеГруппа][МетаданныеИмя].Формы;
КонецЕсли;
Исключение
Возврат Неопределено; Сообщить(ОписаниеОшибки());
КонецПопытки;
//======================================
Если ФормаВозрата="СписокЗначений" Тогда
СписокФорм = Новый СписокЗначений();
Для Каждого ТекФорма Из Формы Цикл
СписокФорм.Добавить(ТекФорма.Имя,ТекФорма.Синоним);
КонецЦикла;
Возврат СписокФорм;
Иначе
стрСписокФорм = Новый Структура();
Для Каждого ТекФорма Из Формы Цикл
стрСписокФорм.Вставить(ТекФорма.Имя,ТекФорма.Синоним);
КонецЦикла;
Возврат стрСписокФорм;
КонецЕсли;
КонецФункции
Формы = Метаданные.Формы;
Формы = Метаданные[МетаданныеГруппа].Формы;
Gigi @ Сегодня, 14:51
,
Да... еще ... все таки решил сделать постскриптум...
Так .. для большей наглядности того что было нужно. Да и вообще если кому то из гостей сайта будет нужно.
Вот финальный полный вариант решения вопроса темы:
&НаКлиенте
Процедура МетадданныеСписокФорм(Команда)
СписокФорм = СписокФорм(,,"СписокЗначений");
СписокЗнач=ОкноВыбора(СписокФорм,"Значение");
КонецПроцедуры
&НаКлиенте
Функция ОкноВыбора(СписокЗнач,СвойствоВозврата) Экспорт
ВыбранныйЭлементСписка = СписокЗнач.ВыбратьЭлемент();
Если ВыбранныйЭлементСписка = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если СвойствоВозврата = Неопределено Тогда
Возврат ВыбранныйЭлементСписка;
Иначе
Возврат ВыбранныйЭлементСписка[СвойствоВозврата];
КонецЕсли;
КонецФункции
//СписокФорм = СписокФорм("МетаданныеГруппа","МетаданныеИмя","СписокЗначений");
&НаСервере
Функция СписокФорм(МетаданныеГруппа,МетаданныеИмя,ФорматВозрата) Экспорт
//======================================
Попытка
Если МетаданныеГруппа<>Неопределено и МетаданныеИмя<>Неопределено Тогда
ствСписокФорм = СписокФормПоГруппе(МетаданныеГруппа,МетаданныеИмя,);
Иначе
ствСписокФорм = СписокВсехФорм();
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки()); Возврат Неопределено;
КонецПопытки;
//======================================
Если ФорматВозрата="СписокЗначений" Тогда
СписокФорм = Новый СписокЗначений();
Для Каждого Эл из ствСписокФорм Цикл
СписокФорм.Добавить(Эл.Ключ,Эл.Значение); //Сообщить(Эл.Ключ+" - "+Эл.Значение);
КонецЦикла;
Возврат СписокФорм;
Иначе
Возврат ствСписокФорм;
КонецЕсли;
//======================================
КонецФункции
//СписокФормПоГруппе = СписокФормПоГруппе("МетаданныеГруппа","МетаданныеИмя",стрСписокФорм);
&НаСервере
Функция СписокФормПоГруппе(МетаданныеГруппа,МетаданныеИмя,стрСписокФорм) Экспорт
Если ТипЗнч(стрСписокФорм)<>Тип("Соответствие") Тогда
стрСписокФорм = Новый Соответствие();
КонецЕсли;
//======================================
Попытка
Если МетаданныеГруппа="ОбщиеФормы" Тогда
Формы = Метаданные.ОбщиеФормы;
Иначе
Формы = Метаданные[МетаданныеГруппа][МетаданныеИмя].Формы;
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки()); Возврат Неопределено;
КонецПопытки;
//======================================
Для Каждого ТекФорма Из Формы Цикл
ПолноеИмя=МетаданныеГруппа+"."+ТекФорма.Имя;ПолноеИмяСиноним=МетаданныеГруппа+" - "+ТекФорма.Синоним;
стрСписокФорм.Вставить(ПолноеИмя,ПолноеИмяСиноним);
КонецЦикла;
//======================================
Возврат стрСписокФорм;
КонецФункции
&НаСервере
Функция СписокВсехФорм() Экспорт
//============================
СписокВсехФорм = СписокФормПоГруппе("ОбщиеФормы",,);
//----------------------------
МетаданныеГруппа="Справочники";
Для Каждого ЭлементМетаданных Из Метаданные[МетаданныеГруппа] Цикл
МетаданныеИмя=ЭлементМетаданных.Имя;
СписокВсехФорм = СписокФормПоГруппе(МетаданныеГруппа,МетаданныеИмя,СписокВсехФорм);
КонецЦикла;
//----------------------------
МетаданныеГруппа="Документы";
Для Каждого ЭлементМетаданных Из Метаданные[МетаданныеГруппа] Цикл
МетаданныеИмя=ЭлементМетаданных.Имя;
СписокВсехФорм = СписокФормПоГруппе(МетаданныеГруппа,МетаданныеИмя,СписокВсехФорм);
КонецЦикла;
//----------------------------
МетаданныеГруппа="Отчеты";
Для Каждого ЭлементМетаданных Из Метаданные[МетаданныеГруппа] Цикл
МетаданныеИмя=ЭлементМетаданных.Имя;
СписокВсехФорм = СписокФормПоГруппе(МетаданныеГруппа,МетаданныеИмя,СписокВсехФорм);
КонецЦикла;
//----------------------------
МетаданныеГруппа="Обработки";
Для Каждого ЭлементМетаданных Из Метаданные[МетаданныеГруппа] Цикл
МетаданныеИмя=ЭлементМетаданных.Имя;
СписокВсехФорм = СписокФормПоГруппе(МетаданныеГруппа,МетаданныеИмя,СписокВсехФорм);
КонецЦикла;
//----------------------------
// и так далее ...
//============================
Возврат СписокВсехФорм;
КонецФункции
Gigi @ Вчера, 22:02
,
Хотя стоп …. Еще малое дополнение…
Мною была допущена одна ошибка … по запарке на скорую руку. Из-за которой, выбранную форму из списка полученных форм, открыть невозможно. Ибо полные имена форм некорректные.
Хотя можно было забить и оставить с ошибкой. Но все-таки…. Раз решил скинуть функцию решающую вопрос темы. Ту функцию, которая думаю, подавляющему большинству зареганых на данном сайте не нужна на фиг … ))…, а думаю, может понадобиться только гостям данного сайта. И раз решил все таки выставил решение то, все должно быть все таки без ошибок.
Короче … где там ошибка… которую зареганные пользователи думаю, заметили. И как устранить ее.
Ко всему изложенному выше нужно добавить одну функцию, на пример вот эту:
А еще …
Кроме того в команде: «МетадданныеСписокФорм» нужно прописать так:
Вот теперь нормально…
Gigi @ Сегодня, 12:42
,
И все это касательно для списка созданных форм. А для вывода системных форм нужно доработать.
Кстати в 1С и тут малая недоработка.
Когда выбираешь формы для рабочего стола то система 1С выводит список только созданных форм.
А где же список системных? И тут, лично я думаю что перед появлением списка форм система до этого должна вообще давать возможность выбора. Формы: "Системные" или "Созданные".
Вот еще недоработка, хотя малая.
Поэтому тут опять нужно самому дорабатывать.
И НАКОНЕЦ РЕЗЮМЕ"
Вот теперь у меня все!
Gigi @ 16.10.19, 13:56
,
https://pro1c.org.ua/redirect.php?http://v8.1c.ru/o7/201408str/index.htm
andr_andrey @ Сегодня, 10:51
,
https://pro1c.org.ua/redirect.php?https://infostart.ru/public/16470/
Gigi @ Сегодня, 11:11
,
Там же написано: "Писалось студентом-программистом и студентом-лингвистом."
И дата указанной публикации "махровая".
Gigi @ Сегодня, 11:11
,
Все таки, ту функцию которая представлена на странице infostart.ru/public/16470/, хорошо что в свое время не мне самому пришлось писать.
И подумать только сколько времени на это у меня ушло бы. Да я просто замучился бы с написанием подобной функции самому.
Так что к счастью, эта функция оказалась в готовом виде хоть не в самой системе 1С, а в другом источнике написанная профессионалом.
И это ОЧЕНЬ НУЖНАЯ функция.... Тем более для офисов. Где в одном из справочников на пример "Поставщики" есть на пример реквизит: "Директор". И есть текст договора где нужно склонять ФИО.
А по поводу v8.1c.ru/o7/201408str/index.htm
Ну ладно .. понял ...
И понятное дело что наш уважаемый 1c.ru не сидит на месте, а развивается. Все больше и больше расширяя возможности.
И по поводу на пример таких функций как: "СтрНайти()"; СтрШаблон(); и т.д. знаю я их. И это конечно же плюсы.
Но я считаю что такая функция как на пример СтрПарсер(текст,символ,номер), все таки нужна. Хотя бы на пример для вот этой цели:
МетаДанныеПолноеИмя=Значение.Метаданные().ПолноеИмя();
МетаданныеГруппа=Config_String_серв.Парсер(МетаДанныеПолноеИмя,".",1); // Самому пришлось написать в общем модуле!
МетаданныеИмя=Config_String_серв.Парсер(МетаДанныеПолноеИмя,".",2);// Самому пришлось написать в общем модуле!
ТипЗнч(Значение)
Gigi @ Сегодня, 11:44
,
Все таки решил создать новую тему. И там и поделится просто мнением по функции "ТипЗнч()" .
https://pro1c.org.ua/index.php?showtopic=54707
Просто так ... без веской на то причины.
А тут у меня все!
Всем спасибо за отклики!
Пока!
P.S.
getnight @ Сегодня, 14:46
,
И тут я тоже уже устал...
Ладно ... да точно .. оказывается склонение ФИО НЕ НУЖНА!
Равно как и многое другое в системе 1С.
Вы это хотите услышать?
И студенты программист и лингвист в таком случае наверно в пустую тратили свое время.
Пожалуйста уважаемые ... не пытайтесь оправдывать ГРЕХИ производителей системы 1С.
Я не буду с вами спорить и доказывать что функция склонения ФИО НУЖНА!
Она на мой взгляд НУЖНА! Так же как многое другое.
Может мне Вам скинуть копию текста договора?
Ладно... не буду..
Устал уже.. извините.. так что воздержусь.
И поэтому и тут на этом остановлюсь.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua