В поле агрегатного типа Справочник, как известно, может выводится либо код, либо наименование элемента, а возможно ли обмануть форму и вывести произвольный текст?
Добавить в АтрибутФормы условный реквизит Представление, куда можно будет установить формулу/шаблон для отображения пользовательского представления элемента?
Можно сделать предопределенную процедуру ПриПолученииПредставленияОбъекта(). Если придумать что делать с тормозами. Сейчас первое что приходит в голову - сделать аналогично отсечению в ПриПолученииСистемнойКомандыГлавнымОкном. Как-то так:
Процедура ПриПолученииПредставленияОбъекта(Объект, Представление, Отсекать)
Если ТипЗначенияСтр(Объект) = "Справочник" Тогда
Если Объект.Вид() = "Номенклатура" Тогда
Представление = "(" + СокрЛП(Объект.Актикул) + ") " + СокрЛП(Объект.Наименование);
Возврат;
КонецЕсли;
КонецЕсли;
Отсекать = 1; // для объектов этого тип.вид больше в процедуру не заходит
КонецПроцедуры
Либо обратный вариант - задавать предварительно явно какие тип.вид отправляются в процедуру.
Как-то так:
глСервис.ДобавитьФункциюПредставления("Справочник.Номенклатура", "глПолучитьПредставлениеНоменклатуры");
глСервис.ДобавитьФункциюПредставления("Документ.Реализация", "глПолучитьПредставлениеРеализации");
И в глобальнике:
Функция глПолучитьПредставлениеНоменклатуры(Объект)
Возврат "(" + СокрЛП(Объект.Актикул) + ") " + СокрЛП(Объект.Наименование);
КонецФункции
Функция глПолучитьПредставлениеРеализации(Объект)
Возврат "" + СокрЛП(Объект.НомерДок) + " от " + Объект.ДатаДок + " :: " + Объект.Контрагент;
КонецФункции
Так вижу...
Цитата: АЛьФ от 26 марта 2024, 11:08Можно сделать предопределенную процедуру ПриПолученииПредставленияОбъекта()...
...
Либо обратный вариант - задавать предварительно явно какие тип.вид отправляются в процедуру.
...
Так вижу...
Второй вариант более фундаментальный, это как ПланРаскраскиПоУмолчанию, установил и забыл.
Однако, возможно, для отдельных форм, кому-то пригодилось бы и событие.
Кстати, а ПланРаскраскиПоУмолчанию возможно таким образом установить отдельно для Справочников, Журналов и т.д.? Статусы элементов (помечен на удаление и тд) и документов (проведен и тд) отличаются, и раскраски требует отдельной для каждого типа мн.части.
Цитата: Титович Эдуард от 26 марта 2024, 11:31Кстати, а ПланРаскраскиПоУмолчанию возможно таким образом установить отдельно для Справочников, Журналов и т.д.? Статусы элементов (помечен на удаление и тд) и документов (проведен и тд) отличаются, и раскраски требует отдельной для каждого типа мн.части.
Нет. Это слишком сильно нагрузить все таблицы. Уж очень всяких ненужных проверок каждый раз, даже там, где они не нужны.
По этому функционалу будет фича. 1С ведет какой-то кэш представлений объектов. Сейчас делаю справочники. Если открыть форму списка справочника или иным способом обратиться к получению представления, а потом вызвать метод установки собственной функции, то элементы, для которых было уже получено представление, в нашу функцию не попадают.
Кэш сбрасывается при записи элемента.
Фича отменяется, нашел сброс кэша.
Цитата: АЛьФ от 02 апреля 2024, 21:03По этому функционалу будет фича. 1С ведет какой-то кэш представлений объектов.
Помните такой фокус?
НачатьТранзакцию();
Спр.Новый();
Спр.Наименование = "Привет, я - призрак элемента";
Спр.Записать();
РекивизитНаФорме = Спр.ТекущийЭлемент();
ОтменитьТранзакцию();
Форма для собственого поля элемента точно кэширует данные, причем вместе с его реквизитами, а вот про поле в списке я даже не подумал.
В принципе, если заранее ПриНачалеРаботыСистемы установленное представление для вида будет работать, этого вполне достаточно для работы.
Цитата: АЛьФ от 02 апреля 2024, 21:03Фича отменяется, нашел сброс кэша.
Ну вот, а я уже начал сочинение писать. )
Цитата: item от 02 апреля 2024, 22:21Цитата: АЛьФ от 02 апреля 2024, 21:03Фича отменяется, нашел сброс кэша.
Ну вот, а я уже начал сочинение писать. )
Качай тестовую сборку.
Цитата: АЛьФ от 02 апреля 2024, 22:46Качай тестовую сборку.
АЛьФ, без обид, версия 198 уже была, и даже 199 была в прошлый раз
Вы не поверите, но это работает!
Цитата: item от 02 апреля 2024, 23:05Цитата: АЛьФ от 02 апреля 2024, 22:46Качай тестовую сборку.
АЛьФ, без обид, версия 198 уже была, и даже 199 была в прошлый раз
У тестовой сборки я версию не меняю. Сейчас идёт 198. Уйдет в качестве релиза эта, тестовая будет 199.
Если это путает, могу тестовую сборку как-то отдельно помечать.
Цитата: АЛьФ от 02 апреля 2024, 23:18Если это путает, могу тестовую сборку как-то отдельно помечать.
Не, не нужно, не знал просто.
Это нечто!
Сервис.УстановитьФункциюПредставления("Справочник.Товары", "глПредставлениеТовара"); // круть!
представление будет работать норм
- - в ТЗ
- - в ТЧ документов
- - в формах списков журналов/справочников
- - в СЗ
.. есть какие-то ограничения где не будет работать такое представление?
.
если где-то в коде будет типа
СтрокаДляВыводаВОтчет = ""+СсылкаИлиОбъект; // будет новое представление или штатное?
Ведь уже начал сочинение, чего добру пропадать.)
Реализация произвольных представлений позволит не только информативно отобразить известные сложные составные элементы, такие как ПартииТоваров, Договоры и др. Возможности гораздо шире.
Имитирую в своих конфигурациях собственные типы данных, а именно вложенные структуры. Платформа не позволяется описывать свои типы и тем более структуры, но если очень хочется, то и не грех. Например, известную конструкцию Счет, Субконто1,.., СубконтоХ, которая набила уже оскомину за годы, по возможности заменяю ссылкой на справочник "Корреспонденции" соответсвующей структуры, и ПриНачалеВыбораЗначения этой ссылки открываю не список справочника на выбор, а форму для ввода полей структуры, в которой реализованы те самые постылые Счет, Субконто1,.., СубконтоХ, процедуры ПриВыбореСчета, ПриВыбореСубконто и всё такое. Результатом же ввода является ссылка на составной элемент вида Корреспонденция, созданный либо найденный по уникальному идентификатору структуры как суммы идентификаторов ее составляющих. Таким образом я избавляюсь от множественного повторения популярной конструкции в десятках документов и справочников, появляется возможность использовать такую структуру в константах и истории, что как изместно, невозможно стандартными средствами системы из-за неопределенного вида Субконто, и кроме того, проводить реорганизацию корреспонденций в следствии изменения состава и порядка субконто в плане счетов.
Схема рабочая, но есть слабое звено - отсутствует представление для такого элемента-структуры. Записывать в наименование через разделитель представления агрегатных составляющих есть полная глупость, и в общем случае решения этого вопроса не... было до сегодняшнего дня.
Цитата: Злоп от 02 апреля 2024, 23:28если где-то в коде будет типа
СтрокаДляВыводаВОтчет = ""+СсылкаИлиОбъект; // будет новое представление или штатное?
Охренеть, оно Спр.ТекущийЭлемент() выводит с указанным представлением!
Шайтан, не иначе )
А еще говорят,
ФОРМекс
АЛьФ, а на всякий случай, можно добавить в функцию еще один необязательный параметр?
Закладка для ДатыЗнач, для периодических реквизитов
Хм.. а для значений перечислений будет работать? Ну чисто интересно...
Цитата: item от 02 апреля 2024, 23:46АЛьФ, а на всякий случай, можно добавить в функцию еще один необязательный параметр?
Закладка для ДатыЗнач, для периодических реквизитов
Вопрос снят, ляпнул не подумавши.
Кстати, и в окне УдалениеПомеченныхОбъектов тоже отображается пользовательское представление.
Цитата: Злоп от 02 апреля 2024, 23:50Хм.. а для значений перечислений будет работать? Ну чисто интересно...
Только для справочников и документов.
Для остальных типов не вижу смысла.
Цитата: item от 02 апреля 2024, 23:16Вы не поверите, но это работает!
отлично!
а то у меня есть документы у которых дата не отображается.
И однухотелку пользователя зарубил, из-за отсутствия такой возможности.
Цитата: trdm от 03 апреля 2024, 09:53а то у меня есть документы у которых дата не отображается.
Извините за подсказку, это потому, что периодичность НомераДок не установлена.
Но дела это не меняет, теперь и для таких видов документов красота получается.
Кстати, с документами все же есть фича - если попробовать внутри функции получить представление, выйдет интересный эффект.
Типа такого:
Функция глПредставлениеДокумента(Объект)
Возврат "++ " + Объект;
КонецФункции
Цитата: АЛьФ от 03 апреля 2024, 10:21Кстати, с документами все же есть фича
Не критично, и вообще, нефиг рекурсировать внутри функции.
Теперь вот хочется и пиктограмму в поле вставить (проведен/не проведен),
или разбить поле на субполя, по аналогии в МЧ "в той же колонке".
Типа шутка ))
Цитата: item от 03 апреля 2024, 10:44Типа шутка ))
Зачем нам пять документов открывать?
Нам нужно всё видеть и использовать в одной диалоговой форме!
Цитата: Forum123 от 03 апреля 2024, 10:53Зачем нам пять документов открывать?
Нам всё нужно видеть и использовать в одной диалоговой форме!
Вот, и я том, нужно меру знать.
Тем более эту инфу можно запихать в представление или обозначить цветом фона самого поля.
И зря Вы решили надо мной постебаться, я то знаю, о чем говорю.
Цитата: item от 03 апреля 2024, 10:57Вот, и я том, нужно меру знать.
То была шутка, но где-то и хотелка.
Хотим иметь две множественные части в диалоговом окне.
А-ля VLC Delphi.
https://github.com/HemulGM/VLC VLC Actual Fork (Video LAN)
Цитата: Forum123 от 03 апреля 2024, 10:59Хотим иметь две множественные части в диалоговом окне.
Вот из-за таких хотелок и восьмерка появилась.
А есть другие подходы.
Цитата: item от 03 апреля 2024, 11:05А есть другие подходы.
?
Ой, не VLC, а DFM.
> Вот из-за таких хотелок и восьмерка появилась.
Она вовсе не панацея.
Пока она - супер TSQL и диалоговые окна, интегрированные в вэб.
Фирма 1С ныне кое о чём догадалась.
Цитата: Forum123 от 03 апреля 2024, 11:07?
Само наличие редактируемой ТЗ на форме это хорошо, это было реализовано, если не ошибаюсь, в vtools еще четверть века назад, и превратилось со временем в то, что мы знаем как ТабличноеПоле.
Вот Вам пожалуйста, вторая табличная часть, только вот с ПоставщикомДанных туговато.
Так и представляю себе планёрки у Нуралиева по развитию 77.
Сидел там наверное, молча в уголке, такой себе тихий товарищ, и по концу заседаний, аки Марк Порций Катон, восклицал "а табличных частей должно быть как минимум две!".
Вот, примерно так и они появились, вместе с тупиковой ветвью семерки.
Цитата: item от 03 апреля 2024, 11:18Вот, примерно так и они появились, вместе с тупиковой ветвью семерки.
Да не, им РЕСПЕКТ, это же 1996 год.
Главное в те года было "танки выбивать".
Цитата: Forum123 от 03 апреля 2024, 11:21Цитата: item от 03 апреля 2024, 11:18Вот, примерно так и они появились, вместе с тупиковой ветвью семерки.
Да не, им РЕСПЕКТ, это же 1996 год.
А сейчас какой год?
Под тупиковой ветвью семерки я имел в виду восьмерку, есть что.
Цитата: item от 03 апреля 2024, 11:23А сейчас какой год?
1996 конечно.
Мы же в семёрке, но и восьмёрка не панацея.
Хорошо её знаю.
Есть и хорошее, но и неудобств много.
Такое впечатление, что ещё лет тридцать будут "улучшать".
Цитата: Forum123 от 03 апреля 2024, 10:53Зачем нам пять документов открывать?
прол какие "пять документов" речь? не уловил...
Цитата: Злоп от 03 апреля 2024, 12:20прол какие "пять документов" речь? не уловил...
Чтобы в диалогом окне можно было иметь несколько множественных частей.
Например для справочника и документа одновременно.
Как в Delphi DFM.
Можно конечно "велосипедить", но лучше, чтобы такая фунциональность кем-то была разработана.
Цитата: Forum123 от 03 апреля 2024, 12:31Чтобы в диалогом окне можно было иметь несколько множественных частей.
- эта идея кажется мне мутноватой. Я всегда был против смешивания разных сущностей. И всегда ругался на коллег-велосипедистов, когда из ФОРМЫ СПИСКА журнала или справочника начинали велосипедить адские ФОРМЫ-АРМы. Нужен АРМ - ну сделай АРМ, а не превращай журнал выдачи валенок со склада в роман "Войну и мир"
Цитата: Злоп от 03 апреля 2024, 19:13Я всегда был против смешивания разных сущностей.
Хотелка о возможности, а использовать или нет зависит от задачи.
Неплохо если бы диалоговые формы имели функциональность скажем как в диалоговымх формам Windows.
Было больше разных controls, ...
Диалоговые формы 1С ведь по существу кастрированные диалоговые формы Windows и пару controls от 1С.
Цитата: АЛьФ от 03 апреля 2024, 06:09Цитата: Злоп от 02 апреля 2024, 23:50Хм.. а для значений перечислений будет работать? Ну чисто интересно...
Только для справочников и документов.
Для остальных типов не вижу смысла.
А можно еще для счетов сделать?
Цитата: sau от 04 апреля 2024, 21:22Цитата: АЛьФ от 03 апреля 2024, 06:09Цитата: Злоп от 02 апреля 2024, 23:50Хм.. а для значений перечислений будет работать? Ну чисто интересно...
Только для справочников и документов.
Для остальных типов не вижу смысла.
А можно еще для счетов сделать?
Ок. Завтра вечером попробую.
Цитата: АЛьФ от 04 апреля 2024, 21:30Ок. Завтра вечером попробую.
Таки можно поле поделить пополам?
Не понимаю. Счет же редактируется в поле.
Цитата: item от 04 апреля 2024, 22:00Цитата: АЛьФ от 04 апреля 2024, 21:30Ок. Завтра вечером попробую.
Таки можно поле поделить пополам?
Не понимаю. Счет же редактируется в поле.
Не уловил какое поле и как "пополам"?
Цитата: АЛьФ от 04 апреля 2024, 22:03Не уловил какое поле и как "пополам"
Поле Счёта ведь редактируемое, "10.1", как можно установить представление?
Цитата: item от 04 апреля 2024, 22:13Цитата: АЛьФ от 04 апреля 2024, 22:03Не уловил какое поле и как "пополам"
Поле Счёта ведь редактируемое, "10.1", как можно установить представление?
Так для поля и нет получения представления. А для остальных случаев - пожалуйста.
Цитата: sau от 04 апреля 2024, 21:22Цитата: АЛьФ от 03 апреля 2024, 06:09Цитата: Злоп от 02 апреля 2024, 23:50Хм.. а для значений перечислений будет работать? Ну чисто интересно...
Только для справочников и документов.
Для остальных типов не вижу смысла.
А можно еще для счетов сделать?
К сожалению, не получилось. Под эту задачу надо будет переформировывать lib-файлы и дополнять заголовочные. Не готов к этому.
Цитата: АЛьФ от 07 апреля 2024, 18:15Цитата: sau от 04 апреля 2024, 21:22Цитата: АЛьФ от 03 апреля 2024, 06:09Цитата: Злоп от 02 апреля 2024, 23:50Хм.. а для значений перечислений будет работать? Ну чисто интересно...
Только для справочников и документов.
Для остальных типов не вижу смысла.
А можно еще для счетов сделать?
К сожалению, не получилось. Под эту задачу надо будет переформировывать lib-файлы и дополнять заголовочные. Не готов к этому.
Жаль. Большое спасибо.
Цитата: АЛьФ от 03 апреля 2024, 10:21Не критично, и вообще, нефиг рекурсировать внутри функции.
Я тут надысь (yesterday) подумал, а что будет если в ассоциативный вектор 1с++ запихнуть самого себя...
Цитата: Злоп от 07 апреля 2024, 23:23Цитата: АЛьФ от 03 апреля 2024, 10:21Не критично, и вообще, нефиг рекурсировать внутри функции.
Я тут надысь (yesterday) подумал, а что будет если в ассоциативный вектор 1с++ запихнуть самого себя...
Нормально всё будет. В том же снеговике, это сплошь и рядом, когда в структуру пихают структуру и так...такой механизм там везде.
Тут, аналогично, массив в массив, вектор в вектор, тз в ТЗ и так, до бесконечности (точнее, пока памяти хватит)
Цитата: Злоп от 07 апреля 2024, 23:23что будет если в ассоциативный вектор 1с++ запихнуть самого себя...
..а ничего не будет. ссылка же на самого себя запомнится и все...
и в СЗ, и в ТЗ.
Цитата: Злоп от 10 апреля 2024, 16:43..а ничего не будет...
забудь об этом ))
Цитата: АЛьФ от 26 марта 2024, 11:08Можно сделать предопределенную процедуру ПриПолученииПредставленияОбъекта(). Если придумать что делать с тормозами. Сейчас первое что приходит в голову - сделать аналогично отсечению в ПриПолученииСистемнойКомандыГлавнымОкном. Как-то так:
Процедура ПриПолученииПредставленияОбъекта(Объект, Представление, Отсекать)
Если ТипЗначенияСтр(Объект) = "Справочник" Тогда
Если Объект.Вид() = "Номенклатура" Тогда
Представление = "(" + СокрЛП(Объект.Актикул) + ") " + СокрЛП(Объект.Наименование);
Возврат;
КонецЕсли;
КонецЕсли;
Отсекать = 1; // для объектов этого тип.вид больше в процедуру не заходит
КонецПроцедуры
Либо обратный вариант - задавать предварительно явно какие тип.вид отправляются в процедуру.
Как-то так:
глСервис.ДобавитьФункциюПредставления("Справочник.Номенклатура", "глПолучитьПредставлениеНоменклатуры");
глСервис.ДобавитьФункциюПредставления("Документ.Реализация", "глПолучитьПредставлениеРеализации");
И в глобальнике:
Функция глПолучитьПредставлениеНоменклатуры(Объект)
Возврат "(" + СокрЛП(Объект.Актикул) + ") " + СокрЛП(Объект.Наименование);
КонецФункции
Функция глПолучитьПредставлениеРеализации(Объект)
Возврат "" + СокрЛП(Объект.НомерДок) + " от " + Объект.ДатаДок + " :: " + Объект.Контрагент;
КонецФункции
Так вижу...
Этого функционала в 197й версии, что лежит в кладовке еще нет?
Цитата: alyuev от 30 мая 2024, 15:55Этого функционала в 197й версии, что лежит в кладовке еще нет?
Это только в тестовой версии пока.
не пора 198 в релиз выкладывать?
Цитата: Злоп от 31 мая 2024, 15:20не пора 198 в релиз выкладывать?
Хотел сначала доделать дополнительные кнопки в реквизитах. Но что-то застрял.
Цитата: АЛьФ от 31 мая 2024, 16:18Хотел сначала доделать дополнительные кнопки в реквизитах. Но что-то застрял.
Очень ждем