#1C #1С Печать произвольного макета в расширении Задача: напечатать произвольный макет из документа. Конфигурация: УНФ 1.6.25.178, БСП 3.1.4.295 1) Создаю макет в документе. 2) Из модуля менеджера документа заимствую в расширение процедуру ДобавитьКомандыПечати (я поставил после, чтобы порядковый номер был +1). Обработчик не указываю. КомандаПечати.Порядок = КомандыПечати.Количество() + 1; Заимствую процедуру Печать. В этой процедуре добавляю обработчик для своей печатной формы и процедуру для заполнения макета (условия взял типовые и поправил под себя. МаркировкаПроизводства - имя печатной формы). ОписаниеПечатнойФормы = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "МаркировкаПроизводства"); Если ОписаниеПечатнойФормы <> Неопределено Тогда СформироватьМаркировкаПроизводства(ОписаниеПечатнойФормы, МассивОбъектов, ОбъектыПечати, ПараметрыПечати); КонецЕсли;
flat.ink
#1C #1С Добавление формы отбора перед печатью произвольного макета в расширении Задача: напечатать произвольный макет из документа, предварительно вывести форму списка печатаемых элементов (по аналогии с обработкой печать этикеток и ценников). Конфигурация: УНФ 1.6.25.178, БСП 3.1.4.295 1) Создаю макет в документе. 2) Из конфигурации заимствую общий модуль ПечатьДокументовУНФКлиент и добавляю свою процедуру (ПечатьМаркировкаПроизводства). Процедура экспортная. В процедуре открываю свою (произвольную) форму (форма прицеплена к объекту документа). Для передачи объектов печати создаю структуру из входящего параметра ПараметрыКоманды. (при передаче структуры ПараметрыКоманды возникает ошибка передачи реквизита с типом ФормаКлиентскогоПриложения.) 3) Из модуля менеджера документа заимствую в расширение процедуру ДобавитьКомандыПечати (я поставил после, чтобы порядковый номер был +1). И указываю обработчик созданный на первом шаге. КомандаПечати.Обработчик = "ПечатьДокументовУНФКлиент.ПечатьМаркировкаПроизводства"; КомандаПечати.Порядок = КомандыПечати.Количество() + 1; Заимствую процедуру Печать. В этой процедуре добавляю обработчик для своей печатной формы и процедуру для заполнения макета (условия взял типовые и поправил под себя. МаркировкаПроизводства - имя печатной формы). ОписаниеПечатнойФормы = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "МаркировкаПроизводства"); Если ОписаниеПечатнойФормы <> Неопределено Тогда СформироватьМаркировкаПроизводства(ОписаниеПечатнойФормы, МассивОбъектов, ОбъектыПечати, ПараметрыПечати); КонецЕсли; 4) Создаю произвольную форму в документе. Добавляю процедуру ПриСозданииНаСервере. При создании формы заполняю нужные мне поля. Добавляю на форму команду Печать (клиентский вызов). В процедуре делаю вызов (менеджер печати, имя макета, массив объектов печати*, ЭтаФорма, структура с массивом данных для заполнения макета): УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Документ.ЗаказНаПроизводство", "МаркировкаПроизводства", ПолучитьМассивИзТЗНаСервере(), ЭтаФорма, СформироватьСтруктуруПараметровПечати()); *Массив объектов печати содержит документ(ы) для которых выполняется печать (например, из списка документов).
#PowerShell #Script #Administration #Скрипты #Администрирование #Пош Инвентаризация компьютера [string]$computername = $env:COMPUTERNAME [string[]]$fragment = ""; $fragment += @" <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style> body { background-color:#dddddd; font-family:Tahoma; font-size:12pt; } td, th { border:1px solid black; border-collapse:collapse; } table, tr, td, th { padding: 2px; margin: 0px } table { margin-left:50px; } </style> </head> <body> <h1>Инвентаризация компьютера - $computername</h1> "@ $fragment += gwmi -q ("select * from Win32_ComputerSystem") | ` Select Domain, Manufacturer, Model, Name, PrimaryOwnerName, @{n='Memory(GB)';e={$_.TotalPhysicalMemory / 1GB -as [int]}} | ` ConvertTo-Html -Fragment -PreContent ('<h2>Система</h2>') | Out-String; $fragment += gwmi -q ("select * from Win32_OperatingSystem") | ` Select SystemDirectory, Organization, BuildNumber, RegisteredUser, SerialNumber, Version, ` @{n='InstallDate';e={([Management.ManagementDateTimeconverter]::ToDateTime($_.installdate))}} | ` ConvertTo-Html -Fragment -PreContent ('<h2>Операционная система</h2>') | Out-String; $fragment += gwmi -q ("select * from Win32_BaseBoard") | ` Select Manufacturer, Model, Name, SerialNumber, Product | ` ConvertTo-Html -Fragment -PreContent ('<h2>Материнская плата</h2>') | Out-String; $fragment += gwmi -q ("select * from Win32_Processor") | ` Select Caption, DeviceID, Manufacturer, MaxClockSpeed, Name, SocketDesignation | ` ConvertTo-Html -Fragment -PreContent ('<h2>Процессор</h2>') | Out-String; $fragment += gwmi -q ("select * from Win32_BIOS") | ` Select SMBIOSBIOSVersion, Manufacturer, Name, SerialNumber, Version | ` ConvertTo-Html -Fragment -PreContent ('<h2>БИОС</h2>') | Out-String; $fragment += gwmi -q ("select * from Win32_PhysicalMemory") | ` Select Manufacturer, Speed, @{n='Capacity';e={$_.Capacity / 1GB -as [int]}} | ` ConvertTo-Html -Fragment -PreContent ('<h2>Оперативная память</h2>') | Out-String; $fragment += gwmi -q ("select * from Win32_DiskDrive") | ` Select Partitions, DeviceID, Model, @{n='Size'; e={$_.Size / 1gb -as [int]}} | ` ConvertTo-Html -Fragment -PreContent ('<h2>Физические диски</h2>') | Out-String; $fragment += gwmi -q ("select * from Win32_LogicalDisk") | ` Select DeviceID, DriveType, ` @{n='Size(GB)';e={$_.Size / 1GB -as [int]}}, ` @{n='FreeSpace(GB)';e={$_.FreeSpace / 1GB -as [int]}} | ` ConvertTo-Html -Fragment -PreContent ('<h2>Логические диски</h2>') | Out-String; $hives = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\', ` 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall'; #, ` 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'; [array]$appList = $null; foreach ($hive in $hives) { if (!(Test-Path $hive)){ continue; } $branch = Get-ChildItem $hive foreach ($b in $branch){ if ($b.GetValue('DisplayName') -eq $null) { continue; } $appList += New-Object PSObject -Property @{ Name = $b.GetValue('DisplayName') Version = $b.GetValue('DisplayVersion') Publisher = $b.GetValue('Publisher') } } } $fragment += $appList | sort Name | ` Select Name, Version, Publisher | ` ConvertTo-Html -Fragment -PreContent ('<h2>Установленные программы</h2>') $fragment += @' </body> </html> '@ $FilePath = $env:USERPROFILE + '\Desktop\' + $computername + '.htm' Out-File -FilePath $FilePath -InputObject $fragment
#1С #1C Сброс пароля на сервер одинэс Создать копию таблицы пользователей и удалить таблицу: USE [DatabaseName] SELECT * into [v8users_copy] FROM [v8users] GO SELECT * into [Params_copy] FROM [Params] GO DELETE FROM [v8users] GO DELETE FROM [Params] WHERE [FileName] = 'users.usr' GO Войти в конфигуратор с пустым пользователем и паролем. Вернуть таблицу обратно и удалить копию: USE [DatabaseName] DROP TABLE [v8users] GO DROP TABLE [Params] GO SELECT * into [v8users] FROM [v8users_copy] GO SELECT * into [Params] FROM [Params_copy] GO DROP TABLE [v8users_copy] GO DROP TABLE [Params_copy] GO
#1С #1C #УНФ Структура подчинённости в расширении для существующих документов. Задача: Добавить новую связь между существующими документами (пункт меню создать на основании) Событие и ЗаказНаПроизводство. Связь должна отображаться в типовой форме подчинённых документов. Решение: Для решения я создаю два расширения (можно делать в одно). Первое расширение я назвал ФормаСтруктурыПодчиненности. В него заимствую функцию из общей формы ФормаСтруктурыПодчиненности - "ПолучитьСписокПодчиненныхДокументов". Внутри функции нужно заменить: Для каждого ЭлементСостава Из Метаданные.КритерииОтбора.СтруктураПодчиненности.Состав Цикл На КритерииОтбораСостав = СоздатьМассивКритериевОтбора(); Для Каждого ЭлементСостава Из КритерииОтбораСостав Цикл И добавить функцию: Функция СоздатьМассивКритериевОтбора() МассивКритериевОтбора = Новый Массив; Для каждого ЭлементСостава Из Метаданные.КритерииОтбора.СтруктураПодчиненности.Состав Цикл МассивКритериевОтбора.Добавить(ЭлементСостава); КонецЦикла; Для каждого КритерииОтбораЭлемент Из Метаданные.КритерииОтбора Цикл Если СтрНайти(КритерииОтбораЭлемент.Имя, "_СтруктураПодчиненности") > 0 Тогда Для каждого ЭлементСостава Из КритерииОтбораЭлемент.Состав Цикл МассивКритериевОтбора.Добавить(ЭлементСостава); КонецЦикла; КонецЕсли; КонецЦикла; Возврат МассивКритериевОтбора; КонецФункции Cоздаю второе расширение. Второе расширение я назвал "ДокументСобытие". В расширение заимствую документы "Событие" и "ЗаказНаПроизводство". Добавляю общую команду и называю её "ЗаказНаПроизводство". Группа: Командная панель формы.Создать на основании Тип параметра команды: ДокументСсылка.Событие Режим использования параметра: Одиночный В модуле команды добавляю открытие формы нового документа "ЗаказНаПроизводство": СтрДанные = Новый Структура("Основание", ПараметрКоманды); ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", СтрДанные); ОткрытьФорму("Документ.ЗаказНаПроизводство.Форма.ФормаДокумента", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка); В документ "ЗаказНаПроизводство" добавляю новый реквизит и называю его "Событие" с типом "ДокументСсылка.Событие". В модуле документа заимствую процедуру "ОбработкаЗаполнения" (мне это необходимо для реализации дальнейшей логики работы). &После("ОбработкаЗаполнения")Процедура ДСОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) Добавляю новый критерий отбора и называю его "ДокументСобытие_СтруктураПодчиненности". Тип: ДокументСсылка.Событие Состав: Документ.ЗаказНаПроизводство.Реквизит.Событие Пояснение: В модуле формы структуры подчинённости я добавил функцию "СоздатьМассивКритериевОтбора", чтобы собрать в него все родные для конфигурации критерии отбора и добавить критерии отбора по подстроке имени "_СтруктураПодчиненности" из других расширений. В следующий раз, если мне понадобится создать ещё одну связку документов в расширении, мне будет достаточно повторить действия для второго расширения.
