Имя: Пароль:
1C
1C 7.7
v7: "Безумные" хотелки
0 tgu82
 
02.10.23
15:01
Самописная конфа - одни справочники!!!

Хочу в форму списка добавлять колонки при открытии с теми названиями которые введены в служебном справочнике причем чтобы колонки шли в том порядке в котором они описаны в служебном справочнике.
Кроме того если это текстовые колонки то чтобы они автоматически записывали себе в "дополнительно" формулу - выполнение функции

Вот я допустим понаделал 50 полей в справочнике строковых - поле1, поле2 и т.д. а вот их названия в показе и очередность чтобы шли через этот служебный справочник в котором - название справочника, идентификатор - (поле1, поле2....) название поля при визуализации, номер по порядку при визуализации в форме списка, формула-функция если нужно
Формекс должен уметь такие вещи.

Еще бы конечно чтобы в сам справочник в конфигураторе какими-то библиотеками можно было сделать автосоздание его структуры но это было бы вообще круто.
1 tgu82
 
02.10.23
15:06
(0) Как вариант конечно можно было бы использовать xbase там можно все подобавлять гибко и потом визуализировать но с учетом сетевой работы неудобно
2 tgu82
 
02.10.23
15:13
(0) можно было еще наверное создать один такой справочник скажем с 50 полями (Поле1, Поле2 и т.д.) а потом просто его клонированием создать еще 7. Тоже вариант и не особенно долгий
3 tgu82
 
02.10.23
15:13
(0) Главное сделать для них гибкую визуализацию в форме списка
4 tgu82
 
02.10.23
15:15
(0) То что было в этой ветки я вроде одолел с вашей помощью
(Финт с выводом текущей колонки с функцией на форме - как?)
5 Eiffil123
 
02.10.23
15:16
попытка эмулировать конфигуратор в режиме 1С:Предприятия, но зачем?

PS на 8.х такое реализовано в конфигурации бит.финанс для настройки заполнений движений документов. На 7.7 такое вряд-ли возможно
6 Djelf
 
02.10.23
15:19
(0) Штатно? Это затруднительно.
Через formex? Ну это почти штатно, но немного расширено.
Переход на ТабличныйДокумент из 1с++, решает большинство таких проблем.
7 Харлампий Дымба
 
02.10.23
15:21
Про формекс ничего не скажу - щас тебе расскажут.
А вот касательно (2) - в первую колонку в формулу ставишь МояФункция(), в остальные - в формулу ставишь ЗначениеКолонки[2], ЗначениеКолонки[3] и т.д.
В МояФункция() возвращаешь ЗначениеКолонки[1], заодно заполняя по своим формулам остальной массив ЗначениеКолонки. И не забывай всё занулять, если например, для группы ничего не должно выводится.
Так вроде в какой-то типовой было сделано - гораздо быстрее, чем дергать ТекущийЭлемент для каждой колонки отдельно.
8 tgu82
 
02.10.23
15:28
(7) Ты имеешь в виду массив ? ЗначениеКолонки[i]
9 tgu82
 
02.10.23
15:31
(7) Классная идея кстати, единственное что нужно сами текстовые колонки создавать автоматом и размещать автоматом
10 uno-group
 
02.10.23
15:36
Что мешает в форму списка кинуть ТЗ и добавлять колонки в нее как угодно. Тут наверное больше вопрос размера этого справочника. Одно дело когда это 100 элементов и совсем другое когда 1000 тыс.
ИМХО пользователь не знает что хочет а ты ему потакаешь. Визуализацию можно сделать какую угодно, а как это будет реализовано на самом деле пользователя не касается. Были у меня справочники который юзер видел как 1, а на самом деле это было 4 разных справочника. Попробывал бы задачу подробнее описать
11 Arbuz
 
02.10.23
15:40
Насчёт автосоздания структуры - был такой класс РаширениеСправочников. Насколько я помню, позволял добавлять реквизиты справочника в рантайм, причём для каждого элемента свои. Фактически значения хранились в подчинённом справочнике.
12 uno-group
 
02.10.23
15:44
А так создаешь сразу кучу колонок с идентификатором Р1...50 и в формулу добавляешь Функция("Р1")
Потом при открытии смотришь сколько колонок тебе нужно остальным видимость О.
В Функции проверяешь что за поле и выводишь или реквизит или считаешь по формуле и выводишь значение. Примеров как вычислить значение из текстовых описаний полно.
13 tgu82
 
02.10.23
16:02
(10) Да нет. Шеф много лет работает с 7.7 и неплохо ее знает. И я ему не потакаю а понимаю что он хочет. Мне вот посоветовали аналог Свойства и Виды свойств. Вот это очень интересный вариант мне кажется и потом визуализировать только.
Тогда я могу создать каждый справочник по сути вообще с двумя полями код и наименование. а дальше как в типовой тис 7.7
14 Eiffil123
 
02.10.23
16:05
(13) а скоро с таким подходом вы придете к тому, что нужен вообще только 1 справочник
15 uno-group
 
02.10.23
16:07
(13) Ради чего все это? Зачем писать безумный конструктор когда добавить реквизит в справочник быстрее? Добавь таблицу реквизит значения и выводи туда дополнительную информацию по текущему элементу.
16 uno-group
 
02.10.23
16:09
Если потом захотят какие то отчеты с фильтрами по этим свойствам то вообще замучаетесь.
Я допускаю что таких гибких полей может понадобиться 1-3, но если 50 то это что то в консерватории.
17 tgu82
 
02.10.23
16:09
(15) Нет. Не быстрее. Там очень много полей и с очень замудренными названиями типа ЛЭП_6_10кв
18 uno-group
 
02.10.23
16:19
(17) создавай их программно какие проблемы.
19 Kigo_Kigo
 
02.10.23
16:21
По моему ТЗ на форме решает эту задачу на все 100% и не надо изобретать велосипед
20 tgu82
 
02.10.23
16:41
(19) Но поля-то в структурах справочников все равно вводить. А так ДА. Я частенько ТЗ на форме+Формекс использую
21 uno-group
 
02.10.23
16:56
(20) разобрал компауд файл добавил поля в текстовый файл собрал обратно. загрузил измененную конфигурацию
22 tgu82
 
02.10.23
18:18
(21) Наверное нет смысла. Не так сложна задача
23 HawkEye
 
02.10.23
20:30
(0) кинь на форму 150 колонок и играйся видимостью...
24 tgu82
 
02.10.23
20:51
у меня есть поле в служебном справочнике "Название колонки". Я ввожу его руками но поскольку высоту заголовка ТЗ на форме  я задал то как мне при вводе обычного текста указать "перевод строки" между слова то есть аналог "Разделитель строк" ???
25 tgu82
 
02.10.23
20:59
(24) Хотя можно же просто через Шаблон сделать
26 tgu82
 
02.10.23
21:07
Наименование заявителя проявителя и закрепителя - вот просто ввожу руками и надо вставить при вводе перевод строки и возврат каретки
27 tgu82
 
02.10.23
21:07
(26) После слова "проявителя"
28 tgu82
 
02.10.23
21:19
Вообще конечно Альф гений. Получить в ТЗ на форме и название колонок в несколько строк и значения данных в колонках в несколько строк - это Супер!!!
29 Смотрящий
 
02.10.23
21:46
(28) Дед. Называй его Дед.
30 Злопчинский
 
02.10.23
22:35
(7) "Так вроде в какой-то типовой было сделано" - так сделано в типовой ТиС в форме подбора номенклатуры, где в колонке использовалась переменная рассчитанная в функции из предыдущей колонки.
31 Злопчинский
 
02.10.23
22:44
Если штатно - тупо ТЗ на форму. И играться колонками и отображением как заблогарассудится.
.
при этом надо понимать - будут ли реквизиты справочника чисто информационно/описательными или индексируемыми?
.
и нахрена 50..100 реквизитов? Описывать некие характеристики? Ну так карточка с основными реквизитами и к ней как в ТиС "Свойство, значение свойсчва" и описывай произвольный набор характеристик для каждого элемента отдельно. Можно пойти дальше - сдедать "шаблоны характеристик" для классов номенклатуры, с заранее описанными "характеристиками" - чтобы для гвоздя - жмак! характеристика "покрытие, длина, вес", для гайки "жмак! " свой набор харатектристик.
.
Отчеты правда собирать геморно, ибо это все превращается по сути в метаконструктор (второй конфигуратор) и в коде появятся костыли типа "Если Свойство="Ширина" ТогдаТоТо...
32 Злопчинский
 
02.10.23
22:45
С постановокой задачи в (0) - труба. Ибо наверное тяжкое наследие царского режима...
33 uno-group
 
03.10.23
08:54
(24) А точно стоит это через ТЗ делать? ИМХО в таких случаях штатная таблица в режиме ввода данных офигительно работает. Ширину строк, колонок авто перевод строк и т.п. можно менять в динамическом режим + еще куча плюшек и без всяких дополнительных ВК.
34 tgu82
 
03.10.23
09:00
(33) Согласен но все-таки с задачей будут работать несколько пользователей (сетевая).
35 АгентБезопасной Нацио
 
03.10.23
09:07
открой уже для себя 1с++ и ТабличноеПоле. Там легко решается как эта задача в постановке в (0), так и практически без переделок в постановке (13), с механизмом свойств.
36 tgu82
 
03.10.23
09:11
(35) Спасибо. Да. Давно пора открыть :)
37 АгентБезопасной Нацио
 
03.10.23
09:25
(36) по-хорошему, пора уже закрывать - это актуально было лет 15 назад. сейчас актуальны самонеуправлеяемы формы, клиент-сервер и вот это всё.
Единственный плюс, что может научишься работать с нормальными запросами, что теоретически поможет в теоретическом переползании на снеговика (да и ТП в 1с++ тоже чем-то напоминает оное)
38 tgu82
 
03.10.23
09:38
(37) Я индексированной таблицей пользовался - понравилось. Только давно это было
39 tgu82
 
05.10.23
09:45
Казалось бы все просто но не работает:
Процедура ПриНачалеРедактированияСтроки()
  Если Форма.ПолучитьАтрибут(Форма.ТекущаяКолонка()).Заголовок()="ТипКолонки" Тогда
      ВыбТип="";
      Форма.УстановитьАтрибут(Форма.ТекущаяКолонка(),"ку-ку-ку");
УстановитьАтрибут(Форма.ТекущаяКолонка(),ВыбТип);             
  КонецЕсли;    
    
КонецПроцедуры
40 tgu82
 
05.10.23
09:46
Процедура ПриНачалеРедактированияСтроки()
  Если Форма.ПолучитьАтрибут(Форма.ТекущаяКолонка()).Заголовок()="ТипКолонки" Тогда
      ВыбТип="";
      Форма.УстановитьАтрибут(Форма.ТекущаяКолонка(),"ку-ку-ку");            
  КонецЕсли;
41 tgu82
 
05.10.23
09:47
Пробовал УстановитьАтрибут(Форма.ТекущаяКолонка(),"ку-ку-ку"); - без Форма. Результат тот же
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.