Вход | Регистрация
    1  2  3  4  5  6  7  8  9   
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Добавил пару методов в FormEx

v7: Добавил пару методов в FormEx
Я
   АЛьФ
 
18.11.20 - 12:10
Понадобилось тут для работы добавить пару методов.

КопироватьОбластьТаблицы(<ТаблицаИсточник>,<СтрокаНачальная>,<КолонкаНачальная>,<СтрокаКонечная>,<КолонкаКонечная>,<ТаблицаПриемник>,<СтрокаНачальнаяПриемника>,<КолонкаНачальнаяПриемника>)
Назначение:
Метод для копирования области ячеек из одной таблицы в другую. Копируемые ячейки заменяют содержимое ячеек в таблице-приемнике.
Параметры:
ТаблицаИсточник - объект Таблица, из которого надо скопировать ячейки;
СтркаНачальная,КолонкаНачальная,СтрокаКонечная,КолонкаКонечная - координаты, задающие копируемую область ячеек;
ТаблицаПриемник - объект Таблица, в который надо скопировать ячейки;
СтрокаНачальнаяПриемника,КолонкаНачальнаяПриемника - координаты начальной ячейки области, куда надо поместить копируемые ячейки.

ОткрытьДвиженияОбъекта(<Документ>)
Назначение:
Открывает стандартное окно движений документа по регистрам. Аналогично действию ''Движения документа'' в контекстном меню журнала документов.
Параметры:
<Документ> - документ, движения которого надо показать.

Если кому интересно, сборку 2.0.5.152 качать, как обычно на formex.dorex.pro
   mishaPH
 
Модератор
501 - 21.12.20 - 13:13
(493) https://yadi.sk/i/cUG4ZKI1sJvTxA
ну вот товар по идее красивее было бы по центру
   Злопчинский
 
502 - 21.12.20 - 13:23
(501) Правильно писать "уклейка"
   АЛьФ
 
503 - 21.12.20 - 13:25
2(500) В таких ситуациях лучше табличное поле использовать. Слишком уж глубоко залезать (на первый взгляд) придется.
   АЛьФ
 
504 - 21.12.20 - 13:26
2(501) Это я понял. Не встречал в коде 1С возможности менять положение заголовка.
   Djelf
 
505 - 21.12.20 - 13:40
(504) Вроде есть возможность, вот тут https://gyazo.com/d15dee01f151ff96e4ed9c6e74f9ab97
5й параметр tagLVCOLUMNA, а у него есть LVCF_FMT, а у LVCF_FMT есть LVCFMT_CENTER
https://docs.microsoft.com/en-us/windows/win32/api/commctrl/ns-commctrl-lvcolumna

Только зачем, если есть ТабличноеПоле со значительно большими возможностями?
   АЛьФ
 
506 - 21.12.20 - 13:44
2(505) Таблицы в 1С не на основе CListCtrlEx сделаны. Там полностью свой класс от CWnd.
   Djelf
 
507 - 21.12.20 - 13:48
Могу и ошибаться, так глубоко не копал, а где тогда CListCtrlEx используется?
Какой там класс у таблиц в 1С?
   АЛьФ
 
508 - 21.12.20 - 13:52
2(507) Видать в каких-то списках. Понятия не имею где именно. Таблицы 1С - это CBrowse.
   Djelf
 
509 - 21.12.20 - 14:17
(508) А... в br32 оно сидит... Вроде и там можно как-то воткнуться, но придется видимо изрядно патчить память.
В void __thiscall CBrowse::OnPaint(CBrowse *this)
https://gyazo.com/368b75bd4921852c4b8b17fb6424c234
Наверное не стоит ;)
   trad
 
510 - 21.12.20 - 14:24
(509)
на всякий случай + 0x2c
это вот это m_Flag1

//<-CColumn(64/32)<-CCmdTarget(32/28)<-CObject(4/4)

class IMPORT_1C CColumn:public CCmdTarget//CObject

{
DECLARE_DYNAMIC(CColumn)

public:
    CBrowse* m_pBrowse;      // 20h

    UINT m_ID;              // 24h

    CString m_Caption;      // 28h

    DWORD m_Flag1;          // 2Ch

    DWORD m_Flag2;          // 30h

    DWORD m_Width;          // 34h

    DWORD m_Width2;          // 38h

    DWORD m_ColPositionFlag;// 3Ch

    //size 40h
   trad
 
511 - 21.12.20 - 14:25
CColumn& CBrowse::GetColumn(unsigned int);
   trad
 
512 - 21.12.20 - 14:27
но судя по (509)  возможно только left и right
   АЛьФ
 
513 - 21.12.20 - 14:31
2(509) Мне кажется, что это положение текста в ячейке таблицы, а не в заголовке колонки.
   trad
 
514 - 21.12.20 - 14:32
(513) да, скорее всего ты прав
   trad
 
515 - 21.12.20 - 14:35
+(514)
тут надо взглянуть на (509) с большего расстояния, чтоб понять контекст
   АЛьФ
 
516 - 21.12.20 - 14:53
Вроде нашел где заголовок таблицы выводится: в br32 по адресу 1F20543B.
   АЛьФ
 
517 - 21.12.20 - 14:55
+(516) Если это действительно так, то там стиль рисования передается константой 0х8800. Не поменять, если не перехватывать всю отрисовку.
   Злопчинский
 
518 - 21.12.20 - 15:47
на сайте пока 166 лежит, косячная в части "нарушение  прав доступа".
у меня в продакшене с пятницы 168 работает, нареканий пока нет.
Ходатайствую не упустить исправления по 168 релизу, когда будет выкладываться обновленный релиз
   АЛьФ
 
519 - 21.12.20 - 16:08
2(518) Не переживай. Просто тест переедет с ЯД на сайт в релиз.
   victuan1
 
520 - 22.12.20 - 04:31
А вот кто сможет поправить глюк когда постепенно ползут реквизиты контролов на формах диалогах если сохранять диалоги в разных стилях оформления рабочего стола Виндовс?
Я так понял, что это древний глюк платформы 1С 7.7 из-за того что она запоминает координаты контролов на диалоге не от нижней границы строки заголовка форма, а от верхней. Из-за того, что у меня на работе - ВинХР, а дома - Виндовс7, в которых я не смог настроить одинаковую высоту строки заголовка окон, у меня при смешанной разработке контролы на редактируемых формах постепенно ползут вверх.
   Злопчинский
 
521 - 22.12.20 - 05:26
я тупо делаю изначально первые по вертикали реквизиты пониже, рассчитывая что заголовок окна будет широкий. и вроде норм.
   mishaPH
 
Модератор
522 - 22.12.20 - 10:52
2.0.5.131  https://yadi.sk/i/cUG4ZKI1sJvTxA
2.0.5.166  https://yadi.sk/i/VGbbjGI4c4nbXw

вот как так? одна форма
2.0.5.166 уже не могу поставить в системы т.к. под 131 все написано

Процедура ПриОткрытии()
    Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"FormEx.dll") = 1 Тогда
        Сервис = СоздатьОбъект("Сервис");
        Сервис.ВключитьРаскраскуТаблиц();
        Сервис.ПоказыватьИндикаторКлавиатуры(1); 
        Сервис.ПерехватМыши(0);
        Сервис.ПерехватКлавиатуры(1);
    Иначе
        Предупреждение("не загружена компонента FormEx.dll");
    КонецЕсли;

    
    ТЗЗаданий.НоваяКолонка("Товар","Справочник.Номенклатура",,,,18);
    ТЗЗаданий.НоваяКолонка("Количество","Число",5,,,5);

    АтрФормы = СоздатьОбъект("АтрибутФормы");
    шрифт18 = Сервис.СоздатьШрифт("глШрифт18",18,7);    
    шрифт25 = Сервис.СоздатьШрифт("глШрифт25",25,7);    
    шрифт20 = Сервис.СоздатьШрифт("глШрифт20",20,7);    
    шрифт30 = Сервис.СоздатьШрифт("глШрифт30",30,7);    
    шрифт35 = Сервис.СоздатьШрифт("глШрифт35",35,7);    
    шрифт40 = Сервис.СоздатьШрифт("глШрифт40",40,7);    
    шрифт50 = Сервис.СоздатьШрифт("глШрифт50",50,7);    
КонецПроцедуры// ПриОткрытии



Процедура ПослеСозданияФормы()
    ФормаРасш = СоздатьОбъект("РасширениеФормы");
//    ФормаРасш.ВысотаЗаголовкаТаблицы("ТЗЗаданий",2);    

    ФормаРасш.УстановитьАвтоширинуВТаблице("ТЗЗаданий",1);    
    ФормаРасш.верх = 0;
    ФормаРасш.Лево = 0;    
//    ФормаРасш.Максимизирована = 1;



    АтрФормы.УстановитьАтрибут(Форма,"ТЗЗаданий");
    АтрФормы.Шрифт = шрифт20;
    АтрФормы.УстановитьАтрибут(Форма,"кн_ОтправитьЗадание");
    АтрФормы.Шрифт = шрифт25;

    
    
КонецПроцедуры// ПослеСозданияФормы
   АЛьФ
 
523 - 22.12.20 - 11:37
2(522) А что это за странные названия шрифтов? Они действительно есть в системе?
   Djelf
 
524 - 22.12.20 - 11:42
Обсуждали уже вот тут: https://www.1cpp.ru/forum/YaBB.pl?num=1556121691/9
   АЛьФ
 
525 - 22.12.20 - 11:49
2(524) И ведь совсем недавно было. А не помню уже ни черта. Только когда читать начал вспомнил.
   mishaPH
 
Модератор
526 - 22.12.20 - 11:54
(523) ну так это чуть ли из 0 причера код со шрифтами
   mishaPH
 
Модератор
527 - 22.12.20 - 11:55
у меня это в одной системе сборки товара используется активно теперь туда новую компоненту не поставлю расп..сит шрифты се.
да и в чек в магазине
   АЛьФ
 
528 - 22.12.20 - 12:10
2(527) Предложения?
   mishaPH
 
Модератор
529 - 22.12.20 - 12:33
да я пока старую оставлю.
   Злопчинский
 
530 - 22.12.20 - 13:41
(525) и НЕ НАДО НИЧЕГО МЕНЯТ С РАЗМЕРАМИ ШРИФТОВ. это по моим тестам сделано было в районе. раньше давно например шрифт Ариал на форме в виде надписи и шрифт Ариал в ТЗ и в полях ввода для одних и тех же заданных размеров - физически отличались. После поправок Альфом шрифт текствой надписи с размером например 10 равен размеру шрифта с размером 10 в ТЗ. и все норм. Сорлнце всходит? всходит! ну и не трогйте!
 
 Рекламное место пустует
   Злопчинский
 
531 - 22.12.20 - 13:43
(528) условно: я гружу компоненту из каталога базы. туда для клнкретного решения можно подсунуть конкретный версию формекса. а если в каталоге базы нет - грузится "общая" компонента из БИН. с учетом каталоговПользователя можно хоть для каждого пользователя 1С свою компоненту грузить.
   АЛьФ
 
532 - 22.12.20 - 14:08
А такой вот внезапный вопрос. Может кто в курсе как получить идентификатор колонки многострочной части формы? Имеется ввиду в компоненте, исходя из имеющегося объекта CBrowse.
   mishaPH
 
Модератор
533 - 22.12.20 - 14:32
(530) подстроить под новую все и не парится более?
   Djelf
 
534 - 22.12.20 - 14:33
(532) Поставь уже Гидру! ;)
CColumn * __thiscall CBrowse::GetColumnN(CBrowse *this,int param_1)
https://gyazo.com/86866166c8b20e7e5dc7d27977308402
   АЛьФ
 
535 - 22.12.20 - 14:36
2(534) И где тут идентификатор колонки? Не ИД команды, не заголовок, а именно идентификатор.
   Djelf
 
536 - 22.12.20 - 14:38
(535) Должно быть в CColumn->m_ID, ИМХО.
   Djelf
 
537 - 22.12.20 - 14:40
(536) А, ТекстовойИдентификатор? Поищу...
   АЛьФ
 
538 - 22.12.20 - 14:44
2(537) Именно текстовый. В ТЗ понятно как, а вот с многострочной частью засада. Похоже, надо брать CGetDoc7 формы и оттуда тянуть. Вообще непонятно откуда брать идентификаторы, не привязанных к реквизитам колонок.
   Djelf
 
539 - 22.12.20 - 14:45
Предполагаю что в массиве колонок текстовой Ид сидит https://gyazo.com/e544986abd601aeda4ae3e2ccd74bd60
   АЛьФ
 
540 - 22.12.20 - 14:51
2(539) Там массив из тех же CColumn.
   Злопчинский
 
541 - 22.12.20 - 14:52
(533) угу
   Djelf
 
542 - 22.12.20 - 14:55
Хм, да. Текстовых идентификаторов что-то не видать в этих структурах. Где то уровнем выше видимо они сидят.
Где то в контексте формы видимо. 1С же не дает создать реквизит с тем же ТекстовымИД на форме. Из числового ИД в Форме Текстовой ИД разве нельзя получить?
   Злопчинский
 
543 - 22.12.20 - 14:55
@Альф, а вот еще такая фича:
Tсли в ТЗ на форме штатно сделать видимой служебную колонку "НомерСтроки" (бывает иногда такая потребность), то ширина этой колонки овербольшая и никакими манипуляциями не удается сделать ее уже, что неудобно адски.

Можно ли это как-то "подкрутить"..?
   АЛьФ
 
544 - 22.12.20 - 15:03
2(542) Как-то можно, наверное. Вот и был вопроса: как?
2(543) И УстановитьШиринуКолонки() не помогает?
   Djelf
 
545 - 22.12.20 - 15:15
(544) А у тебя же уже есть метод!
  РасширениеФормы=СоздатьОбъект("РасширениеФормы");
  РасширениеФормы.methColArray();

   Djelf
 
546 - 22.12.20 - 15:21
А, чорд, он тоже не ИД, а заголовки выводит...
   АЛьФ
 
547 - 22.12.20 - 15:21
2(545) Это Артур делал. И там искомого тоже нет. Там просто колонки перебираются и выводятся атрибуты CColumn.

Пока сделал в лоб:
        CView * pView = (CView*)pBrowse->GetParent();
        if(pView)
        {
            CGetDoc7* pGetDoc7 = (CGetDoc7*)pView->GetDocument();
            if(pGetDoc7)
            {
                int count = pBrowse->GetColumnNum();
                CString csBuf = "";

                for(int col = 0; col < count; col++)
                {
                    CColumn &Column = pBrowse->GetColumnN(col);
                    CGetField* pGetField = pGetDoc7->GetField(Column.m_ID);
                    if(pGetField && pGetField->m_Set)
                    {
                        if(csParamColName.CompareNoCase(pGetField->m_Set->m_CodeName) == 0)
                        {
                            csBase = pGetField->m_strCtrlTitle;
                            col = count;
                        }
                    }
                }
            }
        }
Может потом чего более достойное придумается.
   АЛьФ
 
548 - 22.12.20 - 15:25
+(547) Это поиск колонки с заданным идентификатором. Мысль в том, чтобы у таблицы была колонка с идентификатором "FormEx_ПараметрыТаблицы" и там через точку с запятой были перечислены некие дополнительные параметры, меняющие поведение этой таблицы. Пока там обрабатывается только параметр ЦентрироватьТекущуюСтроку. Это чтобы нормализировать новый функционал при установке текущей строки в таблице. Метод ЦентрироватьТаблицуДляТекущейСтроки() действует сразу на все таблицы, что не есть хорошо. Новый подход позволит для каждой таблицы задать свое поведение.
   Djelf
 
549 - 22.12.20 - 15:36
Подзабыл уже где было. В тзКонтролов=РасширениеФормы.methCtrlInfo(); все что на формен находится есть.
   Злопчинский
 
550 - 22.12.20 - 16:24
(544) "УстановитьШиринуКолонки() " - хм.. сейчас проверим...
   Злопчинский
 
551 - 22.12.20 - 16:26
(548) "и там через точку с запятой были перечислены некие дополнительные параметры, меняющие поведение этой таблицы."
чтобы туда можно расширенные параметры подсовывать, например, чтобы скроллы вертикаль/горизонталь показывать/не показывать, шрифт на всю таблицу целиком итд (а не отдельным значением через расширение формы)
   Злопчинский
 
552 - 22.12.20 - 16:29
А как все-таки сделать чтобы ОбработкаВнешнегоСобытия для дочерней мод.формы ловилась (при открытии нескольких мод.форм друг за другом вызовами), а не проваливалась в самую первую родительскую мод.форму?
   Злопчинский
 
553 - 22.12.20 - 16:37
(544) "УстановитьШиринуКолонки()" - получилось, спсб!
   АЛьФ
 
554 - 22.12.20 - 17:02
2(552) Насколько я понимаю, никак. Надо другой механизм придумывать.
   Злопчинский
 
555 - 22.12.20 - 17:31
(554) можно конечно делать на немодальных формах, и при закрытии дочерней активизировать родительскую или при повторнымоткрытием родительскую с передачей параметров. была еще штука (@Ёпрст вроде показывал - эмуляция модальности немодальной формой -может завалялась у кого). а то при работе с модальными формами приходится обработкой-диспетчером запускать только очередную модальную форму единственную с передачей кучи параметров для понимания контекста куда надо "попасть" родительской форме при закрытии дочерней или делать приходится много форм при сложных алгоритмах где вместо одного сканирвоания объекта надобится сканирвоание кучи других объектов связанных". Пихать это всё в одну форму на разные слои можно, но это мне сильно не нравится, потому как переносимость такого решения низкая, а так каждая форма за свой атомарный шаг отвечтает - главное на вход подать нужные параметры...
.
может у кого какие соображения/практика подобного было/есть?
   АЛьФ
 
556 - 22.12.20 - 17:37
Сделал колонку для параметров таблицы.
Как это работает. Добавляем в таблицу (как в таблицу значений, так и в любую многострочную часть на форме) колонку с идентификатором "FormEx_ПараметрыТаблицы", в заголовке этой колонки пишем "ЦентрироватьТекущуюСтроку:0".
Пример кода:

тз.НоваяКолонка("Название",,,,"Название заголовка");
тз.НоваяКолонка("FormEx_ПараметрыТаблицы",,,,"ЦентрироватьТекущуюСтроку:0");
тз.ВидимостьКолонки("FormEx_ПараметрыТаблицы", 0);

После двоеточия число - это тип центровки, как описано в методе ЦентрироватьТаблицуДляТекущейСтроки (). Реализовано так, чтобы в будущем можно было добавлять какие-то еще параметры для таблиц.
Метод ЦентрироватьТаблицуДляТекущейСтроки() теперь надо вызывать только если надо изменить поведения по умолчанию для всех таблиц.

Качать для тестирования все там же: https://yadi.sk/d/SaGiKhu0fjokHw
   Sserj
 
557 - 22.12.20 - 18:28
(555) Можно пробежаться по контекстам открытых из обрабоки, что типа такого:
Перем контекстДочернейФормы;

Процедура ТутОткрываетсяФорма()
  ОткрытьФормуМодельно("...", контекстДочернейФормы);
КонецПроцедуры

Процедура ОбработкаВнешнегоСобытия(параметрыСобытия)
  Если ТипЗначения(контекстДочернейФормы) = 100 Тогда
    //В дочерней может и не быть обработчика

    Попытка
      контекстДочернейФормы.ОбработкаВнешнегоСобытия(параметрыСобытия);
      //Вот тут можно даже в параметр что-то вернуть типа ОтключитьСвойОбработчик

      //но предположим что свой не нужен и просто выходим.

      Возврат;
    Исключение
    КонецПопытки
  КонецЕсли;
  //Если дочерней нет или в ней нет обработчика продолжаем свою обработку.

КонецПроцедуры
   Sserj
 
558 - 22.12.20 - 18:29
+(557) Ну и аналогично можно в дочерних окнах такое вставить, чтобы вся цепочка проверялась.
   Злопчинский
 
559 - 22.12.20 - 19:39
(557) ничего не понял. а ак это в родительской форме сработает ОбработкаВнешнегоСобытия если еще дочерняя модальная форма не закрыта? причем в дочерней модальной форме выполняется не одно сканирование с закрытием дочерней модальнйо формы, а в дочерней форме идет поток санирвоаний при этом из дочерней модальнйо формы может вызываться дочернеяя-дочере=няя форма, в которйо также выполняется поток сканирвоаний...
   Злопчинский
 
560 - 25.12.20 - 12:55
АЛьФ, а можно ли както типа в "один прием" без существенных вычислений (по примеру выше автоподбора шрифта) сделать типа такоЕ:
Форма, на форме надпись. шрифт+высота надписи такие что получается однострочная надпись.
текст надписи при открытии формы или действий с формой может меняться динамически.
чтобы как-то устанавливать вариант выравнивания по горизонтали... если текст полностью влазит в надпись - выравнивание по центру, если не влазит полностью - выравнивание по левому краю...
?
например, на форму выводится наименование товара в виде "артикул наименование". если название длинное то при выравнивании по горизонтали по центру левая правая часть обрезаются и хрен поймешь...
?
 
 Рекламное место пустует
   Злопчинский
 
561 - 25.12.20 - 12:56
.. типа
МойТекстовыйРеквизит.Автоформатирование();
   Злопчинский
 
562 - 25.12.20 - 20:24
а напомните , формексом можно сделать в строк ТЗ строку с переносом, то есть плавающей высоты? (имхо нет)
типа

| артикул | наименование 
| 123456  | Тут наименование в несколько строк
|           | потому что длинное с переносом
   Злопчинский
 
563 - 25.12.20 - 20:24
тьфу блин
--------------------------------------------------------------
| артикул | наименование
--------------------------------------------------------------
| 123456  | Тут наименование в несколько строк
|         | потому что длинное с переносом
--------------------------------------------------------------
   tgu82
 
564 - 25.12.20 - 22:41
(563) Вот название колонок в несколько строк можно. А чтоб значения в несколько строк - что-тоя такое не помню
   Злопчинский
 
565 - 26.12.20 - 03:48
.. и еще: можно ли как-то штатные поля ввода для строки и числа сделать с выравниваем по центру?
   Злопчинский
 
566 - 26.12.20 - 03:50
Вот, например, сделать что текстовая надпись с длинным текстом выравненная вертикально по центру будет автопереносится (штатно такой настройки нет) - можно через расширенный стиль, может и в (565) как-то можно?
   simply1
 
567 - 29.12.20 - 19:10
Так это из-за модальности не срабатывает глСервис.ВнешнееСобытие() и не попадает в ОбработкаВнешнегоСобытия(Источник_,Событие_,Данные_) ???
   Злопчинский
 
568 - 29.12.20 - 22:04
(567) ну, ОбработкаВнешнегоСобытия не срабатывает, а вот чем порожадется - это другое, к модальности отношения не имеет имхо
   АЛьФ
 
569 - 30.12.20 - 09:48
Хозяйке на заметку.
Знаете ли вы, что если со сборкой FormEx больше 164 в каталог базы положить файл wallpaper.bmp, то он будет загружен в качестве обоев главного окна? А еще можно в названии файла указать в скобках положение обоев, как оно описано в методе Сервис::УстановитьОбои(). Например, "wallpaper(6).bmp" - картинка будет растянута на все окно, а "wallpaper(2).bmp" картинка будет отображена в правом верхнем углу.
   big
 
570 - 30.12.20 - 19:38
(569) Хммм... О каких пасхалках мы ещё не знаем? ;)
   Злопчинский
 
571 - 30.12.20 - 21:05
(569) а в (563) в формексе такого нет?
   АЛьФ
 
572 - 30.12.20 - 22:13
2(571) Такого нет.
2(570) Вот прям сразу все рассказать?
   MWWRuza
 
573 - 31.12.20 - 01:18
   Злопчинский
 
574 - 31.12.20 - 05:47
Как получить программно описание объекта метаданных (то что в хелпе открывается по вопрс.знаку)..?
вроде где-то видел, что можно достучаться..
но как?
   MWWRuza
 
575 - 31.12.20 - 10:56
(574) Ээээ....??? А в двух словах, зачем тебе это?
   Злопчинский
 
576 - 31.12.20 - 11:44
(575) надо!
например туда я могу запихнуть всякую хрень, которую извлекать и выполнять.
например чисто условно перечень реквизитов для выгрузки или еще что-то полезное чем можно воспользоваться в программном коде.
даже тупо нажать на кнопку на форме и получить текстовое описание хелпа
   MWWRuza
 
577 - 01.01.21 - 02:06
(576) даже тупо нажать на кнопку на форме и получить текстовое описание хелпа

Кгм... Для кого? Для юзеров -? А нах??? В конфигураторе, ты и так получишь, все, что тебе надо...
Мне это напомнило первое знакомство с 1С:Розницей, еще 1.0... Там надо было "ручками" прописывать формулы для расчета цены... Обычные пользователи "вешались", не понимая, чего от них хочет программа. Потом, вроде это упростили, стало более визуально. Но, аллергия к типовым 8.хх после этого, лично у меня осталась на все время. :-(
   Злопчинский
 
578 - 04.01.21 - 00:10
(577) шоб було!
   Злопчинский
 
579 - 04.01.21 - 00:11
и из-за того что заголовок нулевой высоты не учитывается при расчете колва строк, помещающихся на страницу ТЗ - приходится отказываться от ткой полезнйо фичи... потому что некрасиво выглядит неиспользованная строчка внизу списка ТЗ при этом что список в ТЗ еще не закончился...
   АЛьФ
 
580 - 04.01.21 - 09:09
2(574) Расширениеформы::Описание.
2(579) Я думаю над этим...
   Злопчинский
 
581 - 04.01.21 - 12:38
(580) спасибо.
ждем.
   Злопчинский
 
582 - 04.01.21 - 12:39
(580) а можно еще как-то сделать так, чтобы разлиновка ТЗ отсутствовала или задавать цвет, которым будет рисоваться разлиновка ТЗ?
   Злопчинский
 
583 - 04.01.21 - 12:43
(580) если это привязано к форме - то это скорее всего описание реквизита, лежащего на форме? а я имею в виду описание объекта метаданных, которое, по идее м.б. доступно и без наличия формы?
   АЛьФ
 
584 - 04.01.21 - 15:39
2(582) Нет. Тогда уж проще взять ТабличноеПоле из 1С++.
   АЛьФ
 
585 - 04.01.21 - 15:42
2(583) Это описание формы, которое на третьей закладки при редактировании формы в конфигураторе. Описания именно объекта метаданных нету. Это логичней было бы в 1С++ добавить, но там развитие похоже совсем остановилось.
   Djelf
 
586 - 04.01.21 - 16:48
2(584) Присоединяюсь к ответу: ТабличноеПоле и забудьте про ТЗ на форме! ТЗ на форме это отвратительно ;)
Хакнуть то все можно, тут нужно GetSysColor в CBrowse::OnPaint потыкать, цвет рамок ячеек зашит тут:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Colors]
"WindowFrame"="100 100 100"

   Злопчинский
 
587 - 04.01.21 - 16:57
(586) ну, ради простых свершенно вещей тащить целое ТП...
даешь ТЗ!!!
   Djelf
 
588 - 04.01.21 - 17:06
2(587) Как то был даже не разговор, а пара сообщений, про дамп параметров ТЗ или МСЧ в формат для создания ТП на их основе.
АЛьФ что то слопал, долго лет спал, и это не Виагра! Хочу такое же!!!
   Злопчинский
 
589 - 06.01.21 - 01:06
не получается порешать такую задачку:

Форма списка справочника, например единицы измерения для номенклатуры.
хочу какую-то строку списка (в данном случае для основной единицы) вывести жирным шрифтом.

отрисовываю с помощью невидимой колонки с выражением "FONTSET["+КодШрифт+"]";

КодШрифт определяю ПослеОткрытия()

    Настройки = СоздатьОбъект("НастройкиПользователя");
    ШрифтФорм = СтрПолучитьСтроку(СтрЗаменить(Настройки.ШрифтФорм, ",", РазделительСтрок), 1);
    КодШрифт = глСервис.СоздатьШрифт(ШрифтФорм,,7);// жирный


ШрифтФорм: MS Sans Serif,-11,0,400,0,0,0,0,0,204,1,2,1,34
(в настройках шрифта форм указан MS Sans Serif (Кириллический),8)

получается явная лабуда, размер шрифта явно не соответствует нужному, явно больше:
https://www.screencast.com/t/I8yG7SL4oi2Q

Если в создании шрифта явным образом указать размер шрифта
КодШрифт = глСервис.СоздатьШрифт(ШрифтФорм,8,7); - получается правильный ожидаемый эффект
https://www.screencast.com/t/b7kmL7Y3dB3m

- но это же некузяво, откуда я знаю размер шрифта? как его получить? из НастроекПользователя - в возвращаемой строке размером шрифта как-то непохоже...

Вторым значением в Настройки.ШрифтФорм возвращается похоже размер шрифта, но какbv-то левым значением (или я тупой/не знаю), беглый исследования показали, что после имени шрифта отрицательные значения соответствуют такими размерам (менял настройки в 1С и смотрел что возвращается)
размер шрифта (отрицательный из НастройкиПользователя.ШрифтФормы / реальный размер шрфита)
-11 /8
-12 /9
-13 /10
-15 /11
-16 /12
-19 /14

Вопрос. как из отрицательных значений получить "правильный" размер шрифта? или как-то решить задачу сабжа - выделит в списке строку шрифтом таким же как у формы, но жирным?
   Злопчинский
 
590 - 06.01.21 - 01:21
Пока извернулся так. вроде норм, но это как-то через гланды
    ФормаРасш = СоздатьОбъект("РасширениеФормы");
    ШрифтФормы = ФормаРасш.кнЗакрыть.Шрифт;
    КодШрифт = глСервис.СоздатьШрифтНаОсновании(ШрифтФормы,,,7);// жирный

.
Шрифт формы не получить не обращаясь к атрибуту..
почему можно получить заголовок, стиль, координаты формы, а ihabn - нельзя..?
типа ФормаРасш.Шрифт
?
   Злопчинский
 
591 - 06.01.21 - 01:39
Попутно что нашел
почему то в описании реквизита на форме (всплывает при наведении мышки которое) если содержится знак минус - это приводит к тому что после минуса выводится пару слов и остальное обрезается

например

олфыраолыврп ывапукпуп gerg ergerger drgergerg
 askfjhsdjk sdkhs k - полы рыол цулдоалд ertger//вот здесь обрезается после "рыол"

 укждол  ergerf;kler;lk укаукапук ergerg
 ferrtf олдод6786786786 млтльт78678687 m,nm
89897897 89789789 8978 9789 789

 признак проверки/валидности единицы измерения 
 пустое значение (0, красный) - единица не проверялась,//обрезается после "красный) - "

 заполненное значение (1, зеленый) параметры выверены, 
 изменять параметры не рекомендуется
   Злопчинский
 
592 - 06.01.21 - 01:41
Клюшки так же неисчерпаем, как и атом...
   Злопчинский
 
593 - 06.01.21 - 01:42
или я может чего ступил, тады ой
   Злопчинский
 
594 - 06.01.21 - 01:59
не, елки-палки, это не связано с симолом минус.. обрезает как-то произволдьно в зависимости от хз чего, какой-то набор символов.. может это зависит от масштабироания шрифтов, которые установлены в настройках ОС...
   Злопчинский
 
595 - 06.01.21 - 02:01
не, проверил.. от масштабирования не зависит.
   victuan1
 
596 - 06.01.21 - 07:39
При попытке перейти на сайт по гиперссылке возникает ошибка
https://ibb.co/f9Z1TV8
   АЛьФ
 
597 - 06.01.21 - 09:38
2(596) В системе не назначено приложение по умолчанию для гиперссылок?
   victuan1
 
598 - 06.01.21 - 10:01
(597) Как так? Из других приложений гиперссылки открываются.
   АЛьФ
 
599 - 06.01.21 - 10:15
2(589) Сделал, чтобы сначала метод СоздатьШрифт пытался загрузить из первого параметра свойства шрифта из строки типа возвращаемой объектом НастройкиПользователя, а при неудачи устанавливала бы переданную строку в качестве имени шрифта. Качать для проверки тут: https://yadi.sk/d/SaGiKhu0fjokHw
2(598) Ну, у меня там код элементарный. Просто вызывается системная функция ShellExecute(NULL, _T("open"), url, NULL,NULL, showcmd); А дальше уже все от системы зависит.
   Злопчинский
 
600 - 06.01.21 - 14:23
(599) при случае поправить опечатку в описании СоздатьШрифт
"Назначение: Создает шриВт по указанным параметрам."
  1  2  3  4  5  6  7  8  9   

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.