КОПИЛКА: здесь всякие редкости, полезности, тонкости, неочевидности.

Автор Злоп, 03 ноября 2024, 01:02

« назад - далее »

Злоп

МОДИФИЦИРУЕМ ИНТЕРФЕЙС ТЗ НА ФОРМЕ

АтрибутФормы = РФорма.ПолучитьАтрибут("ТЗФорма"); 
		АтрибутФормы.ИзменитьСтиль(2097152); //без вертикального скроллбара
		АтрибутФормы.ИзменитьСтиль(8388608); //без двойной рамки

АЛьФ

Цитата: Злоп от 13 декабря 2024, 01:41ОТКЛЮЧИТЬ ВЫЗОВ ПОМОЩИ ПО F1

В новых версиях Винды вызов помощи вызывает ошибку. Поэтому помимо F1 у нас перекрыты и некоторые еще команды ("Содержание" и "О программе"):
Процедура ПриПолученииКомандыГлавнымОкном(КодКоманды, ПараметрКоманды, СтандартнаяОбработка)
    Если КодКоманды = 57670 Тогда
        Сообщить("Все вопросы о работе 1С по телефону: 224");
        СтандартнаяОбработка = 0;
    ИначеЕсли КодКоманды = 57666 Тогда
        Сообщить("Все вопросы о работе 1С по телефону: 224");
        СтандартнаяОбработка = 0;
    ИначеЕсли КодКоманды = 32808 Тогда
        Сообщить("1С:Предприятие версии 7.70.027");
        СтандартнаяОбработка = 0;
    ИначеЕсли КодКоманды = 32805 Тогда
        Сообщить("Блокировка окна 1С отключена");
        СтандартнаяОбработка = 0;
    КонецЕсли;
КонецПроцедуры

Злоп

КОДЫ СТАНДАРТНЫХ КОМАНД/ИКОНОК
Процедура ПриПолученииКомандыГлавнымОкном(пКоманда, lParam, пФСО)
	Если пКоманда = 0 Тогда
	ИначеЕсли пКоманда = 32786 Тогда// Новый
	ИначеЕсли пКоманда = 32784 Тогда// Открыть
	ИначеЕсли пКоманда = 32862 Тогда// Просмотр
	ИначеЕсли пКоманда = 32790 Тогда// Копировать
	ИначеЕсли пКоманда = 32877 Тогда// на основании
	Иначе
	КонецЕсли;
КонецПроцедуры

Злоп

ВЫГРУЗКА DLL
Процедура ВыгрузитьDLL()
	DWX = СоздатьОбъект("DynamicWrapperX");
	DWX.Register("Kernel32", "LoadLibrary", "i=s", "r=h");
	DWX.Register("Kernel32", "FreeLibrary", "i=h", "r=t");
	DWX.Register("Kernel32", "GetModuleHandle", "i=s", "r=h");
	hDLL = DWX.GetModuleHandle("TableDoc.dll");
	Если hDLL <> 0 Тогда
		Если DWX.FreeLibrary(hDLL) = 1 Тогда
			hDll = DWX.LoadLibrary("TableDoc.dll");
			Сообщить(hDll);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

АЛьФ


Djelf

Цитата: АЛьФ от 15 января 2025, 09:11
Цитата: Злоп от 13 января 2025, 23:14ВЫГРУЗКА DLL
Почему не Сервис.ВыгрузитьВнешнююКомпоненту("TableDoc.dll")?
Выгружать то оно выгружает, но подменить не получается, файл занят.
Я с 1sqlte эксперементировал, вроде все ресурсы высвобождаюся, но подменить файл не получается.

Злоп

Цитата: АЛьФ от 15 января 2025, 09:11
Цитата: Злоп от 13 января 2025, 23:14ВЫГРУЗКА DLL
Почему не Сервис.ВыгрузитьВнешнююКомпоненту("TableDoc.dll")?
По недомыслию и от бездуховности, не помнил такой метод. Да и нужды не было в этом (в выгрузке).

Злоп

РЕЖИМ ОТКРЫТИЯ ФОРМЫ СПИСКА, ПОЛУЧИТЬ В САМОЙ ФОРМЕ...?
некоторые особенности здесь: https://forum.dorex.pro/index.php?topic=182.msg2547#msg2547
.
например,
"Еще одна странность: ОткрытьПодбор("Товары") работает также как ОткрытьПодбор("Справочник.Товары") - хотя в документации такая возможность не описана.
Недокументрированное КонтекстПодбора не подошло, так как это обращение к контексту открытой формы из родительской формы."

Злоп

ПРОСЬБА ОБСУЖДЕНИЙ ЗДЕСЬ НЕ ПИСАТЬ
при необходимости: ответ со ссылкой на ветку (новую если надо завести) для обсуждения

Злоп

ПОЛУЧИТЬ ПАРАМЕТРЫ СТРАНИЦЫ ИЗ ОКНА ПЕЧАТНОЙ ФОРМЫ
Перехватили форму окна печатной формы.
Надо вытащить параметры страницы, установленные для этой формы.
Установленные Таб.ПараметрыСтраницы() можно вытащить через tabledoc.dll

            ТабМенеджер = СоздатьОбъект("МенеджерТабличногоДокумента");
            ТабМенеджер.УстановитьТаблицу(КонтТекущегоОкна);
                ПараметрыСтраницы = ТабМенеджер.ПараметрыСтраницы;
                    ПолеСлева = ПараметрыСтраницы.Left;
                    ПолеСправа = ПараметрыСтраницы.Right;
                    ПолеСверху = ПараметрыСтраницы.Top;
                    ПолеСнизу = ПараметрыСтраницы.Bottom;
                    Ориентация = ПараметрыСтраницы.Orient;
                    ИмяПринтера = ПараметрыСтраницы.DefaultPrinter;

Злоп

ПОЛУЧЕНИЕ ИМЕНИ ИСПОЛНЯЕМОГО КОНТЕКСТА
получение имени функции/процедуры/модуля исполняемого контекста
здесь: https://forum.dorex.pro/index.php?topic=49.msg539#msg539

Злоп

FORMEX: ГЛОБАЛЬНАЯ ПРОЦЕДУРА ПриАктивацииОкна(Контекст)
В als до 2.05.198 включительно не описана глобальная ПриАктивацииОкна(Контекст), а она есть (аналог локальной)

Злоп

РЕКВИЗИТ "СТРОКА НЕОГРАНИЧЕННОЙ ДЛИНЫ"
Реквизиты "строка неограниченной длины" у объекта (а также общие реквизиты документов) должны стоять последними в списке реквизитов, см. https://1cpp.ru/forum/YaBB.pl?num=1234264157

Злоп

ПОЛУЧИТЬ ОПИСАНИЕ ВНЕШНЕЙ ОБРАБОТКИ
   ИмяОбъекта = ВРег("Обработка.Загружаемая")+_GetPerformanceCounter();
   глСервис.ЗагрузитьВнешнююОбработку(РасположениеФайла(),ИмяОбъекта);
   //ОТЛАДКА Текст = глСервис.СписокВсехФорм(); Текст.Показать(ИмяОбъекта);
   Описание = глСервис.ПолучитьОписаниеОбъекта(ИмяОбъекта+".ФОРМА");
   Сообщить(Описание);

Злоп

ОСОБЕННОСТИ ПОЛУЧЕНИЯ ОПИСАНИЯ ДЛЯ ОБЪЕКТОВ КОНФИГУРАЦИИ
т.е. например, Описание для объекта конфигурации "Справочник.Номенклатура" или "Документ.РасходнаяНакладная"

Общего рабочего варианта - нет...